Rex*_*ing 16 c programming-languages project
最近,我在寻找有关今年夏天我可以使用C构建的想法,我发现了这篇文章:学习C的有趣项目?
实现编程语言.这不一定非常难 - 我做了一个不能命名的语言 - 但它会迫使你学习C语言的很多重要部分.如果你不想写一个词法分析器和/或解析器你自己,你可以使用lex/flex和yacc/bison,但是如果你打算这样做,你可能想要从一个更小的项目开始.
我对实现编程语言答案很有兴趣,我想知道如何开始这个?我已经阅读了整本K&R书,我也完成了一些练习.如果重要的话,我在C++和Java方面也有一些经验.有小费吗?谢谢!
小智 7
我只能说,我看到很多人问诸如“我如何制作编程语言?”之类的问题。或者“制作一种编程语言有多难”,大多数答案只是告诉他们你必须经过多年的大学学习并阅读 1000 页长的书籍。我在这里告诉大家,您可以发布这些答案,但这对他们制作编程语言的旅程没有任何帮助。我 16 岁,从事编程近 2 年,我编写编程语言。面向对象的也相当高级,但我没有读过任何书,我也没有读过 8 年的大学。为了让人们开始,这里有一个用 C# 编写的简单编程语言:
string code = "print Hello World";
foreach (string a in code.Split('\n'))
{
    if (a.StartsWith("print "))
    {
        Console.WriteLine(a.Substring(6));
    }
}
任何了解基本 C# 的人都应该能够理解这一点。如果没有一些编程经验,您就无法开始编写编程语言。确保你学习了一门编程语言并确保你对它有很多了解,然后开始编写简单的代码,就像我发布的那样,通过实验和实践,你将开始编写一些复杂的编程语言。时间 :)
我从一个简单的桌面计算器程序开始,可以读取如下内容:
5 + 10*3
并打印答案.然后你可以进行添加变量,控制流程,甚至功能.
从一个非常简单的(玩具)语言开始; 稍后您可以创建更复杂的语法.
你可以写一个解释器来解析字符串,比如
integer x
integer y
set x, 2
set y, 5
add x, y // x = x + y
print x
并立即评估每一行.如果将行存储在向量中,则可以很容易地使用goto命令实现循环.
一个例子,另一个世界(老式游戏)
脚本编辑器:
