Newer
Older
KisoJikkenNWP / src / main / java / istlab / KisoJikken / JFLEX / ex03.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 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 メソッドの戻り値になる。(これが本来の使い方)*/