我正在为我的Lua代码做一些基本的格式化。就像在数学操作数等周围添加缺少的空格一样。
现在我意识到如果我在引号之间进行这些格式化是一个非常糟糕的主意(即我不想在代码中改变字符串)。
解决这个问题的最佳方式是什么?到目前为止我的想法:
我错过了一些明显的东西吗?更好的选择?
答案 0 :(得分:2)
您所描述的通常被称为“漂亮的打印机”。
由于Lua的grammar非常简单,最强大的方法是为Lua语法实现一个解析器,它只是以标准样式发出解析后的代码。您可以将其破解到现有的解析器(lparser.c)中,或者使用lua-users wiki上的现有grammars之一。语法似乎是LL(1),所以一个简单的递归下降解析器或LPEG将是不错的选择。
尝试使用仅正则表达式执行此操作几乎总是导致更多的工作,而不仅仅是使用真正的解析器,因为越来越多的特殊情况和上下文信息(例如计算嵌套括号)蔓延到正则表达式
答案 1 :(得分:0)
我将采取的方法如下:
$1$
,$2$
,$3$
...当然,您在表中保留每个整数索引的原始字符串。 $%n+$
模式。