- Lex是一个生成词法分析器的程序。它与YACC解析器生成器一起使用。
- 词法分析器是一个将输入流转换为标记序列的程序。
- 它通过在C程序中实现词法分析器来读取输入流并生成源代码作为输出。
- 首先, 词法分析器以Lex语言创建程序lex.1。然后, Lex编译器运行lex.1程序并生成一个C程序lex.yy.c。
- 最后, C编译器运行lex.yy.c程序并生成一个目标程序a.out。
- a.out是词法分析器, 它将输入流转换为令牌序列。
文章图片
Lex文件格式 Lex程序由%%分隔符分为三部分。 Lex的正式形式如下:
{ definitions }
%%
{ rules }
%%
{ user subroutines }
定义包括常量, 变量和常规定义的声明。
规则定义形式为p1 {action1} p2 {action2} … . pn {action}的语句。
其中pi描述正则表达式, 而action1描述动作, 当模式pi匹配词素时, 词法分析器应采取什么动作。
【Lex词法分析器】用户子例程是操作所需的辅助过程。该子例程可以与词法分析器一起加载并单独编译。