1

使用javacc我可以在输入流前面推送一些新字符吗?

例如,假设我的解析器解析以下语法:

#define Paragraphs  "Paragraph+"
#define Volume "(Title,(Chapter,${Paragraphs})+)"

Book=${Volume}+;

我如何告诉 javacc在调用解析器之前${Volume}它的扫描器应该预处理?(Title,(Chapter,Paragraph+)+)

可以使用MORE语句来实现吗?

谢谢

4

2 回答 2

2

Token.image是一个公共字段,所以你也可以直接设置它。这是我的 JavaCC 书的标记器章节中的一个示例:

代币:{
   {matchedToken.image = image.append("B").toString();}
}

你可以在这里下载本书的所有示例源代码。

于 2009-12-23T03:39:49.233 回答
1

好的,我想我已经找到了解决方案:可以在TOKEN部分添加一些 java 语句,并且当前缓冲区在名为“ image ”的 StringBuilder 中定义:

| <Y:"${"(<NAME)+ "}" >
        {
        String oldValue=image.toString();
        image.setLength(0);
        image.append(my_dict.get(oldValue));
        }
于 2009-12-22T15:39:04.970 回答