| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | AE | AF | AG | AH | AI | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 下記の分類は右記ページに基づく | http://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml | (C++14拡張部分は右記参照) | http://ezoeryou.github.io/cpp14-appendix/ | ||||||||||||||||||||||||||||||||
2 | 意見記入欄 | |||||||||||||||||||||||||||||||||||
3 | 分類 | 村井 | 李 | TNT | XcodeML_CXX_1.1.docx (Mar 30, 2016) での状況 | XMLschema | テスト | ClangAST で該当するもの | 正変換ツールでの実装状況 | テスト | 逆変換ツールでの実装状況 | テスト | 備考 | |||||||||||||||||||||||
4 | 2.5 コメント | 表現不可能 (<comment> 等を新設する必要がある) | 無し(SourceRangeで別途解析するしかない) | 対応方針検討中 | 未対応 | |||||||||||||||||||||||||||||||
5 | 2.6 識別子 | ◯ | 7.2 Var,varAddr,arrayAddr, 7.12 functionCall | NamedDecl, DeclarationNameInfo | fullNameの対応方針 | 一部実装 | ||||||||||||||||||||||||||||||
6 | 2.8.1 整数リテラル | ◯ | 7.1 intConstant, longlongConstant | OK (longlongConstant は特別扱いしない) | OK | |||||||||||||||||||||||||||||||
7 | 2.8.2 浮動小数点リテラル | ◯ | 7.1 floatConstant | OK | 未対応 | |||||||||||||||||||||||||||||||
8 | 2.8.3 文字リテラル | ◯ | 7.1 intConstant で扱う?詳細不明 | 通常の文字リテラルのみ | 未対応 | |||||||||||||||||||||||||||||||
9 | 2.8.3.1 エスケープシーケンス | ◯ | 詳細が書かれていない | 未対応 | ||||||||||||||||||||||||||||||||
10 | 2.8.4 文字列リテラル | ◯ | 7.1 stringConstant (通常の文字列リテラルのみ) | 一部実装 | ||||||||||||||||||||||||||||||||
11 | 2.8.4.1 エンコード方式 | ◯ | NG | 未対応 | ||||||||||||||||||||||||||||||||
12 | 2.8.4.2 文字列リテラルの型の要素数 | ◯ | 要検討(特に考える必要はない?) | - | ||||||||||||||||||||||||||||||||
13 | 2.8.4.3 生文字列リテラル | ◯ | NG | 未対応 | ||||||||||||||||||||||||||||||||
14 | 2.8.5 boolリテラル | ◯ | 7.1 booleanConstant | OK | ||||||||||||||||||||||||||||||||
15 | 2.8.6 ポインタ―リテラル (nullptr) | ◯ | NG | 未対応 | ||||||||||||||||||||||||||||||||
16 | 2.8.7 ユーザー定義リテラル | ◯ | NG | 取り扱い範囲外 | 取り扱い範囲外 | |||||||||||||||||||||||||||||||
17 | 3.9.1 基本型 | ◯ | 3.1 データ型識別名 | OK | ||||||||||||||||||||||||||||||||
18 | 5.3.1 ::演算子 | 2.2 fullName属性 | 未対応 | |||||||||||||||||||||||||||||||||
19 | 5.3.2 括弧式 | 表現不可(意味が変わる場合に対応できない) | 一部実装 | |||||||||||||||||||||||||||||||||
20 | 5.4 ラムダ式 | 範囲外 | 要確認 | 取り扱い範囲外 | 取り扱い範囲外 | |||||||||||||||||||||||||||||||
21 | 5.5.1 添え字 | ◯ | 7.4 arrayRef | OK | 未対応 | |||||||||||||||||||||||||||||||
22 | 5.5.2 関数呼び出し | ◯ | 7.12 functionCall | OK | OK | |||||||||||||||||||||||||||||||
23 | 5.5.3 関数形式の明示的型変換 | NG | 未対応 | |||||||||||||||||||||||||||||||||
24 | 5.5.4 疑似デストラクタ―呼び出し | NG | 未対応 | |||||||||||||||||||||||||||||||||
25 | 5.5.5 クラスメンバーアクセス | ◯ | 要注意 | 7.5 memberRef, memberAddr, etc (使い分けが怪しい) | OK(左に同じ) | 未対応 | ||||||||||||||||||||||||||||||
26 | 5.5.6 インクリメントとデクリメント(後置) | ◯ | 7.14 postIncrExpr, postDecrExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
27 | 5.5.7 Dynamic cast | 7.16 dynamicCast | OK | 未対応 | ||||||||||||||||||||||||||||||||
28 | 5.5.8 型識別 (typeid) | 表現不可? | 未対応 | |||||||||||||||||||||||||||||||||
29 | 5.5.9 Static cast | 7.16 staticCast | OK | 未対応 | ||||||||||||||||||||||||||||||||
30 | 5.5.10 Reinterpret cast | 7.16 reinterpretCast | OK | 未対応 | ||||||||||||||||||||||||||||||||
31 | 5.5.11 Const cast | 7.16 constCast | OK | 未対応 | ||||||||||||||||||||||||||||||||
32 | 5.6.1.1 *演算子と&演算子 | ◯ | 要注意 | 7.4 pointerRef, 7.2 varAddr,arrayAddr (表現力不足) | 動作が怪しい | OK | ||||||||||||||||||||||||||||||
33 | 5.6.1.2 単項演算子の+と- | ◯ | 7.11 unaryMinusExpr (単項+は表現不可) | OK (現状のXcodeML仕様に対して) | 一部実装(-) | |||||||||||||||||||||||||||||||
34 | 5.6.1.3 !演算子 | ◯ | 7.11 logNotExpr | OK | OK | |||||||||||||||||||||||||||||||
35 | 5.6.1.4 ~演算子 | ◯ | 7.11 bitNotExpr | OK | OK | |||||||||||||||||||||||||||||||
36 | 5.6.2 インクリメントとデクリメント(前置) | ◯ | 7.14 preIncrExpr, preDecrExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
37 | 5.6.3 sizeof | ◯ | 7.14 sizeOfExpr | 動作が怪しい | OK | |||||||||||||||||||||||||||||||
38 | 5.6.4 new | ◯ | 7.19 newExpr, newExprArray | 未対応 | 未対応 | |||||||||||||||||||||||||||||||
39 | 5.6.5 delete | ◯ | 7.20 deleteExpr, deleteExprArray | 未対応 | 未対応 | |||||||||||||||||||||||||||||||
40 | 5.6.6 alignof | 7.11 alignOfExpr | 未対応 | 未対応 | ||||||||||||||||||||||||||||||||
41 | 5.6.7 noexcept演算子 | NG | 未対応 | 未対応 | ||||||||||||||||||||||||||||||||
42 | 5.7 キャスト形式による明示的型変換 | ◯ | 7.15 castExpr | 未対応 | ||||||||||||||||||||||||||||||||
43 | 5.8 メンバーへのポインタ演算子 | 7.6 memberPointer か? | OK | |||||||||||||||||||||||||||||||||
44 | 5.9 乗除算の演算子 | ◯ | 7.10 mulExpr, divExpr, modExpr | OK | OK | |||||||||||||||||||||||||||||||
45 | 5.10 加減算の演算子 | ◯ | 7.10 plusExpr, minusExpr | OK | OK | |||||||||||||||||||||||||||||||
46 | 5.11 シフト演算子 | ◯ | 7.10 LshiftExpr, RshiftExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
47 | 5.12 関係演算子 | ◯ | 7.10 log{GE,GT,LE,LT}Expr | OK | 未対応 | |||||||||||||||||||||||||||||||
48 | 5.13 等価演算子 | ◯ | 7.10 logEQExpr, logNEQExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
49 | 5.14 ビット列論理積演算子 | ◯ | 7.10 bitAndExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
50 | 5.15 ビット列排他的論理和演算子 | ◯ | 7.10 bitXorExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
51 | 5.16 ビット列論理和演算子 | ◯ | 7.10 bitOrExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
52 | 5.17 論理積演算子 | ◯ | 7.10 logAndExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
53 | 5.18 論理和演算子 | ◯ | 7.10 logOrExpr | OK | 未対応 | |||||||||||||||||||||||||||||||
54 | 5.19 条件演算子 (gcc拡張を含む) | ◯ | 7.17 condExpr | OK | 一部実装(gcc拡張除く) | |||||||||||||||||||||||||||||||
55 | 5.20 代入と複合代入演算子 | ◯ | 7.10 asg各種Expr | OK | 一部実装(代入演算子) | |||||||||||||||||||||||||||||||
56 | 5.21 コンマ演算子 | ◯ | 7.13 commaExpr | 未対応 | ||||||||||||||||||||||||||||||||
57 | 5.22 定数式 | ◯ | 何か対応が必要かどうか要検討 | 未対応 | ||||||||||||||||||||||||||||||||
58 | 6.1 ラベル文 | ◯ | 6.15 statementLabel(ラベルを一つの文として扱う) | OK (現状のXcodeML仕様に対して) | 未対応 | ラベル名が他の識別子とは別の名前空間を持つことに対応できているか? | ||||||||||||||||||||||||||||||
59 | 6.2 式文 | ◯ | 6.1 exprStatement | 明示的には要素が無い(式そのもの) | OK | OK | ||||||||||||||||||||||||||||||
60 | 6.3 複合文、ブロック | ◯ | 6.2 compoundStatement (宣言は先頭のみ) | OK (現状のXcodeML仕様に対して) | OK | |||||||||||||||||||||||||||||||
61 | 6.4.1 if文 | ◯ | 6.3 ifStatement | issue #3 のバグ | 未対応 | |||||||||||||||||||||||||||||||
62 | 6.4.2 switch文 | ◯ | 6.16 switchStatement | OK | 未対応 | |||||||||||||||||||||||||||||||
63 | 6.5.1 while文 | ◯ | 6.2 whileStatement (括弧内の宣言は表現不可) | OK (現状のXcodeML仕様に対して) | OK | |||||||||||||||||||||||||||||||
64 | 6.5.2 do文 | ◯ | 6.5 doStatement | OK | OK | |||||||||||||||||||||||||||||||
65 | 6.5.3 for文 | ◯ | 6.6 forStatement (括弧内の宣言は表現不可) | 怪しい | 一部実装(for内での宣言など未対応) | |||||||||||||||||||||||||||||||
66 | 6.5.4 range-based for文 | ◯ | 6.7 rangeForStatement (表現力が十分かは未確認) | 未対応 | ||||||||||||||||||||||||||||||||
67 | 6.5.5.1 break文 | ◯ | 6.8 breakStatement | OK | 未対応 | |||||||||||||||||||||||||||||||
68 | 6.5.5.2 continue文 | ◯ | 6.9 continueStatement | OK | 未対応 | |||||||||||||||||||||||||||||||
69 | 6.5.5.3 return文 | ◯ | 6.10 returnStatement | OK | OK | |||||||||||||||||||||||||||||||
70 | 6.5.5.4 goto文(gcc拡張を含む) | ◯ | 6.11 gotoStatement | OK | 未対応 | |||||||||||||||||||||||||||||||
71 | 6.6 宣言文 | ◯ | OK (複合文の先頭のdeclarationsの形で) | 一部実装 | ||||||||||||||||||||||||||||||||
72 | 6.7 曖昧解決 | ◯ | 要注意 | - | ||||||||||||||||||||||||||||||||
73 | 7.1 単純宣言 | ◯ | 表現力が十分か要確認 | 一部実装 | ||||||||||||||||||||||||||||||||
74 | 7.2 static_assert宣言 | NG | 未対応 | |||||||||||||||||||||||||||||||||
75 | 7.3.1.1 register指定子 | 4.1 id要素のsclass="register" | 未対応 | |||||||||||||||||||||||||||||||||
76 | 7.3.1.2 thread_local指定子 | 4.1 id要素のsclass="thread_local" | 未対応 | |||||||||||||||||||||||||||||||||
77 | 7.3.1.3 static指定子 | ◯ | 4.1 id要素のsclass="static" | 未対応 | ||||||||||||||||||||||||||||||||
78 | 7.3.1.4 extern指定子 | ◯ | 4.1 id要素のsclass="extern", "extern_def" (使い分け不明) | 未対応 | ||||||||||||||||||||||||||||||||
79 | 7.3.1.5 multable指定子 | NG | 未対応 | |||||||||||||||||||||||||||||||||
80 | 7.3.2.1 inline指定子 | 3.6 functionType要素のis_inlineか、 4.1のfspec属性か? | 未対応 | |||||||||||||||||||||||||||||||||
81 | 7.3.2.2 virtual指定子 | 3.3 にis_virtualと書いてあるがどう使うかよくわからない | 未対応 | |||||||||||||||||||||||||||||||||
82 | 7.3.2.3 explicit指定子 | 4.1 id要素のfspec属性にそれらしいことが書いてある | 未対応 | |||||||||||||||||||||||||||||||||
83 | 7.3.3 typedef指定子 | ◯ | 4.1 id要素のsclass="typedef_name" でいいのだろうか | OK | ||||||||||||||||||||||||||||||||
84 | 7.3.4 friend指定子 | 4.1節と3.9節で要検討となっている | 未対応 | |||||||||||||||||||||||||||||||||
85 | 7.3.5 constexpr指定子 | NG | 未対応 | |||||||||||||||||||||||||||||||||
86 | 7.3.6.1 CV修飾子 (C限定のrestrict,staticも) | ◯ | 4.1 id要素のis_{const,volatile,restrict,static} staticの[]の中身は? | 一部実装(restrict, メンバー変数のconstを除く) | ||||||||||||||||||||||||||||||||
87 | 7.3.6.2 単純型指定子 | ◯ | 3.1 データ型識別名 (このワークシートの17行目と重複?) | 一部実装 | ||||||||||||||||||||||||||||||||
88 | 7.3.6.3 複雑型指定子 | ◯ | 3.8 unionType, 3.9 structTypeとclass, 3.10enumType あたり? | 未対応 | ||||||||||||||||||||||||||||||||
89 | 7.3.6.4 auto指定子 | NG | 未対応 | |||||||||||||||||||||||||||||||||
90 | 7.3.6.5 decltype指定子 | 「decltypeを使った」という情報が消えて結果の型に解決されてよいなら対応不要 | 未対応 | |||||||||||||||||||||||||||||||||
91 | 7.4.1 unscoped enum | 3.10 enumType | 未対応 | |||||||||||||||||||||||||||||||||
92 | 7.4.2 scoped enum | 3.10 enumType の name要素 でうまくいくのだろうか? | 未対応 | |||||||||||||||||||||||||||||||||
93 | 7.4.3 enum基底 | NG | 未対応 | |||||||||||||||||||||||||||||||||
94 | 7.4.4 enum宣言 | 先行宣言は typeTable をどう復元するかという問題になる | 未対応 | |||||||||||||||||||||||||||||||||
95 | 7.5.1.1 inline名前空間 | 常にfullNameで用いる形に正規化するなら不要 | 未対応 | |||||||||||||||||||||||||||||||||
96 | 7.5.1.2 無名名前空間 | NG (ただし "(anonymous namespace)" という名前で扱うのならOK) | 未対応 | |||||||||||||||||||||||||||||||||
97 | 7.5.1.3 名前空間のメンバーの定義 | NG (正規化をどうすべきかという話自体が未定義) | 未対応 | |||||||||||||||||||||||||||||||||
98 | 7.5.2 名前空間エイリアス | 常にfullNameで用いる形に正規化するなら不要 | 未対応 | |||||||||||||||||||||||||||||||||
99 | 7.5.3 using宣言 | 常にfullNameで用いる形に正規化するなら不要 | 未対応 | |||||||||||||||||||||||||||||||||
100 | 7.5.4 usingディレクティブ | 常にfullNameで用いる形に正規化するなら不要 | 未対応 |