根据用户输入声明 类

Declare classes based on user input

我正在尝试用 C++ 为我的简单语言编写一个编译器,但我不确定当相关语言声明用户定义时我应该如何声明用户定义的 class定义 class.

例如,在这种假定的语言中,用户写道:

CLASS Foo {
    int bar;
}

我的编译器如何读取它然后在 C++ 中生成等效项?我希望编译器在 C++ 中执行以下代码:

class Foo {
    int bar;
}

语法相同。这在 C++ 中可行吗?

您所描述的是一个 转译器 ,将一种语言的源代码转换为另一种语言的源代码,在本例中为 C++。

要做到这一点,您需要了解如何将您的语言的语义映射到目标语言。因此,从小处着手,并在机器就位时迭代扩展。您将面临挑战,仅举几例:

  1. 我的类只是为了数据还是数据和行为?
  2. 我的语言有继承性吗?单身的?多个?
  3. 我的语言是否支持 public 与私有的概念?
  4. 用户可以include他们在其他文件中所做的声明吗?

一旦您了解了基础知识,您就需要将其全部纳入一个工作框架中。就像编译器一样会有文件管理、符号管理和解析等,最后还需要挂接一个工具链。我假设您希望用户体验是:

  1. 用您的语言编写源代码
  2. 调用你的转译器
  3. 您的转译器将源代码转换为 C++
  4. 您的转译器针对您刚刚发出的内容调用 C++ 编译器
  5. 最后,如果一切顺利,文件链接生成executable/library