Ace 编辑器中的递归块
Recursive blocks in Ace editor
我们有自己的脚本语言。该语言非常简单,但它有一个"专有"的东西:字符串使用"["和"]"定义(因此"test"将是[test]),这些大括号可以彼此内部:
lateinit([concat([test], [blah])])
此外,没有转义字符。如何将此块解析为一个字符串(从而突出显示[concat([test], [blah])]
块)?我目前有以下规则:
{ token: 'punctuation.definition.string.begin.vcl',
regex: '''[',
push:
[
{ token: 'punctuation.definition.string.end.vcl',
regex: ''']',
next: 'pop' },
{ defaultToken: 'string.quoted.other.vcl' } ],
},
但是,正如您可能已经猜到的那样,这将在测试结束时停止大括号:"[ concat([test ], [blah])]'...
其他例子是:
setexpratt(1, [if(comparetext([yes], [no]), msg([test expression]))]);
terminator([confirm([Are you sure you want to exit?])]);
registerfunction([testfunction], 1, 3, [], [msg(concat([Argument 1: ], p(1), [, Argument 2: ], p(2), [, Argument 3: ], p(3)))]);
您需要将
规则[
添加到内部字符串状态中,请尝试
this.$rules = {
start: [
{ token: 'string.begin.vcl', regex: '''[', push: "string" }
],
string : [
{ token: 'string.begin.vcl', regex: '''[', push: "string" },
{ token: 'string.end.vcl', regex: ''']', next: 'pop' },
{ defaultToken: 'string.quoted.other.vcl' },
]
};
this.normalizeRules();
相关文章:
- 数组在递归方法中设置为null
- 递归倒计时计时器
- 递归布尔和/或到数组的jison解析器
- 为什么可以't使用振荡器的递归单宁性质来创建音乐定序器
- 迭代Promise迭代器的非递归方法
- 我的 JavaScript 暴力递归数独求解器内存不足吗?
- 为什么递归单词搜索求解器缺少五个单词,却找到了其他 47 个单词
- Jquery 拆分器插件收到错误太多递归
- 递归“超出最大调用堆栈大小” - 十进制到十六进制转换器
- 递归使用 jQuery 选择器
- RxJS:可观察器和单个观察器的递归列表
- 递归:JS中的回溯数独求解器
- setInterval,递归,计时器Id
- 递归函数(迷宫求解器)-can'找不到漏洞;()
- jQuery递归通配符选择器从数组和数组推送动态
- 递归构建器嵌套问题
- 在javascript中使用分割的递归解析器
- regex重复器和子匹配递归的区别
- Ace 编辑器中的递归块
- 递归迭代器上的最大调用堆栈大小错误