实验四递归下降语法分析程序设计

#include<stdio.h>

#include<string>

char str[10];   //记录要分析的字符串

int x=0;        //记录第一个字符

void E();          

void X();          

void T();          

void Y();

void F();

int main()

{

    int len;

    printf("请输入算数表达式:");

    scanf("%s",str);

    len=strlen(str);

    str[len]=‘#‘;

    str[len+1]=‘\0‘;

    E();

    printf("\nTrue!\n");

    strcpy(str,"");

    x=0;

    return 0;

}

void E()

{

    T();

    X();

}

void X()

{

    if(str[x]==‘+‘||str[x]==‘-‘)

    {

        x++;

        T();

        X();

    }

}

void T()

{

    F();

    Y();

}

void Y()

{

    if(str[x]==‘*‘||str[x]==‘/‘)

    {

        x++;

        F();

        Y();

    }

}

void F()

{

    if(str[x]>=‘a‘&&str[x]<=‘z‘)

    {

        x++;

    }

    else if(str[x]>=0&&str[x]<=9)

    {

        x++;

    }

    else if (str[x]==‘(‘)

    {    

        x++;

        E();

        if(str[x]==‘)‘)

        {

            x++;

        }

        else

        {

            printf("\nError!\n");

            exit(0);

        }

    }

    else

    {

        printf("\nError!\n"); exit(0); } }

  结果如下:

时间: 2024-12-25 15:02:51

实验四递归下降语法分析程序设计的相关文章

1217 实验四 递归下降语法分析程序设计

#include<stdio.h> #include<string> char str[10]; 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; printf("请输入表达式:"); scanf(&qu

1217实验四 递归下降语法分析程序设计

#include <stdio.h>#include<dos.h>#include<stdlib.h>#include<string.h>char a[50] ,b[50],d[200],e[10];char ch;int n1,i1=0,flag=1,n=5;int total=0;int E();int E1();int T();int G();int S();int F();void input();void input1();void output(

实验四 递归下降语法分析程序设计

#include<stdio.h> #include <ctype.h> #define ok 1 #define error 0 #define MAXREGLUARLONG 30 #define MAXSTATELONG 30 #define MAXCAHRSLONG 30 typedef int state; int iCurrentState=0; //初态以1开始 int iPreState=0; int iLastForkState=0; int iForkState=

12.16实验四 递归下降语法分析程序设计

#include<stdio.h> char curr; char LL1[1000]; int N=0; void scaner(); int digital(){ //panduanshifouweishuzi if(curr >= '0' && curr <= '9') { return 1; } else { return 0; } } int english(){ if(curr >= 'a' && curr<='z' || c

实验二 递归下降语法分析

一.实验目的: 利用C语言编制递归下降分析程序,并对简单语言进行语法分析. 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. 二.实验原理 每个非终结符都对应一个子程序. 该子程序根据下一个输入符号(SELECT集)来确定按照哪一个产生式进行处理,再根据该产生式的右端: 每遇到一个终结符,则判断当前读入的单词是否与该终结符相匹配,若匹配,再读取下一个单词继续分析:不匹配,则进行出错处理 每遇到一个非终结符,则调用相应的子程序 三.实验要求说明 输入单词串,以“#

12 实验二 递归下降语法分析 11/26

一.实验目的: 利用C语言编制递归下降分析程序,并对简单语言进行语法分析. 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. 二.实验原理 每个非终结符都对应一个子程序. 该子程序根据下一个输入符号(SELECT集)来确定按照哪一个产生式进行处理,再根据该产生式的右端: 每遇到一个终结符,则判断当前读入的单词是否与该终结符相匹配,若匹配,再读取下一个单词继续分析:不匹配,则进行出错处理 每遇到一个非终结符,则调用相应的子程序 三.实验要求说明 输入单词串,以“#

1223 递归下降语法分析程序设计

#include<stdio.h> #include<string.h> char str[10]; int index=0; void E(); //E->TX; void X(); //X->+TX|-TX| e void T(); //T->FY void Y(); //Y->*FY |/fy| e void F(); //F->(E) | id int id(); //id int main() { int len; int m; printf

1431递归下降语法分析程序设计

#include<stdio.h>char curr;char LL1[1000];int N=0; void scaner(); int digital(){ //panduanshifouweishuzi if(curr >= '0' && curr <= '9') { return 1; } else { return 0; } } int english(){ if(curr >= 'a' && curr<='z' || curr

1231递归下降语法分析程序设计

#include<stdio.h> #include<string> char str[10]; //记录要分析的字符串 int x=0; //记录第一个字符 void E(); void X(); void T(); void Y(); void F(); int main() { int len; printf("请输入算数表达式:"); scanf("%s",str); len=strlen(str); str[len]='#'; st