[英]ANTLR4 not parsing typedef
我在这里使用ANTLR4和C的规范语法:
https://github.com/antlr/grammars-v4/tree/master/c
我不会以任何方式修改语法。 我发现在函数外部发生的typedef
语句上解析失败。 我可以给出的最简单的示例:
关:
main()
{
typedef unsigned int UINT;
return 0;
}
失败:
typedef unsigned int UINT;
main()
{
return 0;
}
错误消息是:
1:0行在输入'typedef'上没有可行的选择
我不知道C中有任何规则说typedef必须出现在函数内。 这是ANTLR C语法中的错误,还是我做错了什么?
为我工作:
antlr4 C.g4 javac *.java grun C compilationUnit -tree tc (compilationUnit (translationUnit (translationUnit (externalDeclaration (declaration (declarationSpecifiers (declarationSpecifier (storageClassSpecifier typedef)) (declarationSpecifier (typeSpecifier unsigned)) (declarationSpecifier (typeSpecifier int)) (declarationSpecifier (typeSpecifier (typedefName UINT)))) ;))) (externalDeclaration (functionDefinition (declarator (directDeclarator (directDeclarator main) ( ))) (compoundStatement { (blockItemList (blockItem (statement (jumpStatement return (expression (assignmentExpression (conditionalExpression (logicalOrExpression (logicalAndExpression (inclusiveOrExpression (exclusiveOrExpression (andExpression (equalityExpression (relationalExpression (shiftExpression (additiveExpression (multiplicativeExpression (castExpression (unaryExpression (postfixExpression (primaryExpression 0))))))))))))))))) ;)))) })))) <EOF>)
ANTLR版本问题? javac和antlr4之间的类路径差异?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.