【发布时间】:2011-08-23 12:33:55
【问题描述】:
我正在编写 C# 代码来将 JavaScript 解析为令牌,而我对 JavaScript 的了解并不是 100%。
让我印象深刻的一件事是 JavaScript 正则表达式没有用引号括起来。那么解析器如何检测它们何时开始和结束呢?看起来它们以 / 开头,但之后几乎可以包含任何字符。
请注意,我并不是在询问匹配某些字符所需的语法,这就是我的 Google 搜索的所有结果所涉及的内容。我只想知道确定我如何知道正则表达式从哪里开始和在哪里结束的规则。
【问题讨论】:
-
我知道编写解析器很有趣,但是根据您的要求,您应该知道那里有 ECMAScript 解析器。如果您想计算 JScript,甚至还有一个内置于 .NET 中的本机脚本。 (我知道,我知道,但我用它来构建和运行 sizzle.js,所以我认为它非常合规)。看看Coco/R compiler generator,它有一个 C# 实现,可以从 BNF 风格的语法构建解析器。
-
天哪,这太难了。我花了将近一整年的时间来学习解析 JavaScript。
-
@harpo:谢谢,但是使用别人的代码有什么乐趣呢? :-)
-
@ChaoesPandion:你为什么这么说?编写我的标记器对我来说似乎非常简单。我只是不确定正则表达式,因为我不太了解语法。
-
@Jonathan - 那一年还包括编写一个完整的运行时,但我也可能只是个傻瓜。不过这很有趣。
标签: javascript regex parsing