此switch语句正在使用一个Case如何使其成为多个案例
S: Statement {printf("ACCEPTED");}
声明:SWITCH BRO ID BRC CBO E CBC
E: A
| A C
A: A B
| CASE DIGIT D
B: BREAK SEMI
C : DEFAULT D B
D : COLON ID SEMI
;
这是一个我希望在多个案例中接受语法的问题
答案 0 :(得分:1)
你的语法很糟糕,并没有考虑CASE的重复。您需要了解如何表达事物列表。一般模式如下:
item: ....
items: item
| item ';' items
所以我们有:
case: CASE DIGIT ':' stmts
default: DEFAULT ':' stmts
cases: case | default | case ';' cases
您还应该了解如何跟踪解析器以进行调试。使用yacc,您可以设置环境变量YYDEBUG,它将打印相当详细的所有解析器状态。
答案 1 :(得分:0)
正确切换语法 不需要在A E空间之间使用分号。
声明:SWITCH BRO ID BRC CBO E CBC
E:A |一个C. | A E
答:A | CASE DIGIT D
B:BREAK SEMI
C:DEFAULT D B
D:COLON ID SEMI