/* 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 メソッドの戻り値になる。(これが本来の使い方)*/