0

有没有一种方法可以在使用 Javacc 进行解析期间修改输入流?我有一个用例,我想在解析期间用字符串替换标记,然后解析替换的字符串。

例如,

define var $x="2*2";
evaluate $x;

因此,在解析过程中,当我遇到任何以 $ 开头的标记(如 $x)时,我应该进行内联替换,然后使用 Javacc 正常解析它。

因此,从上面的示例中,这意味着我应该在内联替换后解析以下语句:

evaluate "2*2";

这在 Javacc 中可行吗?我们是否可以修改输入流,以便在看到特殊标记时将其内联替换附加到输入流?

谢谢。

4

1 回答 1

1

通常的方法是在解析开始之前进行预处理——这就是 C 编译器通常的工作方式。如果您必须在解析期间执行此操作,那么您将需要使用自定义输入流——请参阅有关如何执行此操作的文档。你必须非常小心前瞻。

于 2013-12-06T19:53:38.513 回答