这里有一个链接可以了解lis.py: http://norvig.com/lispy.html
我正在尝试在Go语言中实现一个微型lisp解释器。我受到Peter Norvig在Python中实现的Lis.py lisp解释器的启发。
我的问题是,我无法想到一种相对高效的解析s表达式的方法。我想到了一个计数器,当它遇到“(”时加1,当它遇到“)”时减1。这样,当计数器为0时,你知道你有一个完整的表达式。
但问题在于,这意味着你必须循环遍历每个表达式,这将使得解释器对于任何大型程序都变得异常缓慢。
如果有任何其他替代方法,那就太好了,因为我目前也想不出更好的方法。
我的问题是,我无法想到一种相对高效的解析s表达式的方法。我想到了一个计数器,当它遇到“(”时加1,当它遇到“)”时减1。这样,当计数器为0时,你知道你有一个完整的表达式。
但问题在于,这意味着你必须循环遍历每个表达式,这将使得解释器对于任何大型程序都变得异常缓慢。
如果有任何其他替代方法,那就太好了,因为我目前也想不出更好的方法。