在flex中定义标记“int matrix”

时间:2013-04-12 17:14:21

标签: compiler-construction bison flex-lexer

我试图在flex中定义两个标记。第一个返回“tINTTYPE”,当它在输入中看到字符串“int”时返回,而另一个是“TINTTYPE”,当它在输入中看到“int matrix”时返回。

以下是我的flx文件的相关部分:

int {yylval.type_id.Type=1;return tINTTYPE;}
int[ \t\n]+matrix {yylval.type_id.Type=2;return tINTMATRIXTYPE;} 
. return yytext[0];

问题是,当输入 int matrixm = 4; 时,扫描仪将其识别为 int matrix m = 4; 并返回tINTMATRIXTYPE,但实际上,我们有一个名为matrixm的整数类型,我希望它被识别为这个,即它shuld返回tINTTYPE。我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:1)

int                       {yylval.type_id.Type=1;return tINTTYPE;}
int[ \t\n]+matrix[ \t\n]+ {yylval.type_id.Type=2;return tINTMATRIXTYPE;} 
. return yytext[0];