想做一个自动编译并执行工具(代码从网页端输入的,因此不包含扩展名),编译/解释执行范围是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++少。
不知大家有什么想法?
(由于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++少。
不知大家有什么想法?