プログラミング言語SML#解説 4.0.0版
30.4 smllex入力ファイルの構造
smllexの入力ファイルは以下の形式で記述する.
ユーザ定義
%%
字句解析のためのLEX宣言
%%
正規表現とその属性の定義
-
1.
ユーザ定義セクション 字句解析処理が使用する型の定義,正規表現の属性定義等で使用する補 助関数などのユーザコードを指定する.
以下の2つは必ず指定しなければならない.
type lexresult = ... fun eof () = ...
-
•
lexresult 型. 字句解析器が正規言語を受理した時に返す値の型を指定する. smlyaccと共に使用する場合は,通常, YaccInputFile.grmファイルで定義するtoken型である.
-
•
eof 関数. 構文解析器がファイル終了を検出した時に呼び出される関数. lexresult型の値でend of fileを表現する値を返す.
-
•
-
2.
LEX宣言セクション
smllexの動作に関する指示や,正規言語を定義するための補助定義などを宣言する. 正規言語を定義するための補助定義は,通常のLEXシステムと同様である.
smllexの動作に関する指示には以下のものがある.
-
•
%structure
declareation. smllexは,字句解析プログラムを一つのストラクチャとして生成する. 本宣言では,そのストラクチャの名前を以下のように指定する.%structure MLLex
-
•
%arg
declareation. smllexが生成する字句改正プログラムに与えるユーザ引数の型を指定する. ユーザ引数が必要ない場合は省略可能である. -
•
%full
declareation. 8bit文字を使用することを宣言する. 日本語を扱う場合はこの指定をする必要がある.
-
•
-
3.
正規言語セクション 認識すべき字句の集合を正規表現で指定する.
指定の詳細は,src/ml-lex/doc/mllex.pdfを参照.