使用javacc我可以在输入流前面推送一些新字符吗?
例如,假设我的解析器解析以下语法:
#define Paragraphs "Paragraph+"
#define Volume "(Title,(Chapter,${Paragraphs})+)"
Book=${Volume}+;
我如何告诉 javacc在调用解析器之前${Volume}
它的扫描器应该预处理?(Title,(Chapter,Paragraph+)+)
可以使用MORE语句来实现吗?
谢谢
使用javacc我可以在输入流前面推送一些新字符吗?
例如,假设我的解析器解析以下语法:
#define Paragraphs "Paragraph+"
#define Volume "(Title,(Chapter,${Paragraphs})+)"
Book=${Volume}+;
我如何告诉 javacc在调用解析器之前${Volume}
它的扫描器应该预处理?(Title,(Chapter,Paragraph+)+)
可以使用MORE语句来实现吗?
谢谢
Token.image
是一个公共字段,所以你也可以直接设置它。这是我的 JavaCC 书的标记器章节中的一个示例:
代币:{ {matchedToken.image = image.append("B").toString();} }
你可以在这里下载本书的所有示例源代码。
好的,我想我已经找到了解决方案:可以在TOKEN部分添加一些 java 语句,并且当前缓冲区在名为“ image ”的 StringBuilder 中定义:
| <Y:"${"(<NAME)+ "}" >
{
String oldValue=image.toString();
image.setLength(0);
image.append(my_dict.get(oldValue));
}