使用C#创建编程语言

10
首先,我希望有一种编程语言可以与我的应用程序环境进行交互。 我写了一些只知道ifvoidfunction、以及变量作用域和调用内置函数的东西,它们都能很好地工作。但现在,我卡在某些部分上,意识到我不能继续使用简单的文本解析,而且有很多事情我无法做到。
因此,我搜索了这个主题,找到了使用C#创建编程语言。 这篇文章还不错,但我有两个问题:
  1. 我看不懂。
  2. 它生成控制台代码,但我想在Windows Forms应用程序中使用它们。
简而言之,是否有人知道如何在不学习词法分析和反射等内容的情况下创建一种语言?
谢谢。

8
简而言之,没有人知道如何在不学习诸如词法分析、反射等课程的情况下制作自己的语言。如果你需要这样做,你需要学习基础知识才能理解如何创建真正独特的语言。你为什么需要这个?记住,我们有DLR,它允许你将一种脚本语言嵌入到应用程序中,这对你是否足够了? - driis
5
这是一个学习任务吗?还是你实际上想要做些什么。如果是后者,在C#中有许多脚本语言可以使用,比如“irons”(iron python、iron ruby等)、boo、f#、JavaScript引擎;可能还有lua等。 - Marc Gravell
这不是学习任务,我需要它来用于我的引擎!我认为我制作了一个不错的2D关卡编辑器,我想用代码与之交互。DLR?嗯,我想我见过它,但不知道它的名字。哦!DLR,我忘记那是什么了,没错但我从未尝试过嵌入它。我应该尝试一下。 - MahanGM
5
我的建议是:使用已经存在的东西,把时间花在编写与你的项目独特相关的部分上,而不是编写引擎。做这些工作实际上非常困难,需要专业知识。而做得不好则只是“困难”,会出现错误和缓慢的情况。 - Marc Gravell
2个回答

4

我不确定我是否真正理解了你的问题。

这是要扩展您的程序吗?一个用C#编写的库函数集合?

还是一个完全独立的语言,您正在用C#编写解释器?(我猜是这样)

如果是后者,在以前的好日子里,我会把您指向Lex/Yacc(GIYF)。

现在,我只能说ANTLR。请查看ANTLR 3五分钟介绍ANTLR v3 C#代码生成器和运行库

只需查看此页面上IDE的屏幕截图即可。

enter image description here

enter image description here


谢谢。看起来很不错!我现在会尝试它。 - MahanGM
1
链接失效了吗?我正在寻找在我计划创建的Unity3D游戏中制作宏语言系统的方法... - Slagmoth
Antrl3的链接已经失效,因为现在是Antrl4。谷歌是你的朋友;-)相信我,这将是值得的。 - Mawg says reinstate Monica

1

创造自己的编程语言是可能的,但也非常具有挑战性。如果没有像词法分析器这样的东西,你是无法做到好的。

创建自己的编程语言还会迫使客户学习另一种语言,并且对于这种假想语言,不会有现成的第三方代码或库。

另一个选择是嵌入现有的语言并通过它公开应用程序的功能。Python 是嵌入的一个非常常见的选择,但还有许多其他选项。我强烈建议,在这个任务中,你考虑嵌入一个现有的语言,而不是发明自己的。


是的,没错。谢谢回复。 - MahanGM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接