美文网首页技术技术干货程序员
编译器---语法分析器(java)

编译器---语法分析器(java)

作者: 拉丁吴 | 来源:发表于2015-09-18 19:34 被阅读1485次

    语法分析器的任务:

    1. 检查输入的token是否符合语法
    2. 为符合语法的语句建立抽象语法树,输出。

    程序语言语法:

    数学理论:上下文无关文法(CFG)
    上下文无关文法是一个四元组(T,N,P,S) ,T:终结符集合,N:非终结符集合,P:产生式规则集合,S:唯一的开始符号。

    以下是我定义的语法

    S->P
    P->fm(M)B 函数语法
    M->T V M; | ε 函数传递参数
    T->num | bool | string 变量类型
    V->id | id_num |id_bool 变量
    B->IB | WB | ε 函数体
    I->i(C){E;}e{E;} 条件语句
    W->w(C){E} 循环语句
    C->VQV 条件比较
    Q->'>'|'<'|'>='|'<='|'==' 比较符号
    E->V'='K 表达式
    K->GG'
    G'->'+'GG' | '-'GG' | ε
    G->VA_
    A_->*VA_ | '/'VA_ |ε

    补充注释:
    {f:func,m:main,i:if,e:else,w:while,}

    语法分析的方法:

    1. 自顶向下分析:
    • 递归下降分析(预测分析算法):

    为每一个非终结符构造一个分析函数,用前看符号指导产生式规则的选择

    • LL分析算法:

    每次都通过查表完成分析过程

    1. 自底向上分析:
    • LR分析算法:

    表驱动算法

    语法制导翻译:
    基本思想:为每条合法的句子附加一条相应的语义动作,构建出一个抽象语法树。

    我的语法分析部分的代码

    相关文章

      网友评论

        本文标题:编译器---语法分析器(java)

        本文链接:https://www.haomeiwen.com/subject/npvbcttx.html