合肥生活安徽新闻合肥交通合肥房产生活服务合肥教育合肥招聘合肥旅游文化艺术合肥美食合肥地图合肥社保合肥医院企业服务合肥法律

COMP3173 23F 代写、代做 C++设计程序

时间:2024-01-03  来源:合肥网hfw.cc  作者:hfw.cc 我要纠错



Project Implementation
Phase 3 Semantic Analysis
This phase is optional. The groups who implement this phase will receive at most 20% bonus of this project. But, the total mark will be capped at 100%.
 
In phase 1 & 2, you have already implemented a lexerand a parser to check lexical errors and syntax errors. In the next phase, you will do the semantic analysis on the source program. Semantic analysis can be type checking and expression evaluation. 
Type system
To check types of the source program you need 
- Define a type system for the grammar.
- Implement the type system as a program.
Here are some tips for the type system.
- This language has three types.
- “nat”, natural number
o declared by variable declaration “nat”, or 
o obtained by arithmetic expressions, like “1 + 2”.
- “bool”, Booleans 
o declared by variable declaration “bool”, 
o obtained by Boolean expressions, like “T & T”, or
o obtained by relational comparison, like “2 < 1”.
- “fun”, functions
o declared by function declaration “fun”.
o Note that not all functions are of the same type. For example, some possible functions can be “fun: natnat” and “fun: natboolnat”.
- A part of the type system is already discussed in Assignment 3. You can use the solutions directly.
- Typing functions can be very tricky for recursive functions. Function declarations are produced by the grammar rule (Rule 3)
F -> fun id A -> C
A naïve type rule can be 
addtype(id.entry, A.type -> C.type)
This type rule works fine for non-recursive functions but fails on recursions. In recursion functions, “C” is an expression about “id”. So, “id.type” depends on “C.type”, which depends on “id.type” itself! For the students who are interested, check Hindley-Milner algorithm for a solution.
 
Evaluation
Recall that a piece of source code in our language consists of zero, or one, or multiple function declarations, and followed by a single arithmetic expression. Thus, we can implement an interpreter for this language. The interpreter simply evaluates the arithmetic expression in the source code. To implement an interpreter, you need to define a set of syntax-directed definitions (similar to the type system), which calculate the values of the arithmetic expression.
Evaluations can sometimes be not easy when the expression contains function calls. To systematicallyevaluate function calls, you can search -reduction for asolution.
 
Implementation
When you implement the type checker or the interpreter, you need to slightly modify the code from Phase 1 & 2 to make it fit. For example, the type checker needs an extra piece of storage for every node in the parse tree to hold the type for the expression. Thus, there is no restrictions on the modifications. You have your own choice.
 
Mark Distribution
- 5% for type checking without recursion functions
- 5% for type checking recursion functions
- 5% for evaluation without function calls
- 5% for evaluation with function calls
 
Submission requirements
Each team need to clearly indicate the contribution of each team member in a txt file. To submit your work, you need to pack all files (source code and contribution txt) in a package. Rename the package as COMP3173_23F_SectionXX_TeamYY, where XX is your section number and YY is your team number. Only team leaders need to upload the package to iSpace.
请加QQ:99515681 或邮箱:99515681@qq.com   WX:codehelp

扫一扫在手机打开当前页
  • 上一篇:CS109 代做、代写 java 设计编程
  • 下一篇:代写 Scene Recognition
  • 无相关信息
    合肥生活资讯

    合肥图文信息
    新能源捕鱼一体电鱼竿好用吗
    新能源捕鱼一体电鱼竿好用吗
    海信罗马假日洗衣机亮相AWE  复古美学与现代科技完美结合
    海信罗马假日洗衣机亮相AWE 复古美学与现代
    合肥机场巴士4号线
    合肥机场巴士4号线
    合肥机场巴士3号线
    合肥机场巴士3号线
    合肥机场巴士2号线
    合肥机场巴士2号线
    合肥机场巴士1号线
    合肥机场巴士1号线
    合肥轨道交通线路图
    合肥轨道交通线路图
    合肥地铁5号线 运营时刻表
    合肥地铁5号线 运营时刻表
  • 币安app官网下载 短信验证码

    关于我们 | 打赏支持 | 广告服务 | 联系我们 | 网站地图 | 免责声明 | 帮助中心 | 友情链接 |

    Copyright © 2024 hfw.cc Inc. All Rights Reserved. 合肥网 版权所有
    ICP备06013414号-3 公安备 42010502001045