野牛/ yacc语法“ |”运作不佳

问题描述

我试图用野牛分析下面的文字。

signed int c1;
unsigned int c2;

这是野牛的定义。我删除了所有动作,因为它解释起来很复杂,没有必要。

%type <type_enum> simple_type // enum
%type <str> opt sign // char*
%type <ival> opt sign // int

%%
simple_type: opt_sign opt_sign_type

opt_sign: SQL_SIGNED
    | SQL_UNSIGNED
    | /* EMPTY */
    ;

opt_sign_type: SQL_SHORT        
    | SQL_SHORT INT         
    | INT                   
    | SQL_LONG              
    | SQL_LONG INT          
    | SQL_LONG SQL_LONG     
    | SQL_LONG SQL_LONG IN
    | SQL_BOOL              
    | BYTE                  
    | CHAR              
    | SQL_CONTEXT           
    | STRING                
    | CCILEN                
    | VARCHAR               
    ;
%%

关于变量名的语法是在较高层上定义的,因为存在更多类型,而不仅仅是'simple_type'。下面是它们。

type: simple_type
    | struct_type
    | struct_nType
    | union_type
    | enum_type
    | ident
    ;

ident: IDENT
    ;

解析器在signed int c1;上运行良好,但在unsigned int c2;上,类型被分类为ident而不是simple_type

当我在IDENT(=$1)的情况下打印ident时,它是“未签名的”。

为什么解析器不能用于“未签名”?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...