【发布时间】:2012-12-27 03:30:31
【问题描述】:
我正在为我的 Lua 代码做一些基本的格式化。比如在数学操作数周围添加缺失的空格等。
现在我意识到,如果我在引号之间(即我不想更改代码中的字符串),那么进行这些格式化是一个非常糟糕的主意。
解决这个问题最优雅的方法是什么。到目前为止我的想法:
- 像我目前所做的那样做一个正则表达式来找到一个我想要编辑的地方,然后从字符串的开头计算到这个地方的引号。如果有奇数个引号,我在一个带引号的字符串中。
- 将行预拆分为引号内和引号外的部分,并且仅格式化外部部分。
我是否遗漏了一些明显的东西?更好的选择?
【问题讨论】:
-
我知道 Eclipse 和 INtelliJ 都有 Lua 插件。也许您可以使用它们来重新格式化您的代码库?
-
有一个更干净的替代方案,但它的工作量更大。将 LUA 代码解析为 AST。从 AST 重新生成代码。如果你这样做了,你永远不会对处于字符串中间感到困惑。根据定义,这是一个树节点。这也意味着您可以使用代码的结构(例如,IF ... ELSE IF ... ELSE IF ...)很好地格式化特殊情况。如果你不想经历这么多麻烦,你应该得到 Astyle 并为 Lua 破解它。
-
使用引号计数技术会遇到麻烦的一个明显的事情是转义引号,如以下字符串:
"\""。 -
@jpjacobs 是的,这将是一条无穷无尽的极端案例。 :(这就是为什么我接受了silentbicycle关于实现真正解析器的回答。
标签: formatting lua code-formatting double-quotes