如何在Javacc中修改输入流?

时间:2013-06-08 01:55:44

标签: parsing javacc

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

例如,

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

因此,在解析期间遇到任何以$ x开头的令牌时,我应该进行内联替换,然后使用Javacc正常解析它。

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

evaluate "2*2";

Javacc可以吗?我们可以修改输入流,以便在看到特殊令牌时将其内联替换附加到输入流吗?

感谢。

1 个答案:

答案 0 :(得分:1)

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