编译原理算符优先算法语法分析实验报告

更新时间:2023-10-06 17:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数学与计算机学院编译原理实验报告

年级专业 学号 姓名 成绩 实验题目 算符优先分析法分析器的设计 实验日期

一、 实验目的:

设计一个算符优先分析器,理解优先分析方法的原理。 二、 实验要求:

设计一个算符优先分析器

三、 实验内容:

使用算符优先分析算法分析下面的文法: E’ → #E# E → E+T | T T → T*F | F F → P^F | P P → (E) | i

其中i可以看作是一个终结符,无需作词法分析。具体要求如下:

1、如果输入符号串为正确句子,显示分析步骤,包括分析栈中的内容、优先关系、输入符号串的变化情况;

2、如果输入符号串不是正确句子,则指示出错位置。

四、 实验结果及主要代码:

1.主要代码 void operatorp() { char s[100]; char a,Q; int k,j,i,l; string input,temp; cin>>input; cout<<\步骤\栈\优先关系\当前符号\剩余输入串\移进或归约\ k=1;s[k]='#';i=1; do { a=input[0]; temp=\ for(l=1;l')

{

cout<<'('<

for(l=1;l

cout<<'>'<<'\\t'< Q=s[j];

if(svt(s[j-1])) j=j-1; else j=j-2;

if(search(s[j],Q)=='<')

{

cout<<\归约\归约 break; } } temp=\

for(l=j+1;l

cout<<'('<

cout<//优先关系 //当前符号 //剩余输入串

i++; k=k+1;s[k]=a; } //移进

else if(search(s[j],a)=='Y') {

cout<<'='<<'\\t'< cout<<'?'<<'\\t'<2.实验结果

本文来源:https://www.bwwdw.com/article/j17d.html

Top