• 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' || curr >= 'A' && curr <= 'Z')
    {
    return 1;
    }
    else
    return 0;

    }
    int yuansuanf(){
    if(curr=='+'||curr=='-'||curr=='*'||curr=='/')
    {
    return 1;
    }

    else{
    return 0;
    }

    }
    int end(){
    if(curr!='#'){
    return 1;
    }
    else
    return 0;
    }


    int check(){

    if(digital()==1){
    scaner();
    if(end()==1){
    if(yuansuanf()==1){

    return 1;
    }
    else if(yuansuanf()==0){
    return 0;

    }
    }
    else if(end()==0){
    return 1;
    }

    }


    return 0;


    }

    void checking(){
    int number;
    qq: scaner();
    if(digital()==1){
    while(curr!='#'){
    number=check();
    if(number==1){
    goto qq;
    }
    else if(number==0){

    break;
    }
    }
    }


    if(number==1){

    printf("没有错误 ");
    }
    else
    printf("%c 错误 ",curr);


    }

    void main()
    { char ch;
    int i=0;
    printf("请输入需要分析的语法:(以#结束) ");
    do{
    scanf("%c",&ch);
    LL1[i] = ch;
    i++;
    }while(ch != '#');
    scaner();
    checking();

    }

    void scaner(){ //用于读取源函数的下一个字符

    N++;
    if(LL1[N] == ' '){
    N++;
    }else
    {
    curr = LL1[N];
    }
    }

  • 相关阅读:
    glib文档
    2020第42周面向失败设计
    2020第41周中年危机焦虑
    2020第40周选合适的工具
    2020第39周微行动思维
    2020第38周
    2020第37周
    2020第36周
    2020第35周不要让孩子输在起跑线
    2020第34周滥竽充数
  • 原文地址:https://www.cnblogs.com/xinmingwang/p/5089563.html
Copyright © 2020-2023  润新知