を解析できるparser_sub.mly
andを書きました。Aは、とで囲まれたステートメントのブロックです。lexer_sub.mll
subroutine
subroutine
Sub
End Sub
実際、私が処理したい生ファイルには、サブルーチンのリストといくつかの役に立たないテキストが含まれています。次に例を示します。
' a example file
Sub f1()
...
End Sub
haha
' hehe
Sub f2()
...
End Sub
したがって、すべてのコメント (たとえば、など) を無視して を呼び出し、サブルーチンのリストを返すことで、このファイルを解析できるparser.mly
andを記述する必要があります。lexer.mll
haha
' hehe
parser_sub.main
Sub
パーサーが役に立たない文 ( aと以外の文) をすべて無視する方法を誰か教えてもらえますEnd Sub
か?ここに
parser.mly
私が書いてみた部分があります:%{ open Syntax %} %start main %type <Syntax.ev> main %% main: subroutine_declaration* { $1 }; subroutine_declaration: SUB name = subroutine_name LPAREN RPAREN EOS body = procedure_body? END SUB { { subroutine_name = name; procedure_body_EOS_opt = body; } }
のルールと解析
procedure_body
は複雑で、実際には と で定義さparser_sub.mly
れlexer_sub.mll
てparser.mly
いlexer.mll
ますparser_sub.main
。