资源简介
安装Parser Generator软件,熟悉其使用,对讲义中简单表达式计算的Yacc程序进行修改
1.将所有的词法分析功能均放在yygettoken函数内实现,为+、-、*、\、(、)每个运算符及整数分别定义一个单词类别,在yygettoken内实现代码,能识别这些单词,并将单词类别返回给词法分析程序。
2.实现功能更强的词法分析程序,可识别并忽略空格、制表符、回车等空白符,能识别多位十进制整数。
3.修改Yacc程序,不进行表达式的计算,而是实现中缀表达式到后缀表达式的转换。
C语言版,包含.y和对应的两个.h,.c文件,在VS2013上编译成功。
代码片段和文件信息
/****************************************************************************
* U N R E G I S T E R E D C O P Y
*
* You are on day 8 of your 30 day trial period.
*
* This file was produced by an UNREGISTERED COPY of Parser Generator. It is
* for evaluation purposes only. If you continue to use Parser Generator 30
* days after installation then you are required to purchase a license. For
* more information see the online help or go to the Bumble-Bee Software
* homepage at:
*
* http://www.bumblebeesoftware.com
*
* This notice must remain present in the file. It cannot be removed.
****************************************************************************/
/****************************************************************************
* myparser.c
* C source file generated from myparser.y.
*
* Date: 10/25/16
* Time: 11:32:28
*
* AYACC Version: 2.07
****************************************************************************/
#include
/* namespaces */
#if defined(__cplusplus) && defined(YYSTDCPPLIB)
using namespace std;
#endif
#if defined(__cplusplus) && defined(YYNAMESPACE)
using namespace yl;
#endif
#define YYFASTPARSER
#line 1 “.\\myparser.y“
#include
#include
#include
#line 46 “myparser.c“
/* repeated because of possible precompiled header */
#include
/* namespaces */
#if defined(__cplusplus) && defined(YYSTDCPPLIB)
using namespace std;
#endif
#if defined(__cplusplus) && defined(YYNAMESPACE)
using namespace yl;
#endif
#define YYFASTPARSER
#include “.\myparser.h“
#ifndef YYSTYPE
#define YYSTYPE int
#endif
#ifndef YYSTACK_SIZE
#define YYSTACK_SIZE 100
#endif
#ifndef YYSTACK_MAX
#define YYSTACK_MAX 0
#endif
/* (state) stack */
#if (YYSTACK_SIZE) != 0
static yystack_t YYNEAR yystack[(YYSTACK_SIZE)];
yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = yystack;
yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = yystack;
#else
yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = NULL;
yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = NULL;
#endif
/* attribute stack */
#if (YYSTACK_SIZE) != 0
static YYSTYPE YYNEAR yyattributestack[(YYSTACK_SIZE)];
#ifdef YYPROTOTYPE
void YYFAR *YYNEAR YYDCDECL yysattributestackptr = yyattributestack;
void YYFAR *YYNEAR YYDCDECL yyattributestackptr = yyattributestack;
#else
char YYFAR *YYNEAR YYDCDECL yysattributestackptr = (char YYFAR *) yyattributestack;
char YYFAR *YYNEAR YYDCDECL yyattributestackptr = (char YYFAR *) yyattributestack;
#endif
#else
#ifdef YYPROTOTYPE
void YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL;
void YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL;
#else
char YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL;
char YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL;
#endif
#endif
int YYNEAR YYDCDECL yysstack_size = (YYSTACK_SIZE);
int YYNEAR YYDCDECL yystack_size = (YYSTACK_SIZE);
int YYNEAR YYDCDECL yystack_max = (
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-10-31 21:34 中缀转后缀\
文件 726 2016-10-21 12:02 中缀转后缀\b.pgp
文件 65 2016-10-31 21:34 中缀转后缀\b.pgw
文件 14018 2016-10-25 11:32 中缀转后缀\myparser.c
文件 1205 2016-10-25 11:32 中缀转后缀\myparser.h
文件 4177 2016-10-25 11:32 中缀转后缀\myparser.v
文件 988 2016-10-25 11:32 中缀转后缀\myparser.y
- 上一篇:木马程序设计及植入技术
- 下一篇:Exceptional C++中文版
相关资源
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- C语言词法分析程序
- Lex和Yacc从入门到精通.pdf
- lex yacc 文献 资料
- ComplexMatrixMathLab(C++复数矩阵数学库,
- LEX实现一个C语言子集的词法分析器
- TMS FlexCel for VCL & FMX 6.21.0.0 XE10.2
- LEX与YACC实现C语言词法分析和语法分析
- 编译原理课程设计+报告用高级语言
- XLEX生成器--防LEX
- 使用C++书写的Lex源代码
- 一个简单的lex词法分析器
- 一个Lex/Yacc完整的(可使用C++)
- C++实现的单纯形算法计算程序
- MS FlexGrid Control
- MFC特强大CListCtrlEx支持插入控件、设置
- CGridListCtrlEx源码vc++
- 面向对象设计自定义一个示意性的复
- C语言实现matlab的butter函数(免comple
- 编译原理课程设计 使用lex和yacc
- 基于LEX的C语言词法分析器
- 利用LEX自动生成词法分析程序
- 实现词法分析器
- 编译原理 C编译器
- 实现词法分析器
评论
共有 条评论