2

C のように、1 行と複数行のコメントを使用できます。

次のように、すべてのコメントを無視するためのレクサーのルールを記述する方法。

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

またはこれらのように:

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

更新:

ネストされたコメントを解析する有効なコードは次のとおりです ( 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 }
4

1 に答える 1

1

FsLex をいじっていたとき、Ocamllex チュートリアルが非常に役に立ちました。特に、ネストされたコメントセクションは F# に簡単に変更できました。

于 2011-08-19T15:05:33.650 に答える