5

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

4

1 回答 1

8

我已经大致了解了您如何使用它,这里有一个简短的说明。

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

您使用正则表达式定义终端。

  • 您在 TinyPG 中编写这些 ReyExp,它基本上从输入源代码中提取标记。
  • .NET 原生支持正则表达式,这意味着即使您生成的“编译器”代码也使用 .NET 的正则表达式。

您在扩展 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”文件,查看计算器“编译器”的演示。

于 2009-09-07T09:33:47.110 回答