📜  LEX

📅  最后修改于: 2020-12-06 06:35:08             🧑  作者: Mango

雷克斯

  • Lex是一个生成词法分析器的程序。它与YACC解析器生成器一起使用。
  • 词法分析器是一个将输入流转换为标记序列的程序。
  • 它通过在C程序中实现词法分析器来读取输入流并生成源代码作为输出。

Lex的函数如下:

  • 首先,词法分析器以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与词素匹配时,词法分析器应采取的动作。

用户子例程是操作所需的辅助过程。该子例程可以与词法分析器一起加载并单独编译。