parsing - 野牛中的可选参数
问题描述
解决方案
您的原始代码相当于:
NEXT variable { $$ = $1; }
| NEXT {
statement_t *new = mkstatement(NEXT);
if (strlen($2) > 0) {
new->parms.next = $2;
}
$$ = new;
}
--每条规则都有自己的行动;在为同一个非终端定义的规则之间,它们不会以任何方式“共享” |
。如果你想在两个动作之间分解公共代码,你应该把它写成一个函数,并使每个动作只是对你的函数的调用。
推荐阅读
- node.js - 如果外键约束处于活动状态,则使用 sequelize 迁移更改表的过程
- json - 使用 bash 脚本查询 json 文件
- symfony4 - Command 类中没有 SUCCESS 常量
- powerbi - 在 Power BI 中,如何删除名称以“NewHire”开头的行并计算剩余员工数?
- javascript - 如何使用 js 音频 api 播放多个音频
- javascript - 如何删除 div 中的所有内容,而不删除 div 本身,只使用 JavaScipt 而不是 jQuery?
- opencl - OpenCL 在加载 RGB 纹理缓冲区时返回“OUT_OF_RESOURCES”错误,并且在 RGBA 下一切正常
- python - 在 python 中创建套接字池(多处理)
- javascript - 同步 XMLHttpRequest Strophe.js
- python - Rhythmbox - 获取当前曲目路径