部分yacc和lex关键字

[ 2007-11-05 20:58:49 | 作者: Admin ]
: | |
%union里定义的联合体最终会被生成一个叫yylval的全局变量,
这个全局变量可以在lex和yacc之间传递变量。



%type<xxx> 这里的xxx必须是%union里定义的一个成员变量,那么%type<xxx> 里定义的类型就会被存储这个成员变量里

%token<xxx> 与%type类似,只是它所代表的是token而已

%left 左结合
%right 右结合
%prec
%nonassoc
====================================
Lex 变量
yyin  FILE* 类型。 它指向 lexer 正在解析的当前文件。
yyout  FILE* 类型。 它指向记录 lexer 输出的位置。 缺省情况下,yyin 和 yyout 都指向标准输入和输出。
yytext  匹配模式的文本存储在这一变量中(char*)。
yyleng  给出匹配模式的长度。
yylineno  提供当前的行数信息。(lexer不一定支持。)

Lex 函数
yylex()  这一函数开始分析。 它由 Lex 自动生成。
yywrap()  这一函数在文件(或输入)的末尾调用。如果函数的返回值是1,就停止解析。 因此它可以用来解析多个文件。代码可以写在第三段,这就能够解析多个文件。 方法是使用 yyin 文件指针(见上表)指向不同的文件,直到所有的文件都被解析。最后,yywrap() 可以返回 1 来表示解析的结束。
yyless(int n)  这一函数可以用来送回除了前�n? 个字符外的所有读出标记。
yymore()  这一函数告诉 Lexer 将下一个标记附加到当前标记后。
[最后修改由 Admin, 于 2007-11-5 20:58:49]
评论Feed 评论Feed: http://www.vTalkback.com/blog/feed.asp?q=comment&id=139

这篇日志没有评论.

发表
表情图标
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:  
验证码 * 请输入验证码