Ale*_*ung 12 javascript compiler-construction
是否可以使用Javascript编写可以支持其他语言编写的编译器?
比方说,我有一段HTML.
<script language="cpp" id="cppScriptBlock" EntryPoint="main">
int main() {
cout << "<h1>CPPHeader</h1>";
}
</script>
<script language="java" id="javaScriptBlock" EntryPoint="MyJavaClass">
public class MyJavaClass {
public final void main() {
java.lang.System.out.println("<h1>JavaHeader</h1>");
}
}
</script>
<script language="csharp" id="csharpScriptBlock" EntryPoint="MyCSharpClass ">
public class MyCSharpClass {
public static void Main() {
System.Console.WriteLine("<h1>CSharpHeader</h1>");
}
}
</script>
<script language="javascript">
$("#cppScriptBlock").compileAndRun();
$("#javaScriptBlock").compileAndRun();
$("#csharpScriptBlock").compileAndRun();
</script>
Run Code Online (Sandbox Code Playgroud)
最后生成以下HTML
<h1>CPPHeader</h1>
<h1>JavaHeader</h1>
<h1>CSharpHeader</h1>
Run Code Online (Sandbox Code Playgroud)
可能吗?
亚历克斯
Rob*_*ben 18
它根据您定义的语言结构生成JavaScript解析器.
Jison将无上下文语法作为输入,并输出能够解析该语法描述的语言的JavaScript文件.然后,您可以使用生成的脚本来解析输入,并根据输入接受,拒绝或执行操作.
- 来自文档
PS:CoffeeScript!也是用这个创建的.:)
是的,但是你需要做很多工作.就像真正的编译器一样,您必须解析代码,将其转换为中间代码等.之后,您必须模拟环境,包括这些语言中包含的所有运行时库.简而言之,它不实用,但它是可能的.
是的,Javascript是Turing Complete.您可以使用任何语言编写代码中的任何内容.当然,这包括编译器.我无法想象有任何理由这样做过.如果你已经足够Javascript来编写编译器,你可能只想用javascript而不是其他语言编写代码.
| 归档时间: |
|
| 查看次数: |
9895 次 |
| 最近记录: |