package istlab.KisoJikken.JFLEX;
/* import 宣言はここに書く */
import java.io.IOException;
import java.io.InputStreamReader;
%%
// 生成するクラスの名前
%class MyLexer1
// yylex メソッドの戻り値型
%int
%unicode
%line
%column
%{
/* フィールドやメソッドはここに書く */
public static void main(String[] args) throws IOException {
new MyLexer1(new InputStreamReader(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("<b>");
System.out.print(yytext());
System.out.print("</b>"); }
{ident} { System.out.print("<i>");
System.out.print(yytext());
System.out.print("</i>"); }
"." { System.out.print(yytext());
System.exit(1); }
// その他の文字はそのまま出力
.|\n { System.out.printf(yytext()); }
/* 上の動作記述では値を返していないが、動作記述の中で
return 文を書くと、yylex メソッドの戻り値になる。(これが本来の使い方)*/