9
,我想要什么得到7
然后我从文件中读取文件内容1+2*3
。像这样的代码,它运作良好
ReadFrom
"read the equation from ./formular.txt"
| fileContents |
fileContents := FileStream
readOnlyFileNamed: 'test.txt'
do: [:f | f contents ].
^fileContents.
但是如何将字符串“1 + 2 * 3”的5个字符存储到集合中,我还可以使用二叉树来计算方程式?有人可以给我一些提示吗?首先感谢:)
答案 0 :(得分:2)
The SmaCC tutorial最终建立了你想要的东西。
引用上述教程:
我们添加到语法顶部的两行表示“+”和“ - ”从左到右进行评估并具有相同的优先级,低于“*”和“/”。< / p>
SmaCC是Smalltalk的完整解析器生成器,根据您的需要可能有点过分。
如果您只想构建一个简单的计算器,可以使用Shunting-yard algorithm将中缀数学表达式转换为RPN并轻松评估。
答案 1 :(得分:0)
也许在顶部添加运算符的优先级:
%left "+" "-";
%left "*" "/";