プログラミング言語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の動作に関する指示には以下のものがある. - 
• 
%structuredeclareation. smllexは,字句解析プログラムを一つのストラクチャとして生成する. 本宣言では,そのストラクチャの名前を以下のように指定する.%structure MLLex
- 
• 
%argdeclareation. smllexが生成する字句改正プログラムに与えるユーザ引数の型を指定する. ユーザ引数が必要ない場合は省略可能である.
- 
• 
%fulldeclareation. 8bit文字を使用することを宣言する. 日本語を扱う場合はこの指定をする必要がある.
 
- 
• 
- 
3. 
正規言語セクション 認識すべき字句の集合を正規表現で指定する. 
指定の詳細は,src/ml-lex/doc/mllex.pdfを参照.