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