• 大小: 5KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-28
  • 语言: C/C++
  • 标签: YACC  lex  

资源简介

安装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

评论

共有 条评论