问题描述
我试图用野牛分析下面的文字。
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 (将#修改为@)