自顶向下的文法分析器实现
最近作业实在太多,郁闷死了,布兰妮的专辑一遍一遍循环,终于把语法分析器的作业交了。
简直就是悲剧啊!
恩 就写下语法分析的实现吧~
程序输入:
文法格式:
开始符号-产生式右部@另一个产生式右部
产生式右部由终结符号与非终结符号间隔空格组成
例如:
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了





沙发。。。
恩 以后你专门帮俺抢沙发吧~
VERY NICE
作业啊 不画不行 悲剧
NOT AT ALL…