文法のエントリポイントがであると仮定するとtranslation_unit
、パーサーは単一のに一致した後に停止するように見えますexternal_declaration
。EOF
そのルールの最後に(ファイルの終わり)トークンを追加して、パーサーが入力全体と一致するように強制してみてください。
translation_unit
: external_declaration+ EOF
;
ただし、文法の-ステートメント(a )とどのようexternal_declaration
に一致するかはわかりません。おそらくあなたはあなたの:にを追加したいでしょうif
selection_statement
statement
external_declaration
translation_unit
scope Symbols; // entire file is a scope
@init {
$Symbols::types = new HashSet();
}
: (external_declaration)+ EOF
;
external_declaration
: function_definition
| declaration
| statement
;
その後、入力は適切に解析されます。