源到源编译器的新编程语言语法

时间:2013-01-14 17:43:46

标签: compiler-construction

我正在为项目工作开发一种新的编程语言。新的语言编译器为html,我目前正在研究编译器。 我知道编译器有三(3)个阶段。 #1是从语言的语法生成标记的词法阶段,下一个阶段是解析器,然后是输出。我的问题是如何开始编写语法。我是以文章形式还是简短陈述来做。请指出可以帮助我的资源。我已经阅读了很多,并且所有人都没有教你如何编写语法,所以如果你能给出一个例子。我在python中编写编译器并使用名为PLY

的lax / yacc模块

一个例子是:

HTML5 main{
      myHead.id = "cat";
      myTitle;
}

HEAD myHead;
TITLE myTitle = "text";

html中输出的上述代码是:

<DOCTYPE>

<HTML>
   <head id="cat">
       <TITLE>text</TITLE>
   </head>

   <body>
   </body>
</HTML>

1 个答案:

答案 0 :(得分:1)

如果这是某种类别的对齐,您应该寻求澄清或进一步说明。如果您提供有关您尝试做的更多详细信息,我们可以提供更具体的指南。

你可能想看一下Bison manual关于如何在其中编写语法的例子(野牛是GNU yacc workalike,除了奇特的东西它应该适用于你有的任何yacc )。我不知道任何输出Python的yacc / lex工具,bison / flex可以被哄骗到C ++和Java,但不是Python。将生成的解析器连接到Python可能比获取更加痛苦。

还有其他更高级别的工具(即更多的常规工作),如ANTLR

查看comp.compìlers新闻组的常见问题解答,它应该指向特定的工具。