繁体   English   中英

ANTLR4无法解析typedef

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM