ccaY 的补充内容
来源:互联网 发布:手机电视直播软件 编辑:程序博客网 时间:2024/04/27 22:20
Lex 的常规表达式
Name.lex - Lex 的解析器文件
常规表达式是一种使用元语言的模式描述。表达式由符号组成。符号一般是字符和数字,但是 Lex 中还有一些具有特殊含义的其他标记。 下面两个表格定义了 Lex 中使用的一些标记并给出了几个典型的例子。
用 Lex 定义常规表达式
字符 含义 A-Z, 0-9, a-z 构成了部分模式的字符和数字。 . 匹配任意字符,除了 /n。 - 用来指定范围。例如:A-Z 指从 A 到 Z 之间的所有字符。 [ ] 一个字符集合。匹配括号内的 任意 字符。如果第一个字符是 ^ 那么它表示否定模式。例如: [abC] 匹配 a, b, 和 C中的任何一个。 * 匹配 0个或者多个上述的模式。 + 匹配 1个或者多个上述模式。 ? 匹配 0个或1个上述模式。 $ 作为模式的最后一个字符匹配一行的结尾。 { } 指出一个模式可能出现的次数。 例如: A{1,3} 表示 A 可能出现1次或3次。 / 用来转义元字符。同样用来覆盖字符在此表中定义的特殊意义,只取字符的本意。 ^ 否定。 | 表达式间的逻辑或。 "<一些符号>" 字符的字面含义。元字符具有。 / 向前匹配。如果在匹配的模版中的“/”后跟有后续表达式,只匹配模版中“/”前 面的部分。如:如果输入 A01,那么在模版 A0/1 中的 A0 是匹配的。 ( ) 将一系列常规表达式分组。
常规表达式举例
常规表达式 含义 joke[rs] 匹配 jokes 或 joker。 A{1,2}shis+ 匹配 AAshis, Ashis, AAshi, Ashi。 (A[b-e])+ 匹配在 A 出现位置后跟随的从 b 到 e 的所有字符中的 0 个或 1个。
Lex 变量
yyin FILE* 类型。 它指向 lexer 正在解析的当前文件。 yyout FILE* 类型。 它指向记录 lexer 输出的位置。 缺省情况下,yyin 和 yyout 都指向标准输入和输出。 yytext 匹配模式的文本存储在这一变量中(char*)。 yyleng 给出匹配模式的长度。 yylineno 提供当前的行数信息。 (lexer不一定支持。) Name.y - 语法文件
%
typedef char* string;
#define YYSTYPE string
%}
%token NAME EQ AGE
%%
file : record file
| record
;
record : NAME EQ AGE {
printf("%s is %s years old!!!/n", $1, $3); }
;
%%
int main()
{
yyparse();
return 0;
}
int yyerror(char *msg)
{
printf("Error
encountered: %s /n", msg);
}
Name.lex - Lex 的解析器文件
%{
#include "y.tab.h"
#include <stdio.h>
#include <string.h>
extern char* yylval;
%}
char [A-Za-z]
num [0-9]
eq [=]
name {char}+
age {num}+
%%
{name} { yylval = strdup(yytext);
return NAME; }
{eq} { return EQ; }
{age} { yylval = strdup(yytext);
return AGE; }
%%
int yywrap()
{
return 1;
}
- ccaY 的补充内容
- Ext对Function.prototype的补充内容
- TCP 协议详解的补充内容
- 补充点内容
- kamailio服务器内容补充
- 头文件补充内容
- 9月27号会议内容的补充
- android4.4增加ethernet 文章 的补充内容
- Oracle 序列的创建与运用 内含约束补充内容
- DjangoForm内容补充以及MOdels的F Q
- 后续sdk发版需要补充的内容
- 线程池及补充内容
- javawebday10补充(xpath内容总结)
- 补充的
- xeL dna ccaY 又是计算器
- 在Oralce中扩展RAW类型字段长度,并补充增加长度的取值内容
- js控件补充内容,主要为控件效果和控件的API说明
- 《iOS应用程序开发方法与实践》补充内容-2.13 再谈类的声明与实现
- box资源共享----英语系列
- java中四种操作xml方式的比较
- 游戏引擎介绍2
- Google Reader Feeds Share
- php高级技巧大放送(一)
- ccaY 的补充内容
- 北京联通营业厅一览表
- MFC应用程序类对象实例初始操作的分析
- 关于 VC6.0 运算符重载的一点 Bug
- php高级技巧大放送(二)
- Subversion安装配置教程
- PHP文件上传的原理及实现
- ADODB 入门(一)
- VC中基于 Windows 的精确定时