资源简介
TINY+语言的语法分析软件提供Window界面,用户可以点击【打开】按钮打开或者在编辑框中输入一个扩展Tiny+语言源程序;通过【打印语法树】复选按钮可以选择在分析结果中打印语法树,【语法分析】按钮提供Tiny语言词法分析功能,对源程序进行语法分析后在内存中生成语法树,并将分析结果显示在编辑框中;【文件另存为】按钮可以保存文件。
代码片段和文件信息
// Parse.cpp: implementation of the Parse class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “Tiny.h“
#include “Parse.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Parse::Parse()
{
indentno=0;
m_Error = FALSE;
}
Parse::~Parse()
{
}
void Parse::syntaxError(char * message)
{
fprintf(sc.listing“\n>>> “);
fprintf(sc.listing“Syntax error at line %d: %s“sc.linenomessage);
m_Error = TRUE;
}
void Parse::match(MyTokenType expected)
{
if (token == expected) token = sc.getToken();
else {
syntaxError(“unexpected token -> “);
sc.printToken(token);
fprintf(sc.listing“ “);
}
}
char * Parse::copyString(char * str)
{
int n;
char * t;
if (str==NULL) return NULL;
n = strlen(str)+1;
t =(char *) malloc(n);
if (t==NULL)
fprintf(sc.listing“Out of memory error at line %d\n“sc.lineno);
else strcpy(tstr);
return t;
}
void Parse::printSpaces(void)
{
int i;
for (i=0;i fprintf(sc.listing“ “);
}
void Parse::printTree( TreeNode * tree )
{
int i;
indentno+=2;
while (tree != NULL) {
printSpaces();
if (tree->nodekind==StmtK)
{
switch (tree->kind.stmt)
{
case IfK:
fprintf(sc.listing“If\n“);
break;
case RepeatK:
fprintf(sc.listing“Repeat\n“);
break;
case AssignK:
fprintf(sc.listing“Assign to: %s\n“tree->attr.name);
break;
case ReadK:
fprintf(sc.listing“Read: %s\n“tree->attr.name);
break;
case WriteK:
fprintf(sc.listing“Write\n“);
break;
case WhileK:
fprintf(sc.listing“While\n“);
break;
case DowhileK:
fprintf(sc.listing“Do\n“);
break;
case ForIncK:
fprintf(sc.listing“For(递增)\n“);
break;
case ForDecK:
fprintf(sc.listing“For(递减)\n“);
break;
default:
fprintf(sc.listing“Unknown ExpNode kind\n“);
break;
}
}
else if (tree->nodekind==ExpK)
{
switch (tree->kind.exp)
{
case OpK:
fprintf(sc.listing“Op: “);
sc.printToken(tree->attr.op);
break;
case ConstK:
fprintf(sc.listing“Const: %d\n“tree->attr.val);
break;
case IdK:
fprintf(sc.listing“Id: %s\n“tree->attr.name);
break;
default:
fprintf(sc.listing“Unknown ExpNode kind\n“);
break;
}
}
else fprintf(sc.listing“Unknown node kind\n“);
for (i=0;i printTree(tree->child[i]);
tree = tree->sibling;
}
indentno-=2;
}
TreeNode * Parse::newStmtNode(StmtKind kind)
{
TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
int i;
if (t==NULL)
fprintf(sc.listing“Out of memory error at line %d\n“sc.lineno);
else
{
for (i=0;i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 30575 2011-05-24 23:52 编译原理_Tiny+语法分析\Tiny\Debug\Parse.obj
文件 19077 2011-05-26 05:27 编译原理_Tiny+语法分析\Tiny\Debug\Scan.obj
文件 105421 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\Debug\StdAfx.obj
文件 118831 2011-05-26 05:27 编译原理_Tiny+语法分析\Tiny\Debug\Tiny.exe
文件 269768 2011-05-26 05:27 编译原理_Tiny+语法分析\Tiny\Debug\Tiny.ilk
文件 16347 2011-05-25 00:26 编译原理_Tiny+语法分析\Tiny\Debug\Tiny.obj
文件 5507044 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\Debug\Tiny.pch
文件 435200 2011-05-26 05:27 编译原理_Tiny+语法分析\Tiny\Debug\Tiny.pdb
文件 2568 2011-05-25 00:02 编译原理_Tiny+语法分析\Tiny\Debug\Tiny.res
文件 40543 2011-05-25 23:45 编译原理_Tiny+语法分析\Tiny\Debug\TinyDlg.obj
文件 222208 2011-05-26 05:28 编译原理_Tiny+语法分析\Tiny\Debug\vc60.idb
文件 372736 2011-05-26 05:27 编译原理_Tiny+语法分析\Tiny\Debug\vc60.pdb
文件 8191 2011-05-24 23:52 编译原理_Tiny+语法分析\Tiny\Parse.cpp
文件 1294 2011-05-24 23:40 编译原理_Tiny+语法分析\Tiny\Parse.h
文件 3543 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\ReadMe.txt
文件 1078 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\res\Tiny.ico
文件 396 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\res\Tiny.rc2
文件 774 2011-05-24 23:33 编译原理_Tiny+语法分析\Tiny\resource.h
文件 5017 2011-05-26 05:27 编译原理_Tiny+语法分析\Tiny\Scan.cpp
文件 2250 2011-05-24 22:17 编译原理_Tiny+语法分析\Tiny\Scan.h
文件 239 2011-05-26 05:29 编译原理_Tiny+语法分析\Tiny\source.tny
文件 206 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\StdAfx.cpp
文件 1054 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\StdAfx.h
文件 0 2011-05-24 22:07 编译原理_Tiny+语法分析\Tiny\syntax_tree.txt
文件 239 2010-11-29 16:08 编译原理_Tiny+语法分析\Tiny\test.txt
文件 35472 2011-05-25 00:02 编译原理_Tiny+语法分析\Tiny\Tiny.aps
文件 1172 2011-05-26 05:27 编译原理_Tiny+语法分析\Tiny\Tiny.clw
文件 2035 2011-05-24 21:56 编译原理_Tiny+语法分析\Tiny\Tiny.cpp
文件 4365 2011-05-24 23:56 编译原理_Tiny+语法分析\Tiny\Tiny.dsp
文件 516 2011-05-24 23:56 编译原理_Tiny+语法分析\Tiny\Tiny.dsw
............此处省略17个文件信息
- 上一篇:haze-tool补丁.zip
- 下一篇:非平稳信号的分析与处理
相关资源
- 集成功率放大器的实验报告
- 物联网虚拟仿真实验教学中心平台建
- 基于VHDL的简易CPU设计详细实验报告
- 编译原理综合课程设计
- H3C 综合实验VRRP+DHCP+RSTP综合实验
- 综合实验BGP综合实验
- 利用t2fk工具的DDos攻击实验步骤.docx
- 北邮下一代网络实验报告
- 西北农林科学大学计算机网络实验一
- 电子-复件实验15RTC模拟指针时钟实验
- 电表的改装与校准的实验预习报告及
- 山大计算机网络实验报告完整
- 机器学习分类算法数据旅游类数据
- 编译原理课后习题答案 清华大学 第二
- DSP实验报告DSP实验报告
- F103单定时器4路任意频率PWM输出实验
- 《统计学习导论——基于R》Chapter5+
- 编译原理课件_本科版
- 哈工大人工智能导论实验代码以及报
- 《计算机操作系统实验指导》郁红英
- 网络实验 LWIP无操作系统移植
- 中南大学数字图像处理实验报告
- RTC时钟实验
- tpc-2003教师实验指导书破密
- DHT11数字温湿度传感器实验.rar
- 山东大学linux实验.zip
- 中南大学通信工程-通信电子线路课内
- EOS 操作系统实验教程
- 哈工大计算机系统安全实验
- 二维稳态导热的数值计算 实验报告
评论
共有 条评论