云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 词法分析器设计实验报告

词法分析器设计实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 19:44:44

String str1=\ int i = 0;

int[] a = new int[10]; while (stack.Count != 0) {

a[i] = stack.Pop(); i++; }

while (i != 0) {

i--;

str1 = str1 + a[i].ToString(); stack.Push(a[i]); }

return str1; }

private void mainControlProgram() {

String s=ACTION(S_Stack.Peek(),In_Stack[0]); int k = 1;

String data1 = k.ToString(), data2 = getStackString(S_Stack), data3 = Sym_Stack, data4 = In_Stack;

String action = \ k++;

while(s!=\ int s1 = getStringInt(ACTION(S_Stack.Peek(), In_Stack[0])); if (ACTION(S_Stack.Peek(), In_Stack[0])==null||ACTION(S_Stack.Peek(), In_Stack[0]).Length == 0) ;

else if (ACTION(S_Stack.Peek(),In_Stack[0])[0]=='s')//ACTION[s,a]为移进 {

action = \\状态\入栈\ S_Stack.Push(s1);//状态入栈

Sym_Stack = Sym_Stack + In_Stack[0];//符号入栈

In_Stack = Reverse(Reverse(In_Stack).Remove(In_Stack.Length - 1));//输入串出栈

}

else if (ACTION(S_Stack.Peek(),In_Stack[0])[0]=='r')//ACTION[s,a]为归约 {

String s_old = \

for (int i = 0; i < Production[s1-1].Production.Length; i++) {

S_Stack.Pop();//状态出栈

s_old = s_old + Sym_Stack[Sym_Stack.Length - Production[s1 -

1].Production.Length+i]; }

int s_top=S_Stack.Peek();

S_Stack.Push(GOTO(s_top,Production[s1-1].Nonterminal));//状态入栈 Sym_Stack = Sym_Stack.Remove(Sym_Stack.Length - Production[s1-1].Production.Length);//符号出栈

Sym_Stack = Sym_Stack + Production[s1-1].Nonterminal;//符号入栈 String s_new = Production[s1 - 1].Nonterminal.ToString();

action = s + \+ s_new + \+ s_old + \归约,\+ \+ s_top.ToString() + \- 1].Nonterminal).ToString()+\入栈\ }

if (k == 1) ; else

addData(data1, data2, data3, data4, action); data1 = k.ToString();

data2 = getStackString(S_Stack); data3 = Sym_Stack; data4 = In_Stack; action = \ k++;

s = ACTION(S_Stack.Peek(), In_Stack[0]); }

addData(data1, data2, data3, data4, \:分析成功 \ }

private void button1_Click(object sender, EventArgs e) {

error = 0;

dataGridView2.Rows.Clear(); InitAction(); InitGoto();

InitProduction(); addActionData(); addGotoData(); InitStack();

mainControlProgram(); } } }

七、实验总结

本次实验通过对LR(1)分析表的构造,实现了LR(1)分析器的设计。通过上次对C#的学

习,本次实验完全采用面向对象的思想对LR(1)分析器进行设计,包括类的构造和函数的封装。本次实验通过测试不同的输入串,程序均完美运行。通过本次实验,更加锻炼了动手编程的能力,和对LR(1)分析法的掌握。

搜索更多关于: 词法分析器设计实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

String str1=\ int i = 0; int[] a = new int[10]; while (stack.Count != 0) { a[i] = stack.Pop(); i++; } while (i != 0) { i--; str1 = str1 + a[i].ToString(); stack.Push(a[i]);

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com