LR(0)文法分析实验测试用例设计
LR(0)文法分析实验测试用例设计说明
本实验涉及对字符的判断分析以及转换显示,为了确保程序的正确性和健壮性,需要设计全面的测试用例。以下详细说明实验测试用例的设计内容:
一、文法输入的测试
本部分测试用例主要针对文法输入框,验证程序对不同文法输入的处理是否符合预期。
1.1 输入为空的情况
- 测试目标: 验证当输入为空时,程序是否能够正确显示'输入文法为空'。* 测试步骤: 1. 在文法输入框中不输入任何内容。 2. 点击'确认'按钮。 3. 观察显示区域,检查是否正确显示'输入文法为空'。* 预期结果: 显示区域显示'输入文法为空'。
1.2 左部为小写字符非终结符的情况
- 测试目标: 验证当左部为小写字符非终结符时,程序是否能够正确显示'产生式输入不规范'。* 测试步骤: 1. 在文法输入框中输入'a->b'。 2. 点击'确认'按钮。 3. 观察显示区域,检查是否正确显示'产生式输入不规范'。* 预期结果: 显示区域显示'产生式输入不规范'。
1.3 产生式的推导符号输入错误的情况
- 测试目标: 验证当产生式的推导符号输入错误时,程序是否能够正确报错并显示'产生式输入不规范'。* 测试步骤: 1. 在文法输入框中输入'A->B+C-D'。 2. 点击'确认'按钮。 3. 观察显示区域,检查是否正确报错并显示'产生式输入不规范'。* 预期结果: 显示区域报错并显示'产生式输入不规范'。
1.4 不满足LR(0)文法规则的情况
- 测试目标: 验证当所输入文法不满足LR(0)文法的规则时,程序是否能够正确显示'不是LR(0)文法'。* 测试步骤: 1. 在文法输入框中输入'S->aS|Sb|aB, B->bB|b'。 2. 点击'确认'按钮。 3. 观察显示区域,检查是否正确显示'不是LR(0)文法'。* 预期结果: 显示区域显示'不是LR(0)文法'。
1.5 正确的LR(0)文法输入情况
- 测试目标: 验证当输入规范且所有条件都满足时,程序是否能够正确显示为'正确的LR(0)文法'。* 测试步骤: 1. 在文法输入框中输入'S->aA|bB, A->aA|bS|c, B->bB|aS|d'。 2. 点击'确认'按钮。 3. 观察显示区域,检查是否正确显示为'正确的LR(0)文法'。* 预期结果: 显示区域显示'正确的LR(0)文法'。
二、对分析句子的测试
本部分测试用例主要针对句子输入框,验证程序对不同句子的分析过程和结果是否符合预期。
2.1 符合LR(0)文法规则且能推导出对应文法的合法句子的情况
- 测试目标: 验证当输入的句子符合LR(0)文法规则,且能推导出对应文法的合法句子时,程序在对应显示区域下是否能够正确输出推导分析过程。* 测试步骤: 1. 在文法输入框中输入'S->aA|bB, A->aA|bS|c, B->bB|aS|d'。 2. 在句子输入框中输入'abbd'。 3. 点击'分析'按钮。 4. 观察显示区域,检查是否能够正确输出推导分析过程。* 预期结果: 显示区域能够正确输出推导分析过程,例如:
步骤 | 状态栈 | 符号栈 | 输入串 | 动作 ------- | -------- | -------- | -------- | -------- 0 | 0 | $ | abbd$ | 移进 1 | 01 | $a | bbd$ | 移进 2 | 012 | $ab | bd$ | 归约(B->bB) 3 | 012 | $bB | bd$ | 移进 4 | 0122 | $bBd | $ | 归约(B->bB) 5 | 012 | $Bd | $ | 归约(S->bB) 6 | 0 | $S | $ | 接受
2.2 不符合LR(0)文法规则的情况
- 测试目标: 验证当输入的句子不符合LR(0)文法规则时,程序在对应显示区域下是否能够正确输出失败字样。* 测试步骤: 1. 在文法输入框中输入'S->aA|bB, A->aA|bS|c, B->bB|aS|d'。 2. 在句子输入框中输入'abcd'。 3. 点击'分析'按钮。 4. 观察显示区域,检查是否能够正确输出失败字样。* 预期结果: 显示区域能够正确输出失败字样,例如'分析失败:输入句子不符合文法规则'。
总结
以上测试用例涵盖了LR(0)文法分析实验中可能出现的各种情况,通过对这些测试用例的测试,可以有效地验证程序的正确性和健壮性,确保实验结果的准确性和可靠性。
原文地址: http://www.cveoy.top/t/topic/fZVG 著作权归作者所有。请勿转载和采集!