我是这样做的:为什么不能LEX识别我的正则表达式定义
/* regular definitions */
DECLARATIONS declarations
ENDDECLARATIONS (enddeclarations)
INT (int)
METHOD (method)
PROGRAM (program)
而且
{DECLARATIONS} {yycolumn+=yyleng;return (DECLARATIONSnum);}
承认它,但我发现他们不承认... ..如果我这样做:
"declarations" {yycolumn+=yyleng;return (DECLARATIONSnum);}
它的工作。我真的不明白为什么....
样品输入是这样的:
program p2;
class Test {
method void main()
declarations
int x;
它是目前这样的:
program p2
5 1 SEMInum
class Test
6 1 LBRACEnum
method void main
7 1 LPARENnum
程序,类应该被承认为一个保留字,但它们不被识别....
?提供一个完整的.l文件来演示这个问题 - 当我从你的片段中构建一个文件时,它工作得很好,可以识别关键字,而不管它们在哪个表单中。 – 2012-01-31 21:58:31
@ChrisDodd它是lex版本2.5.4。整个文件有点太长了......这个错误是否有可能来自该版本? – faz 2012-01-31 22:24:37