【技术实现步骤摘要】
生成代码文件的语法树的方法、装置及电子设备
本申请涉及计算机软件开发
,具体而言,本申请涉及一种生成代码文件的语法树的方法、装置及电子设备。
技术介绍
在当前的计算机领域,C/C++/JAVA等高级编程语言对应的编译器开发技术越来越成熟,应用高级语言编译器能够实现将程序语言转化为机器语言的操作。但是,目前的编译器并不能逐一对代码文件中存在的代码编写错误进行全面、详尽分析,也无法准确对代码文件中存在的代码编写错误进行提示或纠正。因此,在对代码文件进行编译之前,需要程序开发人员手动检查代码文件中存在的错误。然而,本申请的专利技术人在具体实施过程中发现:当代码文件中的代码量很大时,将会给程序开发人员造成极大工作量,不仅导致程序开发人员花费大量时间、精力等,检查代码文件中存在的错误,而且检查效率极低。同时,本申请的专利技术人发现:根据代码文件中各个词法符号的词性,查找相应的查找表,能够生成代码文件的语法树(syntaxtree),从而自动实现代码文件中语法错误、编写错误等的检查及纠正,极大提高检查效率,基于此本申请的专 ...
【技术保护点】
1.一种生成代码文件的语法树的方法,其特征在于,包括:/n在接收到预定编程语言的待解析代码文件时,通过词法解析模块对所述待解析代码文件中的各个词法符号进行解析并生成相应的线性链表;/n对所述线性链表中的各个词法符号依次进行词性确定,且每当确定任一词法符号的词性时,根据所述任一词法符号的词性,查找第一查找表和第二查找表,得到对应的查找结果,所述第一查找表和所述第二查找表是基于对所述预定编程语言的文法进行分析生成的;/n根据所述查找结果生成所述待解析代码文件的语法树。/n
【技术特征摘要】
1.一种生成代码文件的语法树的方法,其特征在于,包括:
在接收到预定编程语言的待解析代码文件时,通过词法解析模块对所述待解析代码文件中的各个词法符号进行解析并生成相应的线性链表;
对所述线性链表中的各个词法符号依次进行词性确定,且每当确定任一词法符号的词性时,根据所述任一词法符号的词性,查找第一查找表和第二查找表,得到对应的查找结果,所述第一查找表和所述第二查找表是基于对所述预定编程语言的文法进行分析生成的;
根据所述查找结果生成所述待解析代码文件的语法树。
2.根据权利要求1所述的方法,其特征在于,确定所述线性链表中任一词法符号的词性,包括:
根据上下文对所述任一词法符号进行词性判定,确定所述任一词法符号的词性;和/或,
根据上下文对所述任一词法符号进行词性猜测,确定所述任一词法符号的词性。
3.根据权利要求2所述的方法,其特征在于,所述根据上下文对所述任一词法符号进行词性判定,确定所述任一词法符号的词性,包括以下任一种情形:
当所述任一词法符号为类型名、对象名以及关键字中的任一项,则将其作为所述任一词法符号的词性;
当所述任一词法符号为预设类型的词法符号,判定所述任一词法符号为模板列表符号或者运算符号,将判定结果作为所述任一词法符号的词性;
在作用域中进行信息查找,并将查找结果作为所述任一词法符号的词性。
4.根据权利要求3所述的方法,其特征在于,所述在作用域中进行信息查找,并将查找结果作为所述任一词法符号的词性,包括:
在所述作用域中进行横向查找,并将所述横向查找的查找结果作为所述任一词法符号的词性;
所述横向查找为在当前作用域及引用的命名空间中进行查找,或者在当前作用域的基类作用域中进行查找。
5.根据权利要求4所述的方法,其特征在于,还包括:
若通过所述横向查找未查找到查找结果,则在所述作用域中进行纵向查找,并将所述纵向查找的查找结果作为所述任一词...
【专利技术属性】
技术研发人员:冯刚,
申请(专利权)人:北京奇虎科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。