如何迫使野牛去某一行并从该行进行解析?

问题描述

我仍在使用简单的语言解析器,我想知道您是否可以“强制”野牛从某一行进行解析。我的意思是说是否有一些代码,例如:

int avar = 7
int bvar = 10
log avar
log bvar

我希望野牛在所有行中进行搜索,然后在看到avar的地方转到第1行,或者在提到bvar的任何地方转到第2行。显然,这是一个具有简单标识符的非常简单的任务(还有其他方法可以执行此操作),但是我在考虑是否可以编写一个可以再次返回该行的c函数。我想这在循环或用户定义的函数中很有用。您是否可以使用另一个c函数通过使用来自flex的lineno变量转到该行,或者是否有内置函数。如果您必须使用c函数,您将如何告诉bison重新解析它?会使用yyparse()和yylex()方法吗? 我想答案很简单,但是我对bison,flex和c编程还是很陌生,因此可以提供任何帮助。预先谢谢你。

首次编辑

这不是我的实际语言的一部分,该语言仍处于非常简单的早期阶段。我只是想知道,如果我的语言发展到未来阶段,将来是否有可能这样做。我的意思是一个更好的示例,将出现在此循环中:

int x = 0
begin loop 
x = x + 1
log x
end loop if x > 10

是否可以为特定的行引用yylex和yyparse。例如,野牛规则将是执行语句,如果语句为真,则将终止,否则它将返回到第3行,并将继续执行直到答案正确为止。可以实现吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)