我正在制作一个游戏内脚本编辑器,并且几乎完成了。除了需要编写按键绑定等脚本外,我还需要修复Syntax Highlighter的一些问题。到目前为止,这是编辑器的外观:(UI尚未对其进行任何处理,请忽略它。)
您可以清楚地看到,有一些错误需要解决,例如某些括号拒绝突出显示。不过,更大的问题在于我的发现字符串模式:(([^\\]*["\']).*%2)
此模式导致以下情况:几周前,我在从事此工作上稍作休息,而且我对模式的工作方式也不太记得。我尝试修改现有模式以防止字符串之间的文本包含在匹配项中,但是它要么选择“全部”,要么找不到任何字符串。我需要确保它也没有找到\'或\“作为字符串的指示符。
您的模式有点复杂。您可以使用模式"
%b""
的平衡对local myString = 'local a = {"one", "two", "tree"}'
for str in myString:gmatch('%b""') do print(str) end
打印
"one"
"two"
"tree"
请参见https://www.lua.org/manual/5.3/manual.html#6.4.1
%bxy,其中x和y是两个不同的字符;这样的项目匹配以x开头,以y结尾以及x和y在哪里的字符串均衡。这意味着,如果人们从左到右读取字符串,对x计数+1,对y计数-1,结尾y是第一个y计数达到0。例如,项目%b()与表达式匹配括号括起来。