zoukankan      html  css  js  c++  java
  • 软件构造实验三-递归下降分析分析法

    【实验目的】 

    (1)掌握自上而下语法分析的要求与特点。 

    (2)掌握递归下降语法分析的基本原理和方法。 

    (3)掌握相应数据结构的设计方法。  

    【实验内容】 

    用递归下降法编写一个语法分析程序,使之与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。

    【实验要求】 

    对下列文法,用递归下降分析法对任意输入的符号串进行分析:

    E->TG    G->+TG|-TG   G->ε

    T->FS    S->*FS|/FS    S->ε

    F->(E)     F->i

    代码精髓:

    根据上述分析法进行建立

    void E();

    1 void E()
    2 {
    3     cout << "S->TG		";
    4     Fen();
    5     Sheng();
    6     T();
    7     G();
    8     
    9 }
    void E()

    void T();

    1 void T()
    2 {
    3     cout << "T->FS		";
    4     Fen();
    5     Sheng();
    6     F();
    7     S();
    8     Leaf = 0;
    9 }
    Void T()

    void G();

     1 void G()
     2 {
     3     if (str[lookahead] == '+')
     4     {
     5         cout << "G->+TG	";
     6         match('+');
     7         T();
     8         G();
     9         Leaf = 1;
    10     }
    11     else if (str[lookahead] == '-')
    12     {
    13         cout << "G->-TG	";
    14         match('-');
    15         T();
    16         G();
    17         Leaf = 1;
    18     }
    19     cout << "G->ε		";
    20     Fen();
    21     Sheng();
    22     Leaf = 1;
    23 
    24 }
    void G()

    void F();

     1 void F()
     2 {
     3 
     4     if (str[lookahead] == 'i')
     5     {
     6         cout << "F->i	";
     7         match('i');
     8         Leaf = 1;
     9     }
    10 
    11     else if (str[lookahead] == '(')
    12     {
    13         cout << "F->(E)	";
    14         match('(');
    15         E();
    16         if (str[lookahead] == ')')
    17             match(')');
    18         else Error();
    19         Leaf = 0;
    20     }
    21     else
    22     {
    23         Leaf = 0;
    24         Error();
    25         
    26     }
    27 
    28 }
    void F()

    void S();

    void S()

     运行结果:

  • 相关阅读:
    ajax遇到的问题
    Javascript事件传播(冒泡机制) (摘自 博客园 萍水相逢)
    学习的一点体悟和衷告
    localStorag的一点见解
    感谢!
    文件上传的一些方法
    form:form的一点体会
    鼠标事件大汇总
    readonly和disabled的异同
    说说icon图标
  • 原文地址:https://www.cnblogs.com/smartisn/p/11775773.html
Copyright © 2011-2022 走看看