gpt4 book ai didi

antlr - 检查可选规则是否为空

转载 作者:行者123 更新时间:2023-12-04 05:09:07 24 4
gpt4 key购买 nike

假设我有这样的语法(目标语言是 C):

mycmd : cmd_name  option? arg1

由于“选项”是可选的,如果我像这样直接访问它 -
mycmd : cmd_name  option? arg1
{ add_option($option.text); }

程序会崩溃,生成的C代码是
add_option(option->getText(option));

这里的“选项”是 NULL。

我做了以下实验
mycmd : cmd_name  option? arg1
{ if ($option != NULL) { add_option($option.text);} }

这工作正常。

但是我搜索了一下,发现推荐的方法是预先声明一些 bool 值,在子规则中将其设置为 true 并在操作中检查其值。我不喜欢它,因为它使阅读语法变得更加困难。

问题是,检查“$option”对 NULL 是否对我有用,这只是我的运气吗?有没有其他推荐的方法可以让语法和 Action 分开?

我正在使用 ANTLR3.4。

最佳答案

检查 NULL 是合适的,或者您可以将操作放入可选子规则中。

mycmd : cmd_name 
(option {add_option($option.text);} )?
arg1

关于antlr - 检查可选规则是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com