我是靠谱客的博主 友好白羊,最近开发中收集的这篇文章主要介绍yacc 学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

yacc建议按照如下风格来写:
(1)终端符名全部用大写字母,非终端符全部用小写字母;
(2)把语法规则和语义动作放在不同的行;
(3)把左部相同的规则写在一起,左部只写一次,而后面所有规则都写在竖线“|”之后;
(4)把分号“;”放在规则最后,独占一行;

(5)用制表符来对齐规则和动作。


单引号括起来的标记 不用声明 直接由词法分析程序返回 的字符 与其匹配

一般的标记 是词法分析程序返回一个对应的数字 然后yacc 在语法规则段找到对应的 数字(宏定义) 左侧规则名称匹配

在第一个%%块中声明:

%{
#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;
}

最后

以上就是友好白羊为你收集整理的yacc 学习的全部内容,希望文章能够帮你解决yacc 学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部