COMP 2049语言与计算课程:浮点数与简单算术表达式1浮点数字
设计一个右线性语法G1,根据以下规则生成二进制浮点文字的语言:每个数字可以是有符号的,也可以是无符号的。
–在1.01中无符号,在+1.01或-1.10中有符号数字部分(也称为值字段)必须非空,并且可以选择包含小数点“.”,在这种情况下,它后面必须跟一些其他数字。例如:–在数字+110.11中,存档的值为110.11。–1和.01、-.001、001都可以接受,但1.、+、-和λ不可以。可能有一个可选的指数字段,在这种情况下,它必须包含字母“e”,后跟有符号或无符号整数。–例如,101e+1或-1.1e10是可接受的,但1.01e、1.01e-1.1和e11是不可接受的。此外,小数点“”之间必须至少有一位数字还有字母“e”。因此诸如11e01之类的字符串是不可接受的。
任务1。在JFLAP中实现语法G1,并在您选择的一些输入字符串上进行测试。图1提供了JFLAP中语法G1的一些示例输入字符串解析结果的屏幕截图。图1:一些样本输入和相应的结果
备注1.1在本课程的所有任务中,默认的解析方法应为“暴力解析”。因此,要在几个输入字符串上测试JFLAP中的语法,请选择选项卡“input”,然后选择项目“Multiple Brute Force Parse”。1.
2个算术表达式
对于第二个任务,您需要设计一个上下文无关语法(CFG)G2,该语法以二进制格式生成自然数上的算术表达式语言。每个算术表达式由以下内容构成:二进制无符号整数文字,接受前导零;
算术运算符+、-、*和/;
正确嵌套的括号。
例如,表达式(11+0101)/001必须被接受,而((11-01)必须被拒绝,因为括号不匹配。任务2。在JFLAP中实现语法G2,并在您选择的一些输入表达式上进行测试。检查语法G2的所有产生式规则,看看是否有λ-产生式或单位-产生式。如果有这样的结果,你可能会注意到,对于更复杂的输入字符串,JFLAP解析字符串需要很长时间。事实上,有时它可能会进入一个非终止循环。任务3。使用JFLAP去除语法G2的λ-乘积和单位乘积,得到语法G3。然后,尝试解析与以前相同的字符串,并注意解析它们所需的时间更短,而且解析器不会进入非终止循环。在JFLAP中,要删除λ-乘积和单位乘积,您可以首先选择选项卡“转换”,然后选择项目“转换语法”。图2中提供了JFLAP中语法G3的一些示例输入字符串解析结果的屏幕截图。要比较G2和G3的效率,可以使用示例输入“1+1-(1/1*1)”。图2:一些样本输入和相应的结果
3提交
您必须提交一个zip文件,其中包含三个JFLAP文件,根据以下模板命名:1。任务1的语法G1的JFLAP文件名为:ID_Surname_FirstName_01.jff 2。任务2的语法G2的JFLAP文件名为:ID_Surname_FirstName_02.jff 3。任务3的语法G3的JFLAP文件名为:4.名为的zip文件:
ID_Surname_FirstName_03.jff ID_Surnname_FirstName.zip2.
备注3.1如果您设计的任务2的语法G2已经没有λ-乘积和单位乘积,那么您可以提交与G3相同的语法。尽管如此,即使在这种情况下,您也必须提交三个具有上述命名约定的文件。发布日期:2024年4月2日,星期二
截止日期:2024年4月19日星期五17:00重量:模块标记的15%如何提交:通过Moodle
4评分方案
正确性:(80%)三项任务的正确答案占总分的80%,如下所示:任务1:40%任务2:20%
任务3:20%
格式:(20%)
1.虽然任务3的语法G3是由JFLAP生成的,但任务1和任务2的语法必须由您编写。对于语法G1和G2,所有具有相同左侧变量的乘积必须一个接一个地出现在一个块中。(15%)2.zip文件和三个JFLAP文件必须根据上面给出的模板命名。5.逾期提交:适用大学对逾期提交的标准处罚,即5%的绝对罚款每天的标准大学量表,直到分数达到零。
其他技术的使用:如果您使用的技术不是课业摘要中指定的技术,例如chatGPT,50%的绝对扣除额。