antlr - 如何使用 antlr4 更改上下文的文本
问题描述
输入规则时如何更改规则的文本?
示例:我在语法文件中定义了一个规则name
,然后我想将规则的文本更改name
为name.getText + "some string"
每次输入 func enterName
,该怎么做?
目标:
输入:my name is peter
输出:my name is peterAAAAAAA
我可以通过向节点添加子节点来管理它吗?
解决方案
最简单的方法是将您从树中获得的文本与您要添加到其中的文本连接起来。示例:在 javascript 中;
Listener.prototype.exitSetVar = function (ctx)
{
var a= ctx.getText();
var b= "any_string";
var x= a+b;
this.stack.push(x);
};
或者,您甚至可以从 antlr 函数为特定规则生成的树中获取特定节点。ctx.ID(); 或 ctx.STRING(); 或 ctx.INT(); 等等。取决于您对语法中特定规则的标记。例子:
Listener.prototype.exitSetVar = function (ctx)
{
var a= ctx.TOKEN_NAME();
var b= "any_string";
var x= a+b;
this.stack.push(x);
};
推荐阅读
- php - 电子商务 | 在单个品牌页面上显示文字
- rest - Rest API - 为什么邮递员用 GET 将空大括号发回给我
- jenkins - 詹金斯插件中的全局配置是什么?
- c++ - 如何重新排列字符串方程?
- python - 提交和删除按钮在 Python 和 Kivy (ListItemButton) 中不起作用
- flash - 使用 Adobe Flash 开发电子学习内容的未来
- swift - Swift willSet/didSet 赋值?
- java - Spring JPA 数据:Eclipse 中的 Querydsl 在使用查询 dsl 类时给出编译错误
- c# - 基于属性值与 DrawingImage 的图像源绑定
- swift - 无法推断通用参数“S”