Arithmetic evaluation: Difference between revisions

Content added Content deleted
m (→‎{{header|Wren}}: Minor tidy)
imported>Arakov
Line 1,904: Line 1,904:
^ weak self.newBracket().gotoStarting()
^ weak self.newBracket().gotoStarting()
}
}
: {
! {
^ weak self.newToken().append(ch).gotoToken()
^ weak self.newToken().append(ch).gotoToken()
}
}
Line 1,930: Line 1,930:
^ weak self.newFraction().gotoOperator()
^ weak self.newFraction().gotoOperator()
}
}
: {
! {
^ weak self.append:ch
^ weak self.append(ch)
}
}
}
}
Line 1,947: Line 1,947:
^ weak self.newToken().append("0").newDifference().gotoOperator()
^ weak self.newToken().append("0").newDifference().gotoOperator()
}
}
: {
! {
^ weak self.newToken().append:ch.gotoToken()
^ weak self.newToken().append(ch).gotoToken()
}
}
}
}
Line 2,014: Line 2,014:
{
{
if (_level < 10)
if (_level < 10)
{ InvalidArgumentException.new:"Invalid expression".raise() };
{ InvalidArgumentException.new("Invalid expression").raise() };
_level := _level - 10
_level := _level - 10
Line 2,023: Line 2,023:
if(ch >= $48 && ch < $58)
if(ch >= $48 && ch < $58)
{
{
_token.append:ch
_token.append(ch)
}
}
else
else
{
{
InvalidArgumentException.new:"Invalid expression".raise()
InvalidArgumentException.new("Invalid expression").raise()
}
}
}
}
Line 2,033: Line 2,033:
append(string s)
append(string s)
{
{
s.forEach:(ch){ self.append:ch }
s.forEach::(ch){ self.append(ch) }
}
}
Line 2,123: Line 2,123:
var scope := Scope.new(self);
var scope := Scope.new(self);


text.forEach:(ch){ scope.eval:ch };
text.forEach::(ch){ scope.eval(ch) };


^ scope.Number
^ scope.Number
Line 2,138: Line 2,138:
try
try
{
{
console.printLine("=",parser.run:text)
console.printLine("=",parser.run(text))
}
}
catch(Exception e)
catch(Exception e)
{
{
console.writeLine:"Invalid Expression"
console.writeLine("Invalid Expression")
};
};