欢迎来到天天文库
浏览记录
ID:50277100
大小:275.80 KB
页数:9页
时间:2020-03-07
《编译原理-可编程计算器.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、郑州大学软件学院可编程计算器(项目报告)专业:计算机辅助设计专业院(系):软件学院学生姓名:古双军学号:20097720219学生姓名:孔德汉学号:20097720225学生姓名:孟晓帆学号:20097720240学生姓名:周干学号:20097720267完成时间:2012年6月18日年月日1、编译器的功能支持数值运算、逻辑运算和字符串运算,不区分大小写。其中优先级定义+-*/%mod>>=<<====<>!=&&&
2、
3、
4、andornotxor^sincosminmaxleftrightabsifroundpi可实现
5、自顶向下的词法运算。1)词法分析TokenKeywordFactory:用于处理关键字TokenSymbolFactory:用于处理运算符TokenStringFactory:用于处理字符串TokenNumberFactory:用于处理数字这里的处理过程是1.取字符“1”,转到TokenNumberFactory,把分析取到的字符串“123.3”转换为TokenNumber并存到TokenList中2.取字符“*”,转到TokenSymbolFactory,把“*”转换成TokenMultiply并存到TokenLi
6、st中3.取字符“2”,转到TokenNumberFactory,把分析取到的字符串“2”转换为TokenNumber并存到TokenList中4.取字符“-”,转到TokenSymbolFactory,把“-”转换成TokenMinus并存到TokenList中5.取字符“(”,转到TokenSymbolFactory,把“(”转换成TokenLeftBracket并存到TokenList中6.取字符“2”,转到TokenNumberFactory,把分析取到的字符串“24”转换为TokenNumber并存到Tok
7、enList中7.取字符“+”,转到TokenSymbolFactory,把“+”转换成TokenPlus并存到TokenList中8.取字符“3”,转到TokenNumberFactory,把分析取到的字符串“34”转换为TokenNumber并存到TokenList中9.取字符“)”,转到TokenSymbolFactory,把“)”转换成TokenRightBracket并存到TokenList中2)语法分析1.列表分析状态:TokenValue(3)TokenMultiplayTokenValue(7)…..
8、.TokenValue(3)栈底堆栈分析:当前堆栈为空,将当前分析的TokenRecord压栈。对应列表2.列表分析状态:TokenValue(3)TokenMultiplyTokenValue(7)…...TokenMultiply栈底堆栈分析:栈顶为TokenValue,当前TokenRecord为TokenMultiply,TokenValue优先级最高。遵循高出低入原则,将TokenValue弹栈并添加到TokenMultiply的ChildList中,然后将TokenMultiplay压栈。3.列表分析状态
9、...TokenMultiplyTokenValue(7)TokenPlus…...堆栈分析:栈顶为TokenMultiplay,当前TokenRecord为TokenValue,TokenMultiply优先级高于TokenValue,则将TokenValue加入TokenMultiplay的ChildList中。4.列表分析状态……TokenValue(7)TokenPlusTokenValue(56)…...TokenPlus栈底堆栈对应视图1.列表分析状态…TokenPlusTokenValue(56)Tok
10、enDivide…...TokenValue(56)TokenPlus栈底堆栈分析:栈顶为TokenPlus,当前TokenRecord为TokenValue,TokenPlus优先级低于TokenValue。遵循高出低入原则,不需要弹栈,直接将TokenValue压栈。堆栈对应视图2.列表分析状态……TokenValue(56)TokenDivideTokenValue(8)…...TokenDivideTokenPlus栈底堆栈分析:栈顶为TokenValue,当前TokenRecord为TokenDivide,
11、TokenValue优先级高于TokenDivide。遵循高出低入原则,将TokenValue弹栈并加入TokenDivide的ChildList中。此时栈顶为TokenPlus,TokenDivide优先级高于TokenPlus,遵循高出低入原则,将TokenDivide压栈。堆栈对应视图3.列表分析状态……TokenDivideTokenV
此文档下载收益归作者所有