计算引号和格式化源代码

时间:2013-01-12 19:15:55

标签: formatting lua code-formatting double-quotes

我正在为我的Lua代码做一些基本的格式化。就像在数学操作数等周围添加缺少的空格一样。

现在我意识到如果我在引号之间进行这些格式化是一个非常糟糕的主意(即我不想在代码中改变字符串)。

解决这个问题的最佳方式是什么?到目前为止我的想法:

  • 执行regexp,因为我到目前为止找到了一个我想编辑的地方,然后从字符串的开头到这个地方计算引号。如果有奇数引号,我在引号中。
  • 将线条预分割为内部和外部引号的部分,并仅格式化外部部分。

我错过了一些明显的东西吗?更好的选择?

2 个答案:

答案 0 :(得分:2)

您所描述的通常被称为“漂亮的打印机”。

由于Lua的grammar非常简单,最强大的方法是为Lua语法实现一个解析器,它只是以标准样式发出解析后的代码。您可以将其破解到现有的解析器(lparser.c)中,或者使用lua-users wiki上的现有grammars之一。语法似乎是LL(1),所以一个简单的递归下降解析器或LPEG将是不错的选择。

尝试使用正则表达式执行此操作几乎总是导致更多的工作,而不仅仅是使用真正的解析器,因为越来越多的特殊情况和上下文信息(例如计算嵌套括号)蔓延到正则表达式

答案 1 :(得分:0)

我将采取的方法如下:

  1. 使用编号模式替换代码中的所有字符串,例如$1$$2$$3$ ...当然,您在表中保留每个整数索引的原始字符串。
  2. 制作您想要的任何格式(但请确保不要修改模式)。
  3. 用原始字符串替换$%n+$模式。