/* import宣言はここに書く */ import java.io.IOException; %% // 生成するクラスの名前 %class MyLexer1 // 生成するメソッドの戻り値型 %int %unicode %line %column %{ /* フィールドやメソッドはここに書く */ public static void main(String[] args) throws IOException { new MyLexer1(System.in).yylex(); } %} /* ここは正規表現の定義(良く使う正規表現に名前をつける) */ delim = [ \t] ws = {delim}+ letter = [A-Za-z] digit = [0-9] ident = {letter}({letter}|{digit})* number = {digit}+(\.{digit}+)?(E[+\-]?{digit})? %% /* ここに動作記述を書く。*/ /* yytext()はマッチした文字列を返すメソッド */ {ws} { System.out.print('_'); } {number} { System.out.print(""); System.out.print(yytext()); System.out.print(""); } {ident} { System.out.print(""); System.out.print(yytext()); System.out.print(""); } "." { System.out.print(yytext()); System.exit(1); } .|\n { System.out.printf(yytext()); } /* その他の文字はそのまま出力 */ /* 上の動作記述では値を返していないが、動作記述の中で return文を書くと、yylexメソッドの戻り値になる。(これが本来の使い方)*/