我正在尝试自己创建一种脚本语言(它不一定是完美的 - 尽管如果它会很好),主要是因为我这样做很有趣并且了解它们是如何的创建等。
根据这里的答案:Creating a scripting language我应该研究的是:http://msdn.microsoft.com/en-us/library/xawadt95%28VS.85%29.aspx。但是,我完全不知道MSDN页面是关于什么的。
有人可以帮忙吗?
P.S。 是否有任何面向Windows脚本宿主的免费/开源脚本语言,还有可以使用的完整源代码,我可以使用它?
谢谢
答案 0 :(得分:4)
我开始编写如何为Windows脚本宿主实现自己的语言引擎的指南,但是我已经没有用完了,也从未完成它。
http://blogs.msdn.com/ericlippert/archive/tags/SimpleScript/default.aspx
答案 1 :(得分:3)
如果您这样做是为了娱乐并了解如何创建语言,我建议您远离Windows Script Host。而是尝试从更好的示例中学习。一个良好的第一步是让自己进入http://www.lua.org/,学习语言,阅读它是如何实现的,并自己动手。另一种语言从语言的角度来看是可怕的,但很容易实现Tcl。从Ousterhout的原始Usenix论文开始。
我希望我能推荐一本关于设计和实现自己的编程语言的好书。我从未见过一个。 (我在这些方面看到了一些不好的书,但不希望不尊重作者,我不会识别它们。)但如果你能在一个好的大学图书馆度过一段美好的时光,你将能够找到一些有趣的文件。您可能还会发现检查我们的弗里德曼和魔杖的书Essentials of Programming Languages是值得的 - 尽管它非常技术性,但它确实有一些关于编写口译员的好东西。 P. J. Brown还有一本很好(但非常古老)的书叫Writing Interactive Compilers and Interpreters。
答案 2 :(得分:0)
制作简单脚本中断程序的简单方法是将源代码由换行符分割成数组并循环遍历每个成员。这是一个例子 string source = @“ 打印Hello World! 停 “); foreach(source.split('\ n')中的字符串a) { if(a.StartsWith(“print”)) { Console.WriteLine(a.Substring(6)); } if(a ==“停止”) { 到Console.ReadLine(); }