自顶向下的文法分析器实现

  最近作业实在太多,郁闷死了,布兰妮的专辑一遍一遍循环,终于把语法分析器的作业交了。
  简直就是悲剧啊!
恩 就写下语法分析的实现吧~
程序输入:
  文法格式:
    开始符号-产生式右部@另一个产生式右部
    产生式右部由终结符号与非终结符号间隔空格组成
    例如:
      Dec-VarDec SemicolSym Dec@FunDec SemicolSym Dec@FunDec@VarDec
属性字序列格式为:
    类型 字符串 行号 列号
    例如:
      FunKey function 3 1

此编译器的文法如下(已消除左递归):

• P -> Dec SemicolSym Body
• Dec -> VarDec SemicolSym Dec | FunDec SemicolSym Dec | FunDec | VarDec
• VarDec -> VarKey Identifier ColonSym Type
• FunDec -> FunKey Identifier LBracket RBracket LocVarDec SemicolSym Body
• LocVarDec -> VarDec SemicolSym LocVarDec | VarDec
• Type -> IntKey | ArrayKey LSBracket Integer RSbracket OfKey Type
• Body -> CompSt
• Statement -> CompSt | IfSt | WhileSt | AssignSt | CallKey FunCall | ReadSt | WriteSt
• FunCall -> Identifier LBracket RBracket
• CompSt -> BeginKey StatementList EndKey
• StatementList -> Statement SemicolSym StatementList | Statement
• IfSt -> IfKey E ThenKey Statement ElseKey Statement EndIfKey
| IfKey E ThenKey Statement EndIfKey
• WhileSt -> WhileKey E DoKey Statement
• AssignSt -> ArrayAccess AssignSym E | Identifier AssignSym E
• ReadSt -> ReadKey Identifier
• WriteSt -> WriteKey identifier
• E -> T AddOp E | T MinusOp E | T OrOp E | T XorOp E | T Relation E | T
• T -> F MulOp T | F DivOp T | F AndOp T | F
• F -> LBracket E RBracket | Integer | ArrayAccess | Identifier | NotOp F
• ArrayAccess -> Identifier LSBracket E RSBracket Access | Identifier LSBracket E RSBracket
• Access -> LSBracket E RSBracket Access | LSBracket E RSBracket
• Relation -> GOp | GeOp | LessOp | LEOp | EqOp

程序的具体实现没啥关系,知道大概流程就行,于是某人就不把代码放出来了
实现的流程图:

主递归程序Search(ToBeCom,Node)的流程图:

连续听了IF U SEEK AMY ,感觉超喜欢哇~特别是那句高潮
All the boys and all the girls are begging to IF U Seek Amy
太YD了

  1. Pnuts says:

    沙发。。。

  1. There are no trackbacks for this post yet.

填写留言


无觅相关文章插件,快速提升流量