OKですので、こちらをご覧ください。私の言語でLexとYaccで入力文字列全体を取得する方法は?
私はいくつかのコマンドを持って、私の質問はどのようにすることができ、ある
start : commands
;
commands : command
| command EOL commands
;
command : xyz
| ggb
| hdh
;
xyz : XYZ NUMBER NUMBER { /* Do something with the numbers */ }
;
etc. etc. etc. etc.
私のyaccファイルで
XYZ { return XYZ; }
GGB { return GGB; }
HDH { return HDH; }
[0-9]+ { yylval.ival = atoi(yytext); return NUMBER; }
\n { return EOL; }
ファイル
XYZ 3 5
GGB 8 9
HDH 8783 33
そして、私のレックスで言いますテキスト全体を取得する
XYZ 3 5
GGB 8 9
HDH 8783 33
NUMBERを返す間にコマンドを入力してもよろしいですか?私のレックスは、STRING [0-9A-ZA-Z] +を返し、私はそれの長さに検証を行いたい。また
、私は
rule: STRING STRING { if (strlen($1) < 5) /* Do some shit else error */ }
のようにそれを行うか、実際にトークン内を持っている必要があります長さによって異なるトークンを返す私のLex?
これは、stringとの一致でsegfaultを指定します。 – schwiz