Как бороться с вложенными комментариями в FsLex - PullRequest
2 голосов
/ 19 августа 2011

Доступны однострочные и многострочные комментарии, как в C.

Как описать правила для лексера, чтобы игнорировать все комментарии, даже вложенные, такие как эти:

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

или как это:

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

UPD:

Вот правильный код для анализа вложенных комментариев (спасибо Сэм ):

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 }

1 Ответ

1 голос
/ 19 августа 2011

Когда я играл с FsLex, я обнаружил, что Ocamllex Tutorial - отличная помощь, в частности, раздел вложенных комментариев легко изменить на F #.

...