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