%{
/* 動作記述のなかで用いる関数の定義や宣言をここに書く。 */
/* 次の 2行は決まり文句 */
#define YY_SKIP_YYWRAP
int yywrap(void) { return 1; }
%}
%%
/* ここに動作記述を書く。*/
/* ECHOはマッチした文字列をそのまま出力するマクロ */
[ \t]+ { putchar('_'); }
[0-9]+(\.[0-9]+)?(E[+\-]?[0-9]+)? { printf(""); ECHO; printf(""); }
[A-Za-z]([A-Za-z0-9])* { printf(""); ECHO; printf(""); }
"." { ECHO; exit(1); }
. { ECHO; }
/* 上の動作記述では値を返していないが、動作記述の中で
return文を書くと、yylexという関数の戻り値になる。(これが本来の使い方)*/
%%
/* その他の関数の定義などをここに書く。*/
int main (void) {
return yylex();
}
/* この例では lexer単独で動作させるので main関数を定義し、
その中で yylex関数を呼んでいる。*/