Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言创建一种编程语言#_C#_Programming Languages - Fatal编程技术网

C# 用C语言创建一种编程语言#

C# 用C语言创建一种编程语言#,c#,programming-languages,C#,Programming Languages,首先,我需要一种编程语言来在该语言和我的应用程序环境之间进行交互。我写了一些东西,只知道if,void和function,变量及其作用域,当然还有调用内置函数,这些函数都工作得很好。但现在,我被一些部分困住了,意识到我不能继续简单的文本解析,还有很多事情我不能做 为此,我搜索了这个话题,得到了答案。这很好,但我有两个问题 我不明白 它生成控制台代码,但我想在Windows窗体应用程序中使用它们 简言之,有没有人知道我如何在不学习词汇、思考的情况下创造一门语言 谢谢。创建自己的语言是可能的,但非常

首先,我需要一种编程语言来在该语言和我的应用程序环境之间进行交互。我写了一些东西,只知道
if
void
function
,变量及其作用域,当然还有调用内置函数,这些函数都工作得很好。但现在,我被一些部分困住了,意识到我不能继续简单的文本解析,还有很多事情我不能做

为此,我搜索了这个话题,得到了答案。这很好,但我有两个问题

  • 我不明白
  • 它生成控制台代码,但我想在Windows窗体应用程序中使用它们
  • 简言之,有没有人知道我如何在不学习词汇、思考的情况下创造一门语言


    谢谢。

    创建自己的语言是可能的,但非常具有挑战性。没有像lexers这样的东西你是做不好的


    创建您自己的语言也会迫使您的客户学习另一种语言,而且对于这种假定的语言,不会有现存的第三方代码或库


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

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

    这是你计划的延伸吗?用C#编写的库函数集合

    或者是一种完全独立的语言,用C语言编写解释器?(我猜是这样的)

    如果是后者,在过去的好日子里,我会把你指给Lex/Yacc(GIYF)

    现在,我只能说ANTLR。查看和

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


    “(简而言之,有没有人知道我如何在不通过lexer,reflections等课程的情况下创造自己的语言)”()。。。嗯,不。你需要学习基础知识来理解如何创造自己真正独特的语言。你需要这个做什么?请记住,我们有DLR,它允许您将脚本语言嵌入到应用程序中,这对您来说足够了吗?这是一项学习任务吗?或者你真的想做点什么。如果是后者,你可以在c#中使用很多脚本语言——irons(iron python、iron ruby等)、boo、f#、JavaScript引擎;可能是lua等…这不是学习任务,我的引擎需要这个!。我想我做了一个很好的2d级别编辑器,我想用代码与它交互。DLR?嗯,我想我见过它,但不知道它的名字。哦DLR我忘了那是什么,是的,但我从未尝试嵌入。我应该试试。然后我的建议是:使用已经存在的东西,花时间编写项目特有的东西,而不是编写引擎。做好这件事真的很难,需要专家的知识。做得不好只是“难”,而且会很麻烦,很慢。谢谢。看起来真漂亮!我现在就试试。链接断了吗?我想在我计划制作的unity3d游戏中制作一个宏语言系统…Antrl3的链接被破坏了,因为它现在是Antrl4。谷歌是你的朋友;-)相信我,这是值得的。是的,没错。谢谢你的回复。