实验三 递归下降分析程序实验

一、        实验目的

     编制一个递归下降分析程序。

二、        实验内容和要求

输入:正规式

输出:判断该正规式是否正确。

三、        实验方法、步骤及结果测试

   1.    源程序名:递归下降分析程序.c

可执行程序名:递归下降分析程序.exe

  2.

3.主要程序段及其解释:

#include<stdio.h>
#include<string>
char str[50];
int index=0;
void E();                //E->TX;
void X();                //X->+TX | e
void T();                //T->FY
void Y();                //Y->*FY | e
void F();                //F->(E) | i 

int main()                /*递归分析*/
{
    int len;
    int m;
    printf("请输入要测试的次数:");
    scanf("%d",&m);
    while(m--)
    {
        printf("请输入字符串(长度<50>):\n");
        scanf("%s",str);
        len=strlen(str);
        //str[len]=‘#‘;
        str[len+1]=‘\0‘;
        E();
        printf("%s为合法符号串!\n",str);
        strcpy(str,"");
        index=0;
    } return 0;
} 

void E()
{     T();    X();}
void X()
{
    if(str[index]==‘+‘)
    {     index++;
        T();
        X();
    } }
void T()
{     F();     Y(); }
void Y()
{     if(str[index]==‘*‘) {
        index++;
        F();
        Y();
    } }
void F()
{
    if(str[index]==‘i‘)
    {    index++; }
    else if (str[index]==‘(‘)
    {
        index++;
        E();
        if(str[index]==‘)‘)
        {     index++; }else
        {
            printf("\n非法的符号串!\n");
            exit (0);
        }     }
    else
    {
        printf("非法的符号串!\n");
        exit(0);
    }
}

4.      运行结果及分析

四、        实验总结

通过这次的实验,对于递归又有了新的认识,对于工作原理也进一步的掌握了。本次实验对我帮助很大。

时间: 2024-10-28 19:41:16

实验三 递归下降分析程序实验的相关文章

实验三 递归下降分析法

实验三递归下降分析程序实验 专业 商软2班   姓名 蓝海鹏  学号 201506110171 一.        实验目的      编制一个使用递归下降分析法实现的语法分析程序. 二.        实验内容和要求 输入:正规式 输出:判断该正规式是否正确. 三.        实验方法.步骤及结果测试 1.      源程序名:171-蓝海鹏.c 可执行程序名:171蓝海鹏.exe 2.      原理分析及流程图 3.      主要程序段: 1 #include<stdio.h> 2

实验三、&#160;递归下降分析程序实验

实验三. 递归下降分析程序实验 专业 软件工程   姓名 麦振澎 学号 201506110162 一.        实验目的           通过设计,编制,调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构的分析. 二.        实验内容和要求 输入:源程序字符串 输出:正确或者错误 三.        实验方法.步骤及结果测试             1.      源程序名: 递归下降语法分析程序.c       2.      原理分析及流程图

实验三、 递归下降分析程序实验

一.        实验目的     练习构造递归下降语法分析程序的方法,熟悉上下文无关文法的使用,加深对课堂教学的理解:提高语法分析方法的实践能力 二.        实验内容和要求 对于给定的文法G[E]               E->TE'              E'->+TE' | ε             T->FT'             T'->*F T'| ε             F->(E) | i 采用递归下降语法分析法编写语法分析程序,该

软件构造实验三-递归下降分析分析法

[实验目的] (1)掌握自上而下语法分析的要求与特点. (2)掌握递归下降语法分析的基本原理和方法. (3)掌握相应数据结构的设计方法. [实验内容] 用递归下降法编写一个语法分析程序,使之与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子. [实验要求] 对下列文法,用递归下降分析法对任意输入的符号串进行分析: E->TG    G->+TG|-TG   G->ε T->FS    S->*FS|/FS    S->ε F->(E)

递归下降分析程序报告

实验一.递归下降分析程序实验 专业 商业软件工程   姓名 姓名 学号 201506110148 一.        实验目的   编译递归下降分析程序识别c语言文法 二.        实验内容和要求 简单写出c语言文法 分析c语言文法是否为LL1文法,若不是,修改成LL1文法. 编写程序实现对c语言LL1文法判断是否有语法错误 三.        实验方法.步骤及结果测试  1.      源程序名:递归下降分析程序 源程序名递归下降分析程序.c 可执行程序名:递归下降分析程序.exe 2.

递归下降分析程序

一.      实验目的 编制一个递归下降分析程序 LL(1)文法: E->TE1 E1->+TE1|-TE1|∑ T->FT1; T1->*FT1|/FT1|∑ F->(E)|i|1 二.      实验内容和要求 输入:LL(1)文法 判断:每遇到一个终结符,则判断当前读入的单词符号是否与该终结符相匹配,若匹配,则继续读取下一个单词符号,若不匹配,则进行错误处理. 每遇到一个非终结符,则调用相应的分析子程序 一.      实验方法.步骤及结果测试   1.   源程序名

LL(1)文法的判断,递归下降分析程序

1. 文法 G(S): (1)S -> AB (2)A ->Da|ε (3)B -> cC (4)C -> aADC |ε (5)D -> b|ε 验证文法 G(S)是不是 LL(1)文法? 答: FIRST集: FIRST(Da) = {b, a } FIRST(?) = { ? } FIRST(aADC) = { a } FIRST(b) = { b } FOLLOW集: FOLLOW(A) = { c,b,a , # } FOLLOW(B) FOLLOW(D),FIRS

编译原理 - 实验三 - 递归下降语法分析器的调试及扩展

一. 语法分析介绍 语法分析是编译过程的核心部分,它的主要任务是按照程序语言的语法规则,从由词法分析输出的源程序符号串中识别出各类语法成分,同时进行语法检查,为语义分析和代码生成做准备.执行语法分析任务的程序叫语法分析程序或语法分析器. 二. 所实现的语义分析和代码生成程序能处理什么语句 (1)简单变量的声明语句 (2)表达式语句 (3)if语句. (4)while语句 (5)for语句 (6)write语句 (7)read语句 (8)do语句. (9)处理过程调用和返回 三.实验过程 ①用VC

构造递归下降分析程序

词法分析程序scaner( ),sym:error( ) 每个函数名是相应的非终结符,函数体是根据右部符号串的结构编写. 当遇到终结符时,则编写语句if(当前读入的符号==a)则读入下一个单词当遇到非终结符A时,则编写语句调用A( )当遇到规则A→ε时,则编写语句调用if(当前读入的符号? FOLLOW(A))error( ) 对于给定的文法G[E] : E→E+T|E-T|TT→T*F| T/F|FF→(E)|i 消除左递归后的文法是:E→TE' E'→+TE'|-TE'|∑ T→FT' T'