根据用户输入声明 类
Declare classes based on user input
我正在尝试用 C++ 为我的简单语言编写一个编译器,但我不确定当相关语言声明用户定义时我应该如何声明用户定义的 class定义 class.
例如,在这种假定的语言中,用户写道:
CLASS Foo {
int bar;
}
我的编译器如何读取它然后在 C++ 中生成等效项?我希望编译器在 C++ 中执行以下代码:
class Foo {
int bar;
}
语法相同。这在 C++ 中可行吗?
您所描述的是一个 转译器 ,将一种语言的源代码转换为另一种语言的源代码,在本例中为 C++。
要做到这一点,您需要了解如何将您的语言的语义映射到目标语言。因此,从小处着手,并在机器就位时迭代扩展。您将面临挑战,仅举几例:
- 我的类只是为了数据还是数据和行为?
- 我的语言有继承性吗?单身的?多个?
- 我的语言是否支持 public 与私有的概念?
- 用户可以
include
他们在其他文件中所做的声明吗?
一旦您了解了基础知识,您就需要将其全部纳入一个工作框架中。就像编译器一样会有文件管理、符号管理和解析等,最后还需要挂接一个工具链。我假设您希望用户体验是:
- 用您的语言编写源代码
- 调用你的转译器
- 您的转译器将源代码转换为 C++
- 您的转译器针对您刚刚发出的内容调用 C++ 编译器
- 最后,如果一切顺利,文件链接生成executable/library
我正在尝试用 C++ 为我的简单语言编写一个编译器,但我不确定当相关语言声明用户定义时我应该如何声明用户定义的 class定义 class.
例如,在这种假定的语言中,用户写道:
CLASS Foo {
int bar;
}
我的编译器如何读取它然后在 C++ 中生成等效项?我希望编译器在 C++ 中执行以下代码:
class Foo {
int bar;
}
语法相同。这在 C++ 中可行吗?
您所描述的是一个 转译器 ,将一种语言的源代码转换为另一种语言的源代码,在本例中为 C++。
要做到这一点,您需要了解如何将您的语言的语义映射到目标语言。因此,从小处着手,并在机器就位时迭代扩展。您将面临挑战,仅举几例:
- 我的类只是为了数据还是数据和行为?
- 我的语言有继承性吗?单身的?多个?
- 我的语言是否支持 public 与私有的概念?
- 用户可以
include
他们在其他文件中所做的声明吗?
一旦您了解了基础知识,您就需要将其全部纳入一个工作框架中。就像编译器一样会有文件管理、符号管理和解析等,最后还需要挂接一个工具链。我假设您希望用户体验是:
- 用您的语言编写源代码
- 调用你的转译器
- 您的转译器将源代码转换为 C++
- 您的转译器针对您刚刚发出的内容调用 C++ 编译器
- 最后,如果一切顺利,文件链接生成executable/library