根据用户输入

时间:2017-07-30 10:43:41

标签: c++ class compiler-construction

我试图用我的简单语言在C ++中编写编译器,但我不确定当有问题的语言声明用户定义的类时我应该如何声明用户定义的类

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

CLASS Foo {
    int bar;
}

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

class Foo {
    int bar;
}

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

1 个答案:

答案 0 :(得分:0)

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

要实现这一目标,您需要了解如何将语言的语义映射到目标语言。因此,当您获得机器时,从小开始并迭代地扩展。您将面临挑战,仅举几例:

  1. 我的课程仅用于数据,数据和行为吗?
  2. 我的语言是否有继承权?单?多个?
  3. 我的语言是否支持公共与私人的概念?
  4. 用户include可以在其他文件中发表声明吗?
  5. 一旦你弄清楚了基础知识,你就需要在一个有效的框架中将它全部隐藏起来。就像编译器一样,您将拥有文件管理,符号管理和解决方案等。最后,您需要连接工具链。我假设您希望用户体验为:

    1. 用您的语言撰写来源
    2. 调用您的发布者
    3. 您的转换器将源代码转换为C ++
    4. 您的转发器根据您刚发出的内容调用C ++编译器
    5. 最后,如果一切顺利,文件将被链接以生成可执行文件/库