在我写下我的问题之前,只是提供一些背景信息。我正在用Java编写玩具编程语言,因为我已经对编译器/解释器等感兴趣。我已经掌握了这个小语言的基础知识,它的沿线是:在解释性编程语言中实现函数
ADD 5, 6 -> c
PRINT c
# will store 11 into c
这是非常基本的,但它是一个开始。因为我只有16岁,所以我不能阅读关于技术方面的书籍,他们对我来说非常沉闷/平淡,我喜欢阅读互联网上的文章,或者在HN上发布的小教程(例如用C编写计划) 。总之,我真的很困惑如何在语言实现的功能,e.g
# only integers since that's easier than multiple data types
FUNC whatever(a, b) -> return a + b
# used like
PRINT whatever(5, 6)
我可以实现的功能将是真正破解-Y,变成面条的一个混乱的烂摊子的唯一途径。我想知道在编程语言中实现函数的“适当”方法。关于该语言的一些信息:我还没有实现AST,因为我还没有学会它,我为这种语言编写了一个词法分析器,分析器非常简单,只是从上到下,从左到右分析(忘记了这个递归下降解析器的技术术语?)。
对不起,如果这是一个坏问题,模糊,类似的东西。之前从未发布任何有关堆栈溢出的内容,而且我已经编写了一些代码来尝试实现函数,但由于它没有太好(这是几天前),所以删除了它,并且我问这个,因为我想有一套完整的实施计划,而且我相信它会起作用。
谢谢!
这是完美的,谢谢!是否有任何资源可以向我推荐我可以学习语言如何在堆栈级别上工作的资源? – dean 2014-11-07 12:21:45
这似乎是一个很好的起点:http://en.wikipedia.org/wiki/X86_calling_conventions – 2014-11-07 20:48:52
非常感谢! – dean 2014-11-07 23:14:26