什么是tinypg?它是如何工作的?我知道它是一个“编译器编译器”,但我如何开始在C_中创建自己的编译器呢?
最佳答案
我已经大致理解了你如何使用它,这里有一个简短的说明。
TinyPG是一个完整的编译器IDE,带有用于regexp、ebnf和c/vb的Windows图形用户界面。以下概述了在tinypg中开发自己的“编译器”的过程:
使用Regular Expressions.定义终端
您可以在tinypg中编写这些reyexps,它基本上从输入源代码中提取令牌。
regexp在.net中受本机支持,这意味着即使生成的“编译器”代码也使用.net的regexp。
在Extended BNF元语法中定义非终端和解析器规则。
你在tinypg中编写ebnf来描述你选择的语言。
一些描述现代编程语言的免费的。
在托管代码中定义编译器。
您可以在tinypg中编写c/vb代码,将令牌转换为您选择的输出。
每个BNF语法规则仅一个C/VB代码块。
tinypg可以使用命令行编译器编译并运行“tokenizer+parser+complier”。
tinypg为新的“编译器”生成c代码。
使用regex和ebnf从输入的源代码生成BNF Grammers。
使用c/vb代码将此解析树转换为输出。
您可以在C或VB.NET中开发编译器的前端。
基本前端将使用输入文件调用生成的C类,并显示输出。
首先,您可以在提供的tinypg示例中打开“simple expression2.tpg”文件,以查看计算器“编译器”的演示。