资源简介
实现了一个可用的C++语法分析器,从文件读取源代码,从左到右扫描每行该语言源程序的符号,拼成单词,换成统一的内部表示(token)。识别标识符、数字、特殊字符、关键字等类别,删除注释行和空白符,打印出每行包含的记号的二元形式到目标文件中去
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;
using System.Collections;
namespace 词法分析
{
class analyseToken
{
protected string sourceFileName;
protected string builtFileName;
//Stack st = new Stack(); //用于括号匹配的栈
char[] prog = new char [1000]; //暂存输入字符
char[] token = new char[20];
char ch;
int p = 0;
int sym = 0;
int n;
int errorLine; //发生错误的行号
string[] keyword = { “if“ “else“ “while“ “for“ “do“ “return“
“int“ “main““void““double““float““case““for““do““short““static“
“true““false““try““delete““class““break““bool““goto““default““using“
“new““continue““switch““throw““unsigned““signed““sizeof“}; //关键词数组
public analyseToken() //构造函数
{
Array.Clear(prog(char)01000);
}
public void setSourceFileName(string file)
{
sourceFileName = file;
}
public void setBuiltFileName(string file)
{
builtFileName = file;
}
protected void GetToken()
{
ch = prog[p++];
while (ch == ‘ ‘ || ch == ‘\n‘ || ch == ‘\t‘ ||(int)ch == 13||(int)ch==9) { ch = prog[p++]; }
for (n = 0; n < 20; n++)
{
token[n] = ‘\0‘;
}
n = 0;
if ((int)ch == 0)
{
return;
}
if ((ch >= ‘a‘ && ch <= ‘z‘) || (ch >= ‘A‘ && ch <= ‘Z‘)||ch == ‘_‘)
{
sym = 1;
do
{
token[n++] = ch;
ch = prog[p++];
} while ((ch >= ‘a‘ && ch <= ‘z‘) || (ch >= ‘A‘ && ch <= ‘Z‘)|| (ch >= ‘0‘ && ch <= ‘9‘)||ch == ‘_‘);
sym = 2;
string str1 = null;
for (int i = 0; token[i] != ‘\0‘; i++)
{
str1 += token[i];
}
for (n = 0; n<33;n++)
{
if (String.Compare(str1 keyword[n]) == 0) //关键词匹配
{
sym = n + 23;
}
}
p--;
}
//else if (ch == ‘{‘||ch == ‘}‘ || ch == ‘(‘ || ch == ‘)‘ || ch == ‘[‘ || ch == ‘]‘) //括号处理
//{
// if (ch == ‘{‘)
// {
// sym = 3;
// //st.Push(ch);
// token[0] = ch;
// }
// else if (ch == ‘}‘)
// {
// //if ((char)st.Peek() == ‘{‘)
// //{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 34 2018-09-27 20:32 词法分析\.git\COMMIT_EDITMSG
文件 966 2018-09-27 20:47 词法分析\.git\config
文件 73 2018-09-26 20:23 词法分析\.git\desc
文件 95 2018-10-27 21:29 词法分析\.git\FETCH_HEAD
文件 23 2018-09-26 20:23 词法分析\.git\HEAD
文件 478 2018-09-26 20:23 词法分析\.git\hooks\applypatch-msg.sample
文件 896 2018-09-26 20:23 词法分析\.git\hooks\commit-msg.sample
文件 189 2018-09-26 20:23 词法分析\.git\hooks\post-update.sample
文件 424 2018-09-26 20:23 词法分析\.git\hooks\pre-applypatch.sample
文件 1642 2018-09-26 20:23 词法分析\.git\hooks\pre-commit.sample
文件 1348 2018-09-26 20:23 词法分析\.git\hooks\pre-push.sample
文件 4951 2018-09-26 20:23 词法分析\.git\hooks\pre-reba
文件 544 2018-09-26 20:23 词法分析\.git\hooks\pre-receive.sample
文件 1239 2018-09-26 20:23 词法分析\.git\hooks\prepare-commit-msg.sample
文件 3610 2018-09-26 20:23 词法分析\.git\hooks\update.sample
文件 1651 2018-09-27 20:32 词法分析\.git\index
文件 240 2018-09-26 20:23 词法分析\.git\info\exclude
文件 705 2018-09-27 20:32 词法分析\.git\logs\HEAD
文件 705 2018-09-27 20:32 词法分析\.git\logs\refs\heads\master
文件 291 2018-09-27 20:48 词法分析\.git\logs\refs\remotes\origin\master
文件 151 2018-09-27 20:49 词法分析\.git\ms-persist.xm
文件 159 2018-09-27 20:32 词法分析\.git\ob
文件 211 2018-09-27 20:32 词法分析\.git\ob
文件 336 2018-09-26 20:23 词法分析\.git\ob
文件 1191 2018-09-27 15:57 词法分析\.git\ob
文件 1665 2018-09-26 20:23 词法分析\.git\ob
文件 751 2018-09-26 20:23 词法分析\.git\ob
文件 2497 2018-09-26 20:23 词法分析\.git\ob
文件 2697 2018-09-27 20:32 词法分析\.git\ob
文件 186 2018-09-26 20:23 词法分析\.git\ob
............此处省略158个文件信息
- 上一篇:华中科技大学 编译原理 词法分析 实验报告
- 下一篇:多项式秦九韶算法实现
相关资源
- c#与西门子1500通讯
- c++调用C# COM 参数是结构体数组
- CTP上期技术平台API及C#封装更新到CT
- C#神思二代身份证读卡程序 demo
- C#调用百度地图获取经纬度
- 03 C#与C++dll互相传递字符串.rar
- c# 华大HD900身份证阅读器操作类
- 即时通讯开发源码终极版C#.NETC++都有
- 词法分析器有去除注释功能
- C#C++混合编程C#调用非托管C++类
- c#图书管理系统+详细数据库设计文档
- Visual Studio 2010 Express 学习版
- C++调用C#库例程
- c#与STK开发
- OPC Data Access 3.00 Source Code
- C#/C++麦克风插拔检测
- 使用C#创建webservice服务,并使用服务
- CTP接口 C#封装版
- C# 版VNC、远程连接
- 求解一元四次方程(vbvcc#excelhtml)-
- 自定义词法规则的词法分析器
- C#游戏开发快速入门
- [原创]实现用VB.Net(C#)开发K3 BOS 插件
- 简易词法分析器——基于C语言
- C# To C++ Converter 17.10.2 (最新破解版
- C语言 wav文件读取头文件和数据
- C#火车订票系统
- C++调用C#dll代码
- C#调用C++的dll,回调函数,string和in
- C++dll生成给C#调用
评论
共有 条评论