作为协同程序的词法分析器
大多数包含flex 词法分析器的程序使用词法分析器来获得一个记号流,这样可以方便语法分析器的处理。每当程序需要一个记号,它调用yylex()来读取一小部分输入然后返回相应的记号。当程序需要下一个记号时,yylex()会被再次调用。词法分析以协同程序的方式来运行,每次返回的时候,会记住当前处理的位置,并从该位置开始处理下一次调用。
当程序再次调用yylex()时,词法分析器会以后续的输入字符继续分析。相反,如果一个模式不能够产生一个用于调用程序且不可以返回的记号时,洗发分析器会在这次yyelx()的调用中继续分析解下来的输入字符。
动作有返回,词法分析会在下一次yylex()调用时继续;如果动作没有返回,词法分析将会立即继续执行。
记号编号和记号值
当flex词法分析器返回一个记号流时,每个记号实际上有两个组成部分,记号编号和记号值。记号编号是一个较小的征数。
这个数字是随意确定的,但是0表示文件的结束。
当bison创建一个语法分析器是,bison自动的从258(这样可以避免与文字字符记号产生冲突)