额,现在已经有了while语句,支持四则运算,比较运算,赋值表达式,所有变量都是double浮点数类型,在运行完程序后自动将所有变量的值显示出来。
目前语法树是这样的:
当然用了访问者模式,每个继承IVisitor的类都能有自己的功能,比如求值啊,格式化代码(将语法树转换成代码),求导啊(只对表达式有用)。我觉得这种模式真的方便地不得了。
再贴一下运行的代码吧:
这里是求带一个封号的表达式,带大括号的语句块,while语句块的执行过程。前面两个都好办,直接执行就行了。后面的while语句的condition由于Visit的返回值只能是void,所以建了一个mLastResult变量,用来保存每次返回的值。然后每次执行body判断一下喽。
功能还在加。
时间: 2024-12-10 20:20:33