【发布时间】:2015-11-18 12:07:06
【问题描述】:
我有一个解析器,可以解析 PAWN 语言的代码。
我已经有一个正则表达式来解析该代码中的定义,典型的定义如下:
#define DEFINE_NAME DEFINE_VALUE
我使用以下正则表达式来检测它:
#define[ \t]+([^\n\r\s\\;]+)(?:[ \t]*([^\s;]+))?
现在到实际问题了。PAWN 语言仅在每行以斜杠结尾时才允许多行。所以这将是有效的:
#define DEFINE_NAME \
DEFINE_VALUE \
CONTINUE_VALUE
如果有更多的斜线,可以继续前进。
Soo.. 我想要一个可以捕获可能的多行内容的正则表达式。
注意:我还需要它在单行定义中工作。所以请记住这一点。
我也使用 .NET,所以是的,这就是它的味道。
非常感谢任何帮助/贡献。 :D
【问题讨论】:
-
只是想知道 - PAWN 是一种常规语言吗?虽然您可能能够解析示例中的
#define之类的简单语句,但随着您的进步,您可能会发现使用正则表达式变得越来越困难。通常事情是使用标记器/解析器完成的。 -
经过一些尝试,我收到了ugly regex,也许它可以帮助您开始。也许,它会说服你编写一个自己的高效解析器。
-
您是否禁止使用内联 cmets?
-
这是一种简单的无类型脚本语言。所以正则表达式会很好用。另外,它是 IDE 的解析器,而不是编译器。
-
我认为下面的答案已经确定了,只需要测试它。
标签: .net regex vb.net macros multiline