我正在为项目工作开发一种新的编程语言。新的语言编译器为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>
答案 0 :(得分:1)
如果这是某种类别的对齐,您应该寻求澄清或进一步说明。如果您提供有关您尝试做的更多详细信息,我们可以提供更具体的指南。
你可能想看一下Bison manual关于如何在其中编写语法的例子(野牛是GNU yacc workalike,除了奇特的东西它应该适用于你有的任何yacc )。我不知道任何输出Python的yacc / lex工具,bison / flex可以被哄骗到C ++和Java,但不是Python。将生成的解析器连接到Python可能比获取更加痛苦。
还有其他更高级别的工具(即更多的常规工作),如ANTLR。
查看comp.compìlers新闻组的常见问题解答,它应该指向特定的工具。