Newer
Older
KisoJikkenNWP / src / main / java / istlab / KisoJikken / JFLEX / ex02.flex
@motoki miura motoki miura on 5 Nov 2022 1 KB test jflex
package istlab.KisoJikken.JFLEX;
/* import 文はここに書く */
import java.io.IOException;
import java.io.InputStreamReader;

%%

// 生成するクラスの名前
%class MyLexer
// yylex メソッドの戻り値型
%int
%unicode
%line
%column

%{
   /* フィールドやメソッドはここに書く */
    public static void main(String[] args) throws IOException {
        new MyLexer(new InputStreamReader(System.in)).yylex();
    }
%}
   /* この例ではここには何も書かない */
%%

   /* ここに動作記述を書く。*/
   /* yytext() はマッチした文字列を返すメソッド */
[ \t]+                              { System.out.print('_'); }
[0-9]+(\.[0-9]+)?(E[+\-]?[0-9]+)?   { System.out.print("<b>");
                                      System.out.print(yytext()); 
                                      System.out.print("</b>");   }
[A-Za-z]([A-Za-z0-9])*              { 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 メソッドの戻り値になる。(これが本来の使い方)*/