什么是TinyPG,它是如何工作的?

Rob*_*cks 4 c# tinypg compiler-compiler

什么是TinyPG,它是如何工作的?我知道它是一个"编译器 - 编译器",但我如何开始并在C#中创建自己的编译器?

Rob*_*cks 8

我已经了解了你如何使用它,这里有一个简短的介绍.

TinyPG是一个完整的编译器 - 编译器IDE,具有用于RegExp,EBNF和C#/ VB的Windows GUI.以下概述了在TinyPG中开发自己的"编译器"的过程:

您可以使用正则表达式定义终端.

  • 你在TinyPG中编写这些ReyExps,它基本上从输入源代码中提取标记.
  • .NET中本身支持RegExps,这意味着即使您生成的"编译器"代码也使用.NET的RegExps.

您可以在扩展BNF元语法中定义非终端和解析器规则.

  • 您在TinyPG中编写EBNF,以描述您选择的语言.
  • 一些描述现代编程语言的免费BNF语法.

您可以在托管代码中定义编译器.

  • 您在TinyPG中编写C#/ VB代码,将令牌转换为您选择的输出.
  • 每个BNF语法规则只有一个C#/ VB代码块.
  • TinyPG可以使用命令行编译器编译和运行"tokenizer + parser + complier".

TinyPG为您的新"编译器"生成C#代码.

  • 使用您的RegEx和您的EBNF从输入的源代码生成解析树.
  • 使用C#/ VB代码将此解析树转换为输出.

您可以使用C#或VB.NET开发编译器的前端.

  • 基本前端将使用输入文件调用生成的C#类,并显示输出.

首先,您可以在提供的TinyPG样本中打开"simple expression2.tpg"文件,以查看计算器"编译器"的演示.