我正在编写一个小型脚本引擎(作为游戏引擎的一部分),其中一部分需要解析字符串以获取某个对象。我已经有了正则表达式来识别所讨论的字符串是什么(字符串,变量,映射或数组/列表),但字符串连接是我被卡住的地方。这不是必需的,我想我可以写一个concat()
,但我希望parse
方法识别string + string
。
如果所有参数都是字符串或变量(例如'i like ' + 'pie'
或variable + 'string'
或variable + variable
),这将很简单,但我想提供列表/数组和映射等数据类型。理想情况下,解析方法可以通过忽略某些加号来分割以下任何一行:
print parse("{var='value ' + ''}")
print parse("['value', x, x + y] + ' a string'")
print parse("function('arg ', 'another arg ' + 'concatenated')")
在第一个print
中,+
被完全忽略,因为它位于未加引号的花括号之间
在第二次打印中,第一个+
被忽略,因为它位于未加引号的方括号之间,但第二个不是。
在第三个印刷品中,与第一个印刷品类似,+
被忽略,因为它在未加引号的括号内
编辑: 如果我不是很清楚,正则表达式仅用于将文本拆分为字符串数组
我知道this答案有点相似,是一个很好的开始。但是我一直无法改变它而忽略{未加引号的)括号内的+
和(()
)括号([]
或{}
)
如果它很重要,因为我知道每种语言都有不同的口味,我使用的是Java。