如何处理 FsLex 中的嵌套注释

发布于 2024-11-30 18:13:24 字数 735 浏览 2 评论 0原文

有单行和多行注释可用,就像在 C 中一样。

如何描述词法分析器忽略所有注释(甚至是嵌套注释)的规则,例如:

// comment /* nested comment /* and nested again? */ */

或者像这些:

/* comment // one more comment /* and more... */ */

UPD:

这里是解析嵌套注释的有效代码(感谢 Sam):

rule token = parse
  | "/*"        { comments 0 lexbuf }
  | [' ' '\t' '\n'] { token lexbuf }
  | eof         { raise End_of_file }

and comments level = parse
  | "*/"    {
          if level = 0 then token lexbuf
          else comments (level-1) lexbuf
        }
  | "/*"    { comments (level+1) lexbuf }
  | _       { comments level lexbuf }

There are single and multi-line comments available, like in C.

How to describe the rules for the lexer to ignore all the comments, even nested, such as these:

// comment /* nested comment /* and nested again? */ */

or like these:

/* comment // one more comment /* and more... */ */

UPD:

Here is the valid code to parse nested comments(thanks Sam):

rule token = parse
  | "/*"        { comments 0 lexbuf }
  | [' ' '\t' '\n'] { token lexbuf }
  | eof         { raise End_of_file }

and comments level = parse
  | "*/"    {
          if level = 0 then token lexbuf
          else comments (level-1) lexbuf
        }
  | "/*"    { comments (level+1) lexbuf }
  | _       { comments level lexbuf }

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

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

发布评论

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

评论(1

迷乱花海 2024-12-07 18:13:24

当我在玩 FsLex 时,我发现 Ocamllex 教程 有很大帮助,特别是嵌套评论部分是轻松更改为 F#。

When I was playing around with FsLex I found the Ocamllex Tutorial a great help, in particular the nested comments section was easy to change into F#.

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