我正在用 flex 编写扫描仪,我有以下两个定义:
%%
"int" printf("JUST_INT");
"int"[ \t\n]+"matrix" printf("MATRIX_INT");
[A-Za-z][A-Za-z0-9]* printf("IDENTIFIER");
%%
当扫描仪的输入是int matrixM = 3;
输出时MATRIX_INT IDENTIFIER
。它将输入视为int matrix M=3
。但实际上,这不是一个matrix
,标识符的名称是matrixM
。输出应该是JUST_INT IDENTIFIER
. 为什么会这样?是因为我的定义吗?