我可以打电话告诉我的程序是编译器

时间:2016-04-23 19:03:44

标签: c# compilation

我编写了一个程序,将字符串输入转换为某些类的复杂C#对象。然后,此对象允许执行某些操作(生成某些内容)。

通常这里是我的编译器'使用方法:

Preprocessing
     |
     v
   Lexer analysis
     |
     v
   Parsing into syntax tree
     |
     v
  Visiting produced tree and generating output object.
     |
     v
   Output

这个输出是我复杂的C#对象。它包含在访问者分析表达式树时扩展的值。

所以我的问题是,我是否允许告诉我的程序编译此输入(所以现在它是课程的对象 - 不是一种不同的语言')

维基说:

  

编译器是一种计算机程序(或一组程序),它将用编程语言(源语言)编写的源代码转换为另一种计算机语言(目标语言)

我真的不知道因为我从表达到C#对象的转换,这可以由.NET环境执行(这个简单的表达式不能由环境运行)

更详细地说,用户在程序运行时提供此输入,因此它不是现有C#编译器的任何覆盖。

1 个答案:

答案 0 :(得分:0)

你可以,但人们会与你争论。

有一小部分人认为它不是编译器,除非它输出本机代码,它排除了Java和C#。

如果输出某种在物理机或虚拟机上运行的字节码,我认为大多数人会选择compiler标签。

如果它从一种高级语言编译到另一种高级语言,通常会使用transpiler这个词。

如果你的情况,我说你已经编写了编译器的第一步 - 或者,根据输出的样子,你可能已经将解析器编写成Abstract Syntax Tree。< / p>