我想检测的编程语言与红宝石源代码语言分析
例如: (PHP)
$a = array("1","2","3");
print_r($a);
(红宝石)
def index
end
等
什么宝石可以做到这一点?
我想检测的编程语言与红宝石源代码语言分析
例如: (PHP)
$a = array("1","2","3");
print_r($a);
(红宝石)
def index
end
等
什么宝石可以做到这一点?
Linguist可能会为你做这件事(这是GitHub用来检测项目中的主要语言)。
如果你想建立自己的,那将是一个很好的开始。这里还有一些关于你可能需要做什么才能做出来的更多的注意事项。
文件扩展名是一个很好的做法。例如:
.rb
- 几乎总是红宝石.cpp
- 几乎都是C++.h
- 可能是C/C++...等,然后通过阅读代码行。线。通常有一些常见的关键词,或者将这些词语放在代码中,这些词语会很快让你知道它是用什么语言编写的。回顾一些你想要支持的语言的“入门”教程网站应该给你一个很好的总结这些事情,而不需要自己实际学习语言。所有你真正需要的是每种语言的一些独特的东西,你可以选择一种语言或另一种语言。
您也可以使用贝叶斯学习过滤器(在Ruby中有一个名为Classifier的模块,它似乎这样做)来训练更灵活的学习引擎,以便通过语言自行识别代码。由于编程语言是高度结构化的文本,所以您的学习软件不需要很长时间才能非常好地识别语言。如果你想完全疯狂,你甚至可以训练它不仅能识别语言,还能识别代码可以编译的最低语言版本。例如,在Java中,他们在语言生命周期的某个特定点添加了泛型。如果您在代码中看到泛型的使用,那么您知道该源代码是为某个最低版本的Java编写的,等等。
稍微复杂一些,但不是太多,将会出现如.erb
这样的问题文件。你是否称这些“嵌入式Ruby”,你称他们为“Ruby”,还是你计算了HTML与Ruby和JavaScript之间的界限,并用最多的语言称呼它,或者你只是用ALL标记文件找到的语言?我想这更像是一个设计决定。
Source classifier是一个应该为你想要做的事情工作的宝石。源分类器使用在“计算机语言基准游戏”生成的语料库上训练的贝叶斯分类器来识别编程语言:http://shootout.alioth.debian.org/。它是用Ruby编写的,可作为宝石使用。开箱即用的SourceClassifier可识别C,Java,Javascript,Perl,Python和Ruby。使用贝叶斯分类器来识别源代码的一个很好的优点是,即使是错误的匹配仍然会提供一些可用的突出显示。要训练分类器以识别新语言,请从github下载源代码。
我唯一能想到的就是https://github.com/github/linguist。一个美妙的宝石,但我不认为这正是你需要的。