如何使用 EBNF 语法解析注释

发布于 2024-12-06 16:30:19 字数 153 浏览 1 评论 0原文

在定义语言解析器的语法时,如何处理文本中可能出现的注释(例如 /* .... */)等内容?

当事物结构化时,从标签内的标签构建语法似乎效果很好,但注释似乎会抛出一切。

您只需分两步解析文本吗?首先删除这些项目,然后再拆开代码的实际结构?

谢谢

When defining the grammar for a language parser, how do you deal with things like comments (eg /* .... */) that can occur at any point in the text?

Building up your grammar from tags within tags seems to work great when things are structured, but comments seem to throw everything.

Do you just have to parse your text in two steps? First to remove these items, then to pick apart the actual structure of the code?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人生百味 2024-12-13 16:30:19

通常,词法分析器在主语法范围之外处理注释。实际上,它们(通常)被视为空白。

Normally, comments are treated by the lexical analyzer outside the scope of the main grammar. In effect, they are (usually) treated as if they were blanks.

洛阳烟雨空心柳 2024-12-13 16:30:19

一种方法是使用单独的词法分析器。另一种更灵活的方法是使用对当前上下文有效的隐式空格前缀修改所有类似标记的条目(关键字、词汇元素等)。这就是大多数现代 Packrat 解析器处理空格的方式。

One approach is to use a separate lexer. Another, much more flexible way, is to amend all your token-like entries (keywords, lexical elements, etc.) with an implicit whitespace prefix, valid for the current context. This is how most of the modern Packrat parsers are dealing with whitespaces.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文