12 23 递归语法分析

#include<stdio.h>
char curr;
char LL1[1000];
int N=-1;
 
void Top();
void Top1();
void Top2();
void top();
void top1();
void error();
void scaner();
 
void main()
{    char ch;
    int i=0;
    printf("请输入需要分析的curr语法:(以#结束)\n");
    do{
        scanf("%c",&ch);
        LL1[i] = ch;
        i++;
    }while(ch != ‘#‘);
    scaner();
    Top1();
    if(curr == ‘#‘)
        printf("成功!\n");
    else{
        printf("文法有误!!\n");
        error();
    }
 
}
 
void scaner(){   //用于读取源函数的下一个字符
 
    N++;
    if(LL1[N] == ‘ ‘){
        N++;
    }else{
        curr = LL1[N];
    }
}
 
void Top(){
    Top2();
    top();
}
 
void Top1(){
    Top();
    top1();
}
 
void Top2(){
    if(curr == ‘(‘){
        scaner();
        Top1();
        if(curr == ‘)‘){
            scaner();
        }
        else
        {
            error();
        }
        else
        {
        //判断是否是函数或者是数字
        while(1){
            if(curr >= ‘a‘ && curr<=‘z‘ || curr >= ‘A‘ && curr <= ‘Z‘ || curr >= ‘0‘ && curr <= ‘9‘){
                scaner();
            }
            else
            {
                break;
            }
        }
    }
}
 
void top(){
    if(curr == ‘*‘){
        scaner();
        Top2();
        Top();
    }else if(curr == ‘/‘){
        scaner();
        Top2();
        Top();
    }else if(LL1[N+1] == ‘#‘ || LL1[N+1] == ‘+‘ || LL1[N+1] == ‘/‘ || LL1[N+1] == ‘*‘ || LL1[N+1] == ‘-‘){
        if(LL1[N] != ‘(‘ && LL1[N] != ‘)‘)
        error();
    }
}
 
void top1(){
    if(curr == ‘+‘){
        scaner();
        Top();
        top1();
    }
    else if(curr == ‘-‘){
        scaner();
        Top();
        top1();
    }else if(LL1[N+1] == ‘#‘ || LL1[N+1] == ‘+‘ || LL1[N+1] == ‘/‘ || LL1[N+1] == ‘*‘ || LL1[N+1] == ‘-‘){
        if(LL1[N] != ‘(‘ && LL1[N] != ‘)‘)
        error();
    }
}
 
void error(){
    printf("%d %c之后的文法有错!\n",N,curr);
}

时间: 2024-12-14 11:38:28

12 23 递归语法分析的相关文章

12.16~12.23工作日志

12.16~12.23工作日志 2016.12.16 1.cick事件调用的函数中加入touchmove等事件会发生事件穿透,详情(http://www.tuicool.com/articles/6NfaUnM) 移动设备的click事件有300ms延迟,用于判断是否双击 2.ios设备会有一个默认的css样式,如input按钮在电脑上默认为方形,而在iPhone上默认为圆形,清除ipone默认样式方法: Input{-webkit-appearance:none;} 3.border-radi

12.21 php-fpm的pool;12.22 php-fpm慢执行日志;12.23 ;12.24

12.21 php-fpm的pool 1.添加pool: [[email protected] ~]# vim /usr/local/php-fpm/etc/php-fpm.conf 添加第二个pool: [hao1.com] listen = /tmp/hao1.sock listen.mode = 666 user = php-fpm group = php-fpm pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_

12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_b

12.21 php-fpm的pool [[email protected] etc]# vim php-fpm.conf [[email protected] etc]# mkdir php-fpm.d [[email protected] etc]# cd php-fpm.d [[email protected] php-fpm.d]# vim www.conf [[email protected] php-fpm.d]# vim martin.conf [martin] listen = /

12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理

12.21 php-fpm的pool php-fpm有一个概念叫pool,就是使用psaux看到的右侧的那一列,也就是它的池子, 如下图,我们在这里只定义了一个pool 其实他是支持定义多个池子的,每一个池子我们可以监听不同的sock,或者不同的tcpip,这样的话如果我们的nginx有好几个站点每个站点都可以使用不同pool,这样做的好处就是其中一个php502了,其他站点不收影响,(502很有可能是php资源不够了)如果你所有的网站都使用了同一个池子的话,其中一个网站发生了故障,比如程序员写

mongo 杀掉慢的程序killMyRunningOps(&quot;12.23.32.21&quot;) #####这个是客户端的ip

mongodb运维(3) db.currentOp与db.killOp命令 2018.08.12 23:55 113浏览 字号 好久没更新mongo运维这块知识了,这次介绍 db.currentOp与db.killOp命令 数据库优化方法有很多,但所有数据库优化都离不开慢查询优化.mysql.mongodb都可以开启慢查询,来对数据库查询进行分析.开启慢查询日志,对性能会有一定的影响.mongoDB 有时我们只想临时看下慢查询日志,应该如何处理. 这时,我们可以用到mongdb的db.curre

12.30递归下降分析

1 #include<stdio.h> 2 #include<string.h> 3 char str[10]; 4 int index=0; 5 void E(); //E->TX; 6 void X(); //X->+TX|-TX| e 7 void T(); //T->FY 8 void Y(); //Y->*FY |/fy| e 9 void F(); //F->(E) | id 10 int id(); //id 11 int main()

作业:12.23

打印以下图型:   行i  列j  i与j关系●●●●● 1  5●●●●● 2  5●●●●● 3  5●●●●● 4  5●●●●● 5  5 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ConsoleApplication1 7 { 8 class Class1 9 { 10 //五行五列 11 static void

2019.12.14 递归类型题

/** * DiGui.java * com.DuiXiang * * Function: TODO * * ver date author * ────────────────────────────────── * 2019年12月14日 17671 * * Copyright (c) 2019, TNT All Rights Reserved.*/ package com.DuiXiang;/** * ClassName:DiGui * Function: TODO ADD FUNCTIO

AI行业精选日报_人工智能(12&#183;23)

日本探索用人工智能指挥交通 据日本共同社报道,日本一家机构正在研究开发一套新的交通系统,将应用人工智能技术分析数据来缓解城市交通拥堵.报道称,在日本新能源和产业技术综合开发机构研发的这套系统中,人工智能将扮演指挥官的角色.通过分析车流量数据,以及摄像头采集到的车辆位置等图像信息,人工智能系统将控制信号灯的切换以及时长等,从而缓解拥堵状况.此外,在行人过马路时,系统还可以感知人行横道上的行人,并适时延长过马路绿灯的时间. 来源:http://baijiahao.baidu.com/s?id=165