第2章词法分析 要点 利用Lex自动生成扫描程序
第2章 词法分析 要点 ◼ 利用Lex自动生成扫描程序
2.6利用Lex自动生成扫描程序 Lex简介 Lex代表 Lexical Analyzar 使用LEⅩ工具可根据描述语言的词法构成规 则的正规式来自动生成扫描程序。 ·LEX在unx平台上使用,在 windows平台上的 种常用实现是FLEX,它是 gnu compiler package的一部分
2.6 利用Lex自动生成扫描程序 • Lex 代表 Lexical Analyzar • 使用LEX工具可根据描述语言的词法构成规 则的正规式来自动生成扫描程序。 • LEX在unix平台上使用,在windows平台上的 一种常用实现是FLEX,它是GNU compiler package的一部分。 Lex 简介
词法分析器的自动产生_LEX Lex Source Lex lex.yy.c program compiler lex. I C lex. yy.c a out compiler Input sequence a out stream tokens
词法分析器的自动产生--LEX Lex compiler Lex source program lex.l lex.yy.c C compiler lex.yy.c a.out a.out Input stream sequence of tokens
261正则表达式的Lex约定(1) 正则表达式由符号组成,符号一般是字符和数字,但 Lex中还有一些特殊标记。 字符 含义 A-Z0-9, a-Z 构成了部分模式的字符和数字 匹配除Mn外的任意字符 用来指定范围 例如:A-Z指从A到Z之间的所有字符
正则表达式由符号组成,符号一般是字符和数字,但 Lex 中还有一些特殊标记。 2.6.1 正则表达式的Lex约定(1) 字符 含义 A-Z, 0-9, a-z 构成了部分模式的字符和数字 . 匹配除 \n外的任意字符 - 用来指定范围 例如:A-Z 指从 A 到 Z 之间的所有字符
261正则表达式的Lex约定(2) 字符 含义 个字符集合。匹配括号内的任意字符。 如果第一个字符是A那么它表示否定模式 例:[abC]匹配a,b,和c中的任何一个。 匹配0个或者多个上述的模式 *+? 匹配1个或者多个上述模式 匹配0个或1个上述模式。 匹配行尾
字符 含义 ◼ [ ] 一个字符集合。匹配括号内的任意字符。 ◼ 如果第一个字符是 ^ 那么它表示否定模式。 ◼ 例: [abC] 匹配 a, b, 和 C中的任何一个。 * 匹配0个或者多个上述的模式。 + 匹配1个或者多个上述模式。 ? 匹配0个或1个上述模式。 \n 匹配行尾 2.6.1 正则表达式的Lex约定(2)