想做一个自动编译并执行工具(代码从网页端输入的,因此不包含扩展名),编译/解释执行范围是C++(C), Pascal, Python, Ruby, Java, JavaScript, C#等。我希望简化流程,即用户只需输入代码,不需要自己去选择语言,也能正确编译/解释执行。
(由于C++编译器可以编译C,因此可以不需要区分C++与C)
爆栈上有一个比较类似的问题:
http://stackoverflow.com/questions/475033/detecting-programming-language-from-a-snippet不过我这里的情况是代码比较完整,它99%是某一个编译器能够编译成功的代码,那么如何对它进行代码语言探测?
=======
我想把它放在JavaScript前端层面来实现,因此可能Generate AST这种庞大的solution不是很有用。
我想到的比较快速的方法是语言特征检测,由于代码完整,因此语言特征可能会很明显。但是准确性如何就不得而知了。
另一种方法(highlight.js)是用每个语言的highlighter渲染一遍,看哪个语言渲染到的比较多。然而这显然很不准确。。比如说{}在C++里是blocks,然而在Pascal里是comments,渲染为Pascal的时候,成功渲染(着色)量不见得比C++少。
不知大家有什么想法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/81660
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.