我正在尝试自己创建一种脚本语言(它不必是完美的——尽管如果是这样那就太好了),主要是因为我这样做是为了好玩并了解它们是如何创建的等等。
根据这里的答案:创建我应该研究的脚本语言是:http: //msdn.microsoft.com/en-us/library/xawadt95%28VS.85%29.aspx。但是,我完全不知道那个 MSDN 页面是关于什么的。
有人可以帮忙吗?
PS 是否有任何针对 Windows 脚本宿主的免费/开源脚本语言,它们也有完整的源代码可供我使用?
谢谢
我正在尝试自己创建一种脚本语言(它不必是完美的——尽管如果是这样那就太好了),主要是因为我这样做是为了好玩并了解它们是如何创建的等等。
根据这里的答案:创建我应该研究的脚本语言是:http: //msdn.microsoft.com/en-us/library/xawadt95%28VS.85%29.aspx。但是,我完全不知道那个 MSDN 页面是关于什么的。
有人可以帮忙吗?
PS 是否有任何针对 Windows 脚本宿主的免费/开源脚本语言,它们也有完整的源代码可供我使用?
谢谢
如果您这样做是为了好玩并学习如何创建语言,我建议您远离 Windows Script Host。 相反,尝试从更好的例子中学习。一个好的第一步是让自己访问 http://www.lua.org/,学习该语言,了解它是如何实现的,然后自己动手。从语言的角度来看,另一种可怕但很容易实现的语言是Tcl。从 Ousterhout 的原始 Usenix 论文开始。
我希望我能推荐一本关于设计和实现自己的编程语言的好书。我从来没有见过一个。(我看过一些类似这样的坏书,但不想不尊重作者,我不会指认它们。)但是如果你能在一个好的大学图书馆度过一些美好的时光,你将能够找到一些有趣的东西文件。您可能还发现值得查看我们的 Friedman 和 Wand 的书Essentials of Programming Languages——虽然它非常技术性,但它确实有一些关于编写解释器的好东西。PJ Brown 还有一本很好(但很老)的书,名为Writing Interactive Compilers and Interpreters。
制作简单脚本中断器的最简单方法是通过换行符将源代码拆分为一个数组并循环遍历每个成员。这是一个示例字符串 source = @" print Hello World!stop "); foreach(string a in source.split('\n')) { if(a.StartsWith("print ")) { Console.WriteLine(a.Substring(6)); } if(a == "stop") { Console.ReadLine(); }