作为一项学校作业,我正在使用 FLEX 创建一个词法分析器。分析器由解析器使用,它也是分配的一部分。我们应该为一种称为 VSL 的语言使用词法分析器和解析器。但是,我似乎无法让分析仪工作。
我将使用 VSL 中的一些关键字作为示例:FUNC、PRINT 和 IF。
这是规则部分的当前输出:
"FUNC" {return FUNC;}
"START" {return START;}
"PRINT" {return PRINT;}
. { RETURN( yytext[0] ); }
这 。当不匹配任何其他规则时,只需一个一个地返回每个字符,并在大学的近乎空的文件中提供。要返回的令牌在提供的解析器中指定,上面使用的三个都在其中。我从测试输出(也由提供的工具生成)确定 FUNC、START 和 PRINT 被识别,但它们没有出现在测试输出中,显然它们没有被传递。我对变量(字符串、数字等)有同样的问题。它们由数字和/或字母组成,在规则中处理(也不需要显示它们)。我究竟做错了什么?我下一步要做什么?
如果我删除我制定的每一条规则,并让最后一条规则带有 . 仍然存在,然后所有字母和数字在测试输出中变得可见,所以我知道词法分析器至少可以识别它们。但下一步是什么?