有没有一种方法可以在使用Javacc解析期间修改输入流?我有一个用例,我想在解析过程中用字符串替换一个标记,然后解析那个被替换的字符串。
例如,
define var $x="2*2";
evaluate $x;
因此,在解析期间遇到任何以$ x开头的令牌时,我应该进行内联替换,然后使用Javacc正常解析它。
因此,从上面的例子来看,这意味着我应该在内联替换后解析以下语句:
evaluate "2*2";
Javacc可以吗?我们可以修改输入流,以便在看到特殊令牌时将其内联替换附加到输入流吗?
感谢。
答案 0 :(得分:1)
执行此操作的常用方法是在解析开始之前执行预处理过程 - 这就是C编译器通常的工作方式。如果您必须在解析期间执行此操作,则需要使用自定义输入流 - 请参阅有关如何执行此操作的文档。你必须非常小心前瞻。