Arithmetic evaluation: Difference between revisions

m
Line 1,314:
=={{header|Elena}}==
ELENA 6.x :
<syntaxhighlight lang="elena">/// a program which parses and evaluates arithmetic expressions.import system'routines;
 
import system'routines;
import extensions;
import extensions'text;
 
// --- Token ---
 
class Token
Line 1,341 ⟶ 1,337:
Number = _value.toReal();
}
 
// --- Node ---
 
class Node
Line 1,355 ⟶ 1,349:
}
}
 
// --- SummaryNode
 
class SummaryNode : Node
Line 1,365 ⟶ 1,357:
Number = Left.Number + Right.Number;
}
 
// --- DifferenceNode ---
 
class DifferenceNode : Node
Line 1,375 ⟶ 1,365:
Number = Left.Number - Right.Number;
}
 
// --- ProductNode ---
 
class ProductNode : Node
Line 1,385 ⟶ 1,373:
Number = Left.Number * Right.Number;
}
 
// --- FractionNode ---
 
class FractionNode : Node
Line 1,395 ⟶ 1,381:
Number = Left.Number / Right.Number;
}
 
// --- Expression ---
 
class Expression
Line 1,420 ⟶ 1,404:
get Number() => Top;
}
 
// --- States ---
 
singleton operatorState
Line 1,479 ⟶ 1,461:
}
}
 
// --- Scope ---
 
class Scope
Line 1,584 ⟶ 1,564:
dispatch() => _state;
}
 
// ---- Parser ----
 
class Parser
Line 1,673 ⟶ 1,651:
catch(Exception e)
{
console.writeLine(e.toPrintable()):"Invalid Expression"
//console.writeLine:"Invalid Expression"
};
11

edits