我的 if 语句与我的语法有问题,可以在这里找到http://sd-g1.archive-host.com/membres/up/24fe084677d7655eb57ba66e1864081450017dd9/CNew.txt。例如,当我输入 Ctrl+D 时:
int k = 0;
if ( k ==0 ){
return k;
}
树解析器在“if(”处停止,控制台没有说明任何原因。有人知道问题可能来自哪里吗?
我的 if 语句与我的语法有问题,可以在这里找到http://sd-g1.archive-host.com/membres/up/24fe084677d7655eb57ba66e1864081450017dd9/CNew.txt。例如,当我输入 Ctrl+D 时:
int k = 0;
if ( k ==0 ){
return k;
}
树解析器在“if(”处停止,控制台没有说明任何原因。有人知道问题可能来自哪里吗?
假设您的语法的入口点是translation_unit
,看起来解析器在匹配单个external_declaration
. 尝试EOF
在该规则的末尾添加(文件结尾)标记,以便强制解析器匹配整个输入:
translation_unit
: external_declaration+ EOF
;
但是,我看不出 anexternal_declaration
会如何匹配语法中的if
-statement (a 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
;
之后,您的输入将得到正确解析。