最近在Windows下写了一个后缀为l的文件意欲用flex来编译,但是出现未知错误'premature
EOF'。上网上没有查到答案,折腾了半天,原来是%{ ... %}写成了%{ }%了。
另外,定义了一个正则表达式Identifier
%{
%}
letter [A-Za-z]
digit [0-9]
Identifier {letter}({digit} | {letter})*
%%
{Identifier} {<语义定义>}
%%
int main()...
出现的情况是不能识别包含<语义定义>那一行,查找半天终于找到原因,是正则定义的时候不能在花括号出现空格,修改Identifier定义为
Identifier {letter}({digit}|{letter})*
即可。
另外,用C语言编写,文件最后空一行可消去文件末尾希望出现newline的警告。
加油。好多bug。