【发布时间】:2020-12-17 17:44:55
【问题描述】:
在 lex/flex 中,可以使用普通的正则表达式规则将多个模式与一个标记匹配,但在 yacc/bison 端有什么等价物?
在我的代码中,单个任务有两种可能的语法:
IF expression THEN number
IF expression GOTO number
它似乎很明显......
|
IF expression THEN number
|
IF expression GOTO number
{ ... guts of the handler go here... }
但是野牛抱怨type clash on default action: <statement> != <>。一些谷歌搜索turned up,如果您没有针对给定条目的操作,则假定该操作是{ $$ = $1; };,这就是您收到此错误的原因。很公平。
这似乎是一种常见的任务,所以我在 github 上查看了六个小解析器的示例,它似乎并不那么常见。
那么这里的正确语法是什么?
【问题讨论】: