【发布时间】:2020-06-06 23:14:45
【问题描述】:
这是我对 for 语句的语法:
FOR x>0 {
//somthing
}
// or
FOR x = 0; x > 0; x++ {
//somthing
}
它有相同的前缀FOR,我想在InitExpression之后打印for_begin标签,
但是FOR之后的代码将因为冲突而变得无用。
ForStmt
: FOR {
printf("for_begin_%d:\n", n);
} Expression {
printf("ifeq for_exit_%d\n", n);
} ForBlock
| FOR ForClause ForBlock
;
ForClause
: InitExpression ';' {
printf("for_begin_%d:\n", n);
} Expression ';' Expression { printf("ifeq for_exit_%d\n", n); }
;
我曾尝试将其更改为:
ForStart
: FOR
| FOR InitExpression
;
或使用标志来提及打印for_begin 标签的位置,
但也未能解决冲突。
如何让它不冲突?
【问题讨论】: