编译原理语法分析实验报告

时间:2024.4.17

实验二  语法分析实验报告

一、      实验内容

1.1 实验目的

编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析.

1.2 实验要求

      利用C语言编制递归下降分析程序,并对简单语言进行语法分析

1.2.1待分析的简单语言的词法

用扩充的BNF表示如下:

            (1) <程序>::={<声明序列><语句序列>}

          (2)<语句串>::=<语句>{;<语句>}

            (3) <语句>::=<赋值语句>

                     (4)   <赋值语句>::=ID:= <表达式>

            (5) <表达式>::=<项>{(+<项>|-<项>}

            (6) <项>::=<因子>{*<因子>|/<因子>}

            (7) <因子>::=ID|NUM|(<算术表达式>)

1.2.2实验要求说明

输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。

   

二、实验程序的总体结构框架

                         图1. 语法分析主程序示意图                                                 

                                         

 

三、  关键技术的实现方法

Scanner函数定义已在实验一给出,本实验不再重复给出

void Irparser()

{

    kk=0;

    if(syn==1)

    { 

        scaner();

        yucu();

        if(syn==6)

        {        

            scaner();

            if(syn==0 && (kk==0))

            cout<<"success!"<

        }

        else

        {

            if(kk!=1)

            cout<<"缺end!"<

            kk=1;

        }

    }

   else {cout<<"缺begin!"<

   return;

}

void yucu()

{

    statement();

    while(syn==26)

    {

        scaner();

        statement();

    }

   return;

}

void statement()

{

    if(syn==10)

    {

        scaner();

        if(syn==18)

        {

            scaner();

            expression();

        }

        else{cout<<"赋值号错误"<

    }

    else{cout<<"语句错误"<

    return;

}

void expression()

{

    term();

    while((syn==13)||(syn==14))

    {

        scaner();

        term();

    }

    return;

}

void term()

{

    factor();

    while((syn==15)||(syn==16))

    {

        scaner();

        factor();

    }

    return;

}

void factor()

{

    if((syn==10)||(syn==11))

        scaner();

    else if(syn==27)

    {

        scaner();

        expression();

        if(syn==28)

            scaner();

        else{cout<<")错误"<

    }

    else{cout<<"表达式错误"<

    return;

}

void main()

{

    p=0;

    cout<<"Please input string"<

    do

    {

        cin.get(ch);

        if(ch!=”\n”)

        prog[p++]=ch;

    }while(ch!='#');

    p=0;

    scaner();

    Irparser();

}

四、实验心得

语法分析是编译过程的核心部分,它的主要功能是按照程序语言的语法规则,从由词法分析输出的源程序符号串中识别出各类语法成分,同时进行语法检查,为语义分析和代码生成做准备。

从这次语法分析实验中我感到语法分析的过程要比之前的词法分析实验复杂的多,其中涉及到文法规则,自顶向下分析方法和许多编程的细节问题,有一处不正确,语法分析也不能成功。通过这次的语法分析实验,我对如何将文法规则转换为实际的程序代码有了进一步的认识,并且对语法分析过程有了更深入的认识。


第二篇:编译原理语法分析实验报告(含有源代码)


《编译原理》 实验报告

编译原理语法分析实验报告含有源代码

编译原理语法分析实验报告含有源代码

编译原理语法分析实验报告含有源代码

编译原理语法分析实验报告含有源代码

编译原理语法分析实验报告含有源代码

编译原理语法分析实验报告含有源代码

编译原理语法分析实验报告含有源代码

更多相关推荐:
编译原理 语法分析 实验报告

编译原理实验报告编译原理实验报告1编译原理实验报告一实验内容设计编制并调式一个语法分析程序加深对语法分析原理的理解二实验目的及要求利用C或C编制确定的自顶向下预测分析语法分析程序并对简单语言进行语法分析21待分...

编译原理LL(1)语法分析实验报告

学号20xx2798专业软件工程姓名薛建东实验日期20xx0408教师签字成绩实验报告实验名称LL1语法分析实验目的通过完成预测分析法的语法分析程序了解预测分析法和递归子程序法的区别和联系使了解语法分析的功能掌...

编译原理语法分析实验报告

目录一语法分析方法11判断为算符优先文法12求FirstVT集和LastVT集13根据FirstVT和LastVT集构造算符优先表1二程序设计21总体设计22子程序设计2三程序中的结构说明31重要函数介绍32函...

编译原理实验报告词法分析

编译原理实验报告词法分析器学院计算机科学与技术时间20xx69一问题描述选择计算机高级程序语言之一C语言运用恰当的词法分析技术线路设计和实现其对应的词法分析器提示技术线路选择如下两种之一正则式NFADFAmin...

编译原理语法分析实验报告

南华大学计算机科学与技术学院实验报告20xx20xx学年度第二学期课程名称实验名称姓名专业地点寻友旭软件工程6413学号20xx4350227编译原理语法分析班级软件工程052班教师陈星南华大学计算机科学与技术...

编译原理-语法分析实验报告

课程实验报告课程名称:编译原理(语法分析)专业班级:信息安全1001班学号:姓名:指导教师:报告日期:20XX/11/8计算机科学与技术学院1、实验目的1)设计并编制一个语法分析程序,加深对语法分析程序中递归下…

编译原理语法分析实验报告

实验2语法分析1实验题目和要求题目语法分析程序的设计与实现实验内容编写语法分析程序实现对算术表达式的语法分析要求所分析算术表达式由如下的文法产生EETETTTTFTFFFidEnum实验要求在对输入表达式进行分...

编译原理词法分析器语法分析器实验报告

编译技术课程设计班级学号姓名指导老师二零一零年七月一目的ltlt编译技术gtgt是理论与实践并重的课程而其实验课要综合运用一二年级所学的多门课程的内容用来完成一个小型编译程序从而巩固和加强对词法分析语法分析语义...

北邮编译原理LR语法分析程序实验报告

LR语法分析程序实验报告说明该程序使用实现对算术表达式自底向上的语法分析并且在对输入表达式进行分析的过程中输出分析动作移进或者用哪个产生式进行规约该程序使用的是LR语法分析程序手动构造了识别所有活前缀的DFA为...

北邮 编译原理 语义分析实验报告

编译原理第六章语义分析目录1234实验题目和要求2实验分析和思考3翻译方案4LR实现自底向上分析摘自语法分析实验541构造识别所有活前缀的DFA542构造LR分析表65S属性定义的自底向上实现751扩充分析栈7...

实验三报告:编译原理语义分析

编译原理实验词义分析指导老师学生学号班级时间20xx541文件构成2代码中宏函数变量宏定义函数变量3简易流程图参见图片函数调用图副本bmp4实验结果使用的源代码生成的词最终代码分析5改进增加注释来表明生成经历的...

编译原理实验报告3

编译原理实验报告表达式语法分析表达式语法分析实验报告一实验题目设计一个简单的表达式语法分析器采用递归下降方法设计实现二实验目的1了解形式语言基础及其文法运算2熟悉语法分析原理及4种常用的语法分析方法其中四种算法...

编译原理语法分析实验报告(38篇)