1

ML-Lex でトークナイザーを作成していますが、その定義の一部は次のとおりです。

datatype lexresult = STRING
                     | STRINGOP
                     | EOF
val error = fn x => TextIO.output(TextIO.stdOut,x ^ "\n")
val eof = fn () => EOF

%%
%structure myLang
digit=[0-9];
ws=[\ \t\n];
str=\"[.*]+\";
strop=\[[0-9...?\^]\];
%s alpha;
alpha=[a-zA-Z];
%%

<alpha> {alphanum}+ => (ID);
. => (error ("myLang: ignoring bad character " ^ yytext); lex());

タイプIDが「alpha」で始まるか、後に見つかった場合にのみ、タイプIDを検出する必要があります。私はそれを次のように書くことを知っています

{alpha}+ {alphanum}* => (ID);

はオプションですが、他の目的でも開始状態を使用する方法を学ぶ必要があります。誰かがこれについて私を助けてくれますか?

4

1 に答える 1