我编写了一个程序,将字符串输入转换为某些类的复杂C#对象。然后,此对象允许执行某些操作(生成某些内容)。
通常这里是我的编译器'使用方法:
Preprocessing
|
v
Lexer analysis
|
v
Parsing into syntax tree
|
v
Visiting produced tree and generating output object.
|
v
Output
这个输出是我复杂的C#对象。它包含在访问者分析表达式树时扩展的值。
所以我的问题是,我是否允许告诉我的程序编译此输入(所以现在它是课程的对象 - 不是一种不同的语言')
维基说:
编译器是一种计算机程序(或一组程序),它将用编程语言(源语言)编写的源代码转换为另一种计算机语言(目标语言)
我真的不知道因为我从表达到C#对象的转换,这可以由.NET环境执行(这个简单的表达式不能由环境运行)
更详细地说,用户在程序运行时提供此输入,因此它不是现有C#编译器的任何覆盖。
答案 0 :(得分:0)
你可以,但人们会与你争论。
有一小部分人认为它不是编译器,除非它输出本机代码,它排除了Java和C#。
如果输出某种在物理机或虚拟机上运行的字节码,我认为大多数人会选择compiler
标签。
如果它从一种高级语言编译到另一种高级语言,通常会使用transpiler
这个词。
如果你的情况,我说你已经编写了编译器的第一步 - 或者,根据输出的样子,你可能已经将解析器编写成Abstract Syntax Tree
。< / p>