当前位置:  开发笔记 > 编程语言 > 正文

解析源代码 - 不同语言的唯一标识符?

如何解决《解析源代码-不同语言的唯一标识符?》经验,为你挑选了2个好方法。

我正在构建一个接收源代码作为输入的应用程序,并分析代码的几个方面.它可以接受来自许多常用语言的代码,例如C/C++,C#,Java,Python,PHP,Pascal,SQL等(但是许多语言都不受支持,例如Ada,Cobol,Fortran).知道语言之后,我的应用程序知道该怎么做(我有不同语言的处理程序).

目前我要求用户输入编写代码的编程语言,这很容易出错:尽管用户知道编程语言,但由于鲁莽,他们中的一小部分(在极少数情况下)会点击错误的选项,这打破了系统(即我的分析失败).

在我看来,应该有一种方法可以从输入文本本身中找出(在大多数情况下)语言是什么.几点说明:

我收到纯文本而不是文件名,所以我不能使用扩展名作为提示.

用户不需要输入完整的源代码,也可以输入代码片段(即可以不包括包含/导入部分).

我很清楚,我选择的任何算法都不是100%证明,当然对于非常短的输入代码(例如,Python和Ruby都可以接受),在这种情况下我仍然需要用户的帮助,但我想尽量减少用户参与流程以最大限度地减少错误.

例子:

如果文本包含"x-> y()",我可能确定它是C++(?)

如果文本包含"public static void main",我可能肯定知道它是Java(?)

如果文本包含"for x:= y to z do begin",我可能确定它是Pascal(?)

我的问题:

    您是否熟悉任何标准库/方法,以自动确定输入源代码的语言是什么?

    什么是独特的代码"令牌",我当然可以将一种语言与另一种语言区分开来?

我正在用Python编写代码,但我认为这个问题与语言无关.

谢谢



1> 小智..:

Vim具有自动检测文件类型功能.如果您下载vim源代码,您将找到/vim/runtime/filetype.vim文件.

对于每种语言,它检查文件的扩展名,并且对于其中一些(最常见),它有一个函数可以从源代码中获取文件类型.你可以检查一下.代码很容易理解,并且有一些非常有用的注释.


Aaron:"还有一些(最常见的)有一个函数可以从源代码中获取文件类型".即使是注释的代码,它完全符合OP的要求,也符合-1的要求?
+1来纠正downvote :)
@Aaron:老兄至少阅读投票或发帖之间的全部答案......我知道我的英语不是那么好,但似乎约翰内斯得到了:)
+1来过度修正downvote

2> BCS..:

构建一个通用的标记化器,然后对它们使用贝叶斯过滤器.使用现有的"用户检查框"系统来训练它.


我建议使用这种技术向用户推荐语言.如果他们确定它是错的,让他们改写它的猜测.
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有