资源简介
这是我在大三的时候解释器实践的课程设计,是用C#开发的,包括词法分析、语法分析和编译执行阶段,文档比较齐全,可供初步学习解释器的同学看看,但不鼓励直接拿来当作业用,起码也得自己看看源码,分析分析下,对自己也好
代码片段和文件信息
/*
* 作者:黎国梁
* 班级:三班
* 学号:200632580088
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Regularexpressions;
using System.IO;
namespace CMMCompiler
{
///
/// AccessTable类包含中间代码访问符号表的方法
///
class AccessTable : MidCode
{
//可以为VARGTARGSARG和常数
string ARG = ““;
//可以为标识符
string IN_1 = ““;
//数组下标为标识符或者常数如果不是数组为空.
string IN_2 = ““;
//为纯数字用来判断数组下标是否为常数 还是 标识符
string pattern = @“^[0-9]+$“;
///
/// 此方法,分解VARG(A)等,为VARGA,返回A
///
/// 需要分解的对象
/// 返回A变量
private string find_Table_Kind(string result)
{
int n = 0;
ARG = ““;
IN_1 = ““;
IN_2 = ““;
char[] c = result.ToCharArray();
while (n < c.Length && c[n].ToString() != “(“)
{
ARG = ARG + c[n].ToString(); //得到ARG用于访问表名
n++;
}
n++;
while (n < c.Length && c[n].ToString() != “)“ && c[n].ToString() != “[“)
{
IN_1 = IN_1 + c[n].ToString(); //得到IN_1用于查找表内成员
n++;
}
n++;
while (n < c.Length && c[n].ToString() != “]“)
{
IN_2 = IN_2 + c[n].ToString(); //得到IN_2用于访问数组内部变量
n++;
}
return IN_1;
}
///
/// 此方法返回result对应的所在表的value值
///
/// 需要返回值的对象
///
public string getValue(string result)
{
IN_1 = find_Table_Kind(result);
switch (ARG)
{
case “VARG“: //标识符
int indexID = IDlist.IndexOf(IN_1);
IDtable BStmp = (IDtable)IDtablelist[indexID];
return BStmp.Value;
case “TARG“: //临时变量
int indexTempID = TempIDlist.IndexOf(IN_1);
TempIDtable LStmp = (TempIDtable)TempIDtablelist[indexTempID];
return LStmp.Value;
case “SARG“: //数组
try //如果数组出界返回一个空值null
{
if (!Regex.IsMatch(IN_2 pattern)) //如果数组下标为常数
{
int indexBS1 = IDlist.IndexOf(IN_2);
IDtable BStmp1 = (IDtable)IDtablelist[indexBS1];
IN_2 = BStmp1.Value; //得到数组下标的值
}
int indexSZ = SZlist.IndexOf(IN_1);
SZtable SZtmp = (SZtable)SZtablelist[indexSZ];
if (Convert.ToInt32(IN_2) > Convert.ToInt32(SZtmp.Length) - 1)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6656 2009-01-01 12:45 CMM编译器\CMMCompiler\CMMCompiler\AccessTable.cs
文件 39359 2009-01-01 12:46 CMM编译器\CMMCompiler\CMMCompiler\Analysis.cs
文件 94208 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\bin\Debug\CMMCompiler.exe
文件 151040 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\bin\Debug\CMMCompiler.pdb
文件 14328 2009-12-20 13:16 CMM编译器\CMMCompiler\CMMCompiler\bin\Debug\CMMCompiler.vshost.exe
文件 490 2008-04-30 03:19 CMM编译器\CMMCompiler\CMMCompiler\bin\Debug\CMMCompiler.vshost.exe.manifest
文件 89600 2009-10-26 11:12 CMM编译器\CMMCompiler\CMMCompiler\bin\Release\CMMCompiler.exe
文件 144896 2009-10-26 11:12 CMM编译器\CMMCompiler\CMMCompiler\bin\Release\CMMCompiler.pdb
文件 1 2008-12-30 14:56 CMM编译器\CMMCompiler\CMMCompiler\ClassDiagram1.cd
文件 5289 2009-10-26 11:11 CMM编译器\CMMCompiler\CMMCompiler\CMMCompiler.csproj
文件 5814 2007-12-30 21:53 CMM编译器\CMMCompiler\CMMCompiler\Form3.resx
文件 16185 2009-01-01 12:46 CMM编译器\CMMCompiler\CMMCompiler\Interpret.cs
文件 22683 2009-01-01 12:46 CMM编译器\CMMCompiler\CMMCompiler\LexicalAnalysis.cs
文件 13294 2008-10-09 16:20 CMM编译器\CMMCompiler\CMMCompiler\Logo.ico
文件 16134 2009-01-01 12:50 CMM编译器\CMMCompiler\CMMCompiler\MainForm.cs
文件 23445 2009-01-01 12:50 CMM编译器\CMMCompiler\CMMCompiler\MainForm.Designer.cs
文件 26811 2009-01-01 12:50 CMM编译器\CMMCompiler\CMMCompiler\MainForm.resx
文件 22715 2009-01-01 12:49 CMM编译器\CMMCompiler\CMMCompiler\MidCode.cs
文件 5052 2009-01-01 13:03 CMM编译器\CMMCompiler\CMMCompiler\obj\CMMCompiler.csproj.FileListAbsolute.txt
文件 995 2009-12-20 13:16 CMM编译器\CMMCompiler\CMMCompiler\obj\Debug\CMMCompiler.csproj.FileListAbsolute.txt
文件 777 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\obj\Debug\CMMCompiler.csproj.GenerateResource.Cache
文件 94208 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\obj\Debug\CMMCompiler.exe
文件 13860 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\obj\Debug\CMMCompiler.MainForm.resources
文件 151040 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\obj\Debug\CMMCompiler.pdb
文件 4380 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\obj\Debug\CMMCompiler.Properties.Resources.resources
文件 5120 2009-10-26 11:13 CMM编译器\CMMCompiler\CMMCompiler\obj\Debug\TempPE\Properties.Resources.Designer.cs.dll
文件 1011 2009-10-26 11:12 CMM编译器\CMMCompiler\CMMCompiler\obj\Release\CMMCompiler.csproj.FileListAbsolute.txt
文件 777 2009-10-26 11:12 CMM编译器\CMMCompiler\CMMCompiler\obj\Release\CMMCompiler.csproj.GenerateResource.Cache
文件 89600 2009-10-26 11:12 CMM编译器\CMMCompiler\CMMCompiler\obj\Release\CMMCompiler.exe
文件 13860 2009-10-26 11:12 CMM编译器\CMMCompiler\CMMCompiler\obj\Release\CMMCompiler.MainForm.resources
............此处省略48个文件信息
- 上一篇:winpcap抓包并进行协议解析
- 下一篇:c++模拟网上购物商城
相关资源
- C语言编译器的设计与实现.doc
- tiny+编译器C++实现
- 编译原理课程设计-C语言子集编译器
- 一个C语言编译器源码
- 可以将C语言转变为汇编的编译器
- LL1语义分析的C语言子集编译器
- 编译原理简易C编译器
- plo编译器 c语言 含测试 以及实验报告
- picc8.05编译器
- 计算机二级VC++2010学习版
- SNL语言编译器GUI VC++ 2008版 MFC实现可
- winTC(windows下的c语言编译器
- SNL语言编译器C++实现
- MinGW Windows 下gnu C/C++编译器
- sdcc编译器v2.9.0
- C-语言编译器可运行生成汇编代码
- 简单函数绘图语言的解释器
- C-Minus编译器
- VC++2010 Express计算机二级考试所用编译
- Borland C++ 5.5 编译器
- Wava 6000 (内有comp86汇编编译器,com
- 经典的编译器gcc2.95.3安装文件已编译
- pl/0语言的编译器
- lex yacc 文献 资料
- dev C++编译器
- 编译原理简单的编译器源码
- C语言实现一个编译器-编译原理南开大
- PL0编译器词法检查与语法分析器
- C语言简化编译器前端 编译原理 LR1
- C-Minus编译器 编译原理实验
评论
共有 条评论