Anonymous user
Arithmetic evaluation: Difference between revisions
→{{header|Elena}}
Line 1,061:
=={{header|Elena}}==
ELENA 3.
<lang elena>import system'routines.
import extensions.
Line 1,070:
object theValue.
object rprop level ::
constructor new level:aLevel
Line 1,088:
class Node
{
object prop left ::
object prop right ::
object rprop level ::
constructor new level:aLevel
Line 1,101:
{
constructor new level:aLevel
<= new level
number = theLeft number + theRight number.
Line 1,109:
{
constructor new level:aLevel
<= new level
number = theLeft number - theRight number.
Line 1,117:
{
constructor new level:aLevel
<= new level
number = theLeft number * theRight number.
Line 1,125:
{
constructor new level:aLevel
<= new level
number = theLeft number / theRight number.
Line 1,132:
class Expression
{
object rprop level ::
object prop top ::
constructor new level:aLevel
Line 1,151:
ch =>
$40 [ // (
^ closure
];
! [
^ closure
].
].
Line 1,162:
ch =>
$41 [ // )
^ closure
];
$42 [ // *
^ closure
];
$43 [ // +
^ closure
];
$45 [ // -
^ closure
];
$47 [ // /
^ closure
];
! [
^ closure append:ch
].
].
Line 1,185:
ch =>
$40 [ // (
^ closure
];
$45 [ // -
^ closure
];
! [
^ closure
].
].
Line 1,211:
]
[
theToken := theParser appendToken expression:theExpression level:theLevel.
]
[
theToken := nil.
Line 1,223:
]
[
theToken := nil.
Line 1,230:
]
[
theToken := nil.
Line 1,237:
]
[
theToken := nil.
Line 1,244:
]
[
theToken := nil.
Line 1,253:
]
[
if (theLevel < 10)
Line 1,270:
append literal:aLiteral
[
aLiteral
]
[
theState := startState
]
[
theState := tokenState
]
[
theState := operatorState
Line 1,299:
var aToken := Token new level:aLevel.
anExpression set top:($self append last
^ aToken
Line 1,306:
appendSummary expression:anExpression level:aLevel
[
anExpression set top
]
appendDifference expression:anExpression level:aLevel
[
anExpression set top
]
appendProduct expression:anExpression level:aLevel
[
anExpression set top
]
appendFraction expression:anExpression level:aLevel
[
anExpression set top
]
appendSubexpression expression:anExpression level:aLevel
[
anExpression set top
]
Line 1,353:
var aScope := Scope new parser:$self.
aText
^ aScope number
Line 1,364:
var aParser := Parser new.
$(console readLine;
[
try(console
{
[
console writeLine:"Invalid Expression"
]
|