共查询到20条相似文献,搜索用时 31 毫秒
1.
基于程序理解的编程题自动评分方法 总被引:3,自引:0,他引:3
针对传统的编程题自动评分方法没有考虑学生程序是怎样实现编程任务的,以及不能从程序文本的语法结构和语义角度衡量学生程序与正确答案的接近程度等问题,提出一种基于程序理解的自动评分方法.以程序理解的一般过程及基本策略为依据,结合人工阅卷的思维过程,建立评分模型.评分过程可划分为3个阶段:首先将程序代码转换成系统依赖图中间表示形式;然后,对系统依赖图进行标准化转换,消除程序表达方式的多样性;最后,匹配标准化后的学生程序与模板程序系统依赖图并根据匹配结果给出评分.该方法被应用于"C语言编程题自动评分系统"中.实验结果表明:它可以根据学生程序的语法和语义衡量学生程序实现编程任务的正确程度,具有较高的准确性. 相似文献
2.
随着C++语言标准的不断演进,词法语法解析工具如JavaCC等对于很多扩充的新特性以及复杂的语法结构不能做到完全支持,这可能会导致抽象语法树生成错误且不完整;针对这一问题,提出一个针对抽象语法树生成错误的处理框架;首先,通过对JavaCC的扩充,实现一套可以解析C++语言的词法语法分析器,生成抽象语法树并记录报错行;其次,根据报错行寻找所在函数区间即不支持或不匹配的语法片段;最后,通过注释函数区间的方式来跳过不支持或不匹配的语法片段进行错误处理并迭代生成抽象语法树;实验结果表明,对抽象语法树生成进行错误处理后可以更全面的分析代码,抽象语法树完成率上升37.8%,分析行数提高3.9倍。 相似文献
3.
针对传统的编程题自动评分方法对存在个别语法错误的学生考试程序只能给出零分、不符合卷面笔试时教师手工阅卷习惯的问题,提出了一种适用于有错误的编程题的评分方法,首先,将有语法错误的学生程序分解为基本语句单元,与模板采分点语句一并经过局部语法分析,转化为语法分析树的中间表示,然后进行采分点匹配,进而输出有语法错误的学生程序的评分结果,该方法适用于考察答题者对基本语法知识的正确使用和对题目关键语义的正确表达,使得对有语法错误的学生程序的评分结果更加符合人工阅卷的思想。 相似文献
4.
5.
研究了如何用CONPAR语言对Petri网图形进行描述,来获得Petri网模型对应的等效文本文件;然后设计了由Petri网文本文件到VHDL转换的文法规则及对应的语义动作源文件,并由编译工具YACC自动生成Petri网到VHDL转换的语法分析器;语法分析生成的中间代码是一棵抽象语法树,可以自顶向下遍历此抽象语法树,并按照相应的语义规则,通过比较Petri网文本描述和VHDL代码的差别生成VHDL目标代码;由此实现了Petri网到VHDL的翻译器,为基于Petri网的并行控制器的自动硬件实现提供了一种快速有效的方法。 相似文献
6.
为了检测程序设计类课程中出现的作业抄袭行为,提出了基于抽象语法树的抄袭检测方法.运用语法分析工具对代码进行语法分析生成抽象语法树(AST),通过计算生物学中序列匹配的算法进行程序相似度的计算.提取程序相似部分的AST特征,生成空间向量,聚类分析找出“抄袭团伙”.实验结果表明,该方法对抄袭行为具有较好的检测效果,并能比较准确地找到“抄袭团伙”. 相似文献
7.
抽象语法树(abstract syntax tree,AST)作为程序一种重要的中间表示形式,在代码分析领域中有着广泛的应用。如何针对Java程序生成其抽象语法树是在进行代码静态分析前必不可少的工作。分析抽象语法树的构建算法,通过JavaCC解析工具完成对Java文件抽象语法树的构建,该方法可实现代码树状形式的可视化呈现。 相似文献
8.
本文介绍和分析了主观题自动评分的国内外研究现状,在基于模糊数学中贴近度理论和单向贴近度字符串匹配方法的基础上,结合动态规划算法思想,设计并实现了基于语义脉络的自动评分算法。该算法以句子作为基本语义单元,将标准答案分解为代表得分点的词串,并为这些词串加入同义词链去匹配学生答案语句,使语义表达更加完善和准确;同时利用动态规划算法使匹配按照词的顺序进行,避免仅仅按照字的出现次数匹配所造成的机械式匹配错误;最后根据文本中句子与关键词的匹配程度给出得分。在给出基本算法的主要思想以及程序流程图的基础上,结合实例分析证明了该算法的可行性。 相似文献
9.
AltaRica是一类面向复杂安全关键系统的建模语言,卫士转换系统(Guarded Transition System,GTS)是最新的AltaRica 3.0的执行语义模型。AltaRica 3.0层次结构语法模型中类的平展化是将AltaRica 3.0语法模型转换为等价的平展化GTS语义模型过程中的一个重要步骤。文中提出了一种AltaRica 3.0模型中类的平展化优化方法。首先,设计专用的数据结构来存储AltaRica 3.0模型中类的语义结构,并对原有的ANTLR(Another Tool for Language Recognition)元语言描述的AltaRica 3.0模型颗粒度进行重新精化和定义;其次基于ANTLR生成相应的词法和语法分析器,并自动构造输入模型的语法树,通过对语法树的遍历,取得细粒度的类的关键信息并进行存储;然后设计了专用的算法,高效地实现了类的平展化过程;最后通过实例系统的分析,验证了所提方法的正确性和有效性。 相似文献
10.
针对SQL查询程序实现多样性的问题,提出一种用于精确评估SQL程序的评分模型.首先基于通用标准的SQL语法规范标识符和命令子句,基于同义词链和抽象语法树规范表达式,将SQL程序转换成统一的中间形式,充分消除SQL程序句法和语义表达多样性带来的差异;然后,模拟人工评分思想,对标准化后的程序按评分点组成评估单元序列,采用改进的最长公共子序列算法评估代码相似度,按评分点权重计算成绩,并给出错误定位;最后,通过样例测试和分析说明了评分模型的有效性. 相似文献
11.
针对可编程逻辑控制器(PLC)程序在进行NuSMV模型检测时需要手工对程序进行建模,不仅浪费人力且容易出错的问题,提出一种基于状态转移的PLC程序模型自动化构建方法。该方法首先分析结构化文本(ST)语言特性并解析ST程序为抽象语法树;其次,在抽象语法树基础上,根据不同的文法结构进行控制流分析生成控制流图;然后,通过数据流分析得到程序依赖图;最后,根据程序依赖图生成NuSMV的输入模型。实验结果表明,所提方法实现了ST程序到NuSMV输入模型的自动化构建,并且构建的NuSMV输入模型既保留了ST程序的原有特性又符合NuSMV模型检测工具输入的规范,与传统手工模型构建方法相比,提高了模型生成的效率和准确率。 相似文献
12.
13.
控制流图描述了函数执行时可能采取的执行路径。绝大多数静态分析工具都在抽象语法树之上生成控制流图并据此对程序的运行行为进行分析。在模型检测过程中,提取正确的控制流图是构建系统模型的关键。在分析C程序的抽象语法树和控制结构的基础上,设计并实现了程序控制流图提取的算法,并分析了算法的正确性。基于提取的控制流程,可对C程序的某些性质进行模型检验。 相似文献
14.
针对JavaScript浏览器兼容性问题缺乏有效的测试方法的问题,基于变异测试技术,对Web应用程序中的JavaScript语言在主流浏览器中的兼容性进行了分析,设计了18个针对浏览器兼容性错误的变异算子并开发了自动化的测试工具Compatibility Mutator。该程序使用抽象语法树(AST)分析JavaScript语法,使用Selenium WebDriver自动调用多个浏览器核心并行执行变异测试。通过对7个广泛使用的JavaScript框架的实验,验证了此方法对每一个框架都能够生成一定数量的变异体,其中对jQuery和YUI框架的变异测试的变异得分分别为43.06%和7.69%,表明了所设计的变异算子能够触发浏览器兼容性方面的错误,并且能够评估测试用例集的完备性。 相似文献
15.
《计算机工程与科学》2017,(10):1837-1846
安卓系统的恶意程序数量多且危害大,研究相应的检测方法是当前研究热点。现有方法仅单独提取语法或语义特征,难以准确刻画恶意程序的攻击意图。提出一种混合提取语法和语义特征的检测方法,语义特征为基于类抽象的污点传播路径集合,并结合权限声明和Intent-Action等语法特征,对特征规范化后应用K-means算法训练样本集生成恶意程序家族的特征向量,应用欧氏距离检测未知程序与特征向量的相似度。基于FlowDroid实现原型系统,对400个真实程序的分析结果表明该方法有较高的精确度。 相似文献
16.
17.
18.
19.
本文描述用Lex和Yacc自动生成“面向Pascal结构编辑器”的语法(语义)分析程序。为支持对被编辑Pascal程序的静态语义检查,在Baekus范式的产生式中插入语义动作,使得所产生的分析程序不仅能准确指出错误位置,而且能指出错误性质。 相似文献
20.
测试用例的自动生成是实现测试自动化的重要保障,是验证可信软件的基本方法.在分析现有测试用例自动生成方法的基础上,提出了一种基于编译的错误可跟踪的测试用例自动生成方法.该方法以编译器为依托,通过对其语法和语义进行扩展,将测试需求很好地融入到源程序中参与分析,并利用代码生成器在生成目标代码的同时根据相应的分析结果直接生成对应的测试用例.该方法将测试用例和目标代码生成统一到编译器中,避免了独立的测试用例自动生成工具在获得编译器相关分析结果时而导致的接口开销.同时,通过对源程序行号信息的跟踪,使得测试用例在无法通过测试时能够很快定位出错位置,以方便程序开发者修改.最后,通过一个示例程序说明了该方法的具体实现过程,证明了该方法的有效性. 相似文献