Roe*_*ler 11 language-agnostic parsing programming-languages
我正在构建一个接收源代码作为输入的应用程序,并分析代码的几个方面.它可以接受来自许多常用语言的代码,例如C/C++,C#,Java,Python,PHP,Pascal,SQL等(但是许多语言都不受支持,例如Ada,Cobol,Fortran).知道语言之后,我的应用程序知道该怎么做(我有不同语言的处理程序).
目前我要求用户输入编写代码的编程语言,这很容易出错:尽管用户知道编程语言,但由于鲁莽,他们中的一小部分(在极少数情况下)会点击错误的选项,这打破了系统(即我的分析失败).
在我看来,应该有一种方法可以从输入文本本身中找出(在大多数情况下)语言是什么.几点说明:
例子:
我的问题:
我正在用Python编写代码,但我认为这个问题与语言无关.
谢谢
小智 7
Vim具有自动检测文件类型功能.如果您下载vim源代码,您将找到/vim/runtime/filetype.vim文件.
对于每种语言,它检查文件的扩展名,并且对于其中一些(最常见),它有一个函数可以从源代码中获取文件类型.你可以检查一下.代码很容易理解,并且有一些非常有用的注释.
构建一个通用的标记化器,然后对它们使用贝叶斯过滤器.使用现有的"用户检查框"系统来训练它.
一些想法:
$x->y() 在 PHP 中是有效的,所以如果你认为 C++ 的话请确保没有 $ 符号(尽管我认为你可以在 C 结构中存储函数指针,所以这也可以是 C)。
public static void main
如果大小写正确的话,它是 Java - 写 Main 并且它是 C#。如果您考虑不区分大小写的语言(例如许多脚本语言或 Pascal),这会变得复杂。另一方面,C# 中的 [] 属性语法似乎相当独特。
你也可以尝试使用一种语言的关键字——例如,典型的Option Strict
或者End Sub
是VB之类的,而yield
很可能是C#和initialization
/implementation
或Object Pascal/Delphi。
如果您的应用程序无论如何都在分析源代码,那么您的代码会尝试为每种语言添加分析代码,如果它失败得很严重,那么它就是错误的语言:)
归档时间: |
|
查看次数: |
2115 次 |
最近记录: |