lex 库
lex 库包含下面的子例程:
| 子例程 | 描述 |
|---|---|
| main() | 通过调用 yylex 子例程调用词法分析器。 |
| yywrap() | 当输入的末尾出现时,返回值 1。 |
| yymore () | 将下一个匹配字符串追加给 yytext 数组的当前值,而不是替换 yytext 数组的内容。 |
| yyless (int n) | 将 n 初始字符保留在 yytext 数组中并将剩下的字符返回给输入流。 |
| yyreject () | 允许词法分析器与相同输入字符串的多条规则匹配。 (当使用 REJECT 特殊操作时,将调用 yyreject 子例程。) |
一些 lex 子例程可使用用户提供的例程代替。 例如, lex 命令支持用户提供的 main 和 yywrap 子例程版本。 这些例程的库版本作为基础提供,如下所示:
main 子例程
#include <stdio.h>
#include <locale.h>
main() {
setlocale(LC_ALL, "");
yylex();
exit(0);
}yywrap 子例程
yywrap() {
return(1);
}yymore、yyless 和 yyreject 子例程仅可通过 lex 库使用。 但是,仅当这些子例程用于 lex 命令操作中时,才是必需的。