Anonymous user
Arithmetic evaluation: Difference between revisions
→{{header|Elena}}
m (→{{header|Sidef}}: code simplifications) |
|||
Line 1,060:
=={{header|Elena}}==
<lang elena>#define system.
#define system'routines.
#define extensions.
Line 1,075 ⟶ 1,076:
#method level = theLevel.
#method append
[
theValue += aChar.
]
#method number =
}
Line 1,120 ⟶ 1,121:
#method number = theLeft number - theRight number.
}
// --- ProductNode ---▼
#class ProductNode :: Node
Line 1,161 ⟶ 1,160:
#method number => theTop.
}
#symbol operatorState = (:ch)
Line 1,169 ⟶ 1,170:
]
! [
self new &token append
].
].
Line 1,193 ⟶ 1,194:
]
! [
self append
].
].
Line 1,207 ⟶ 1,208:
]
! [
self new &token append
].
].
Line 1,277 ⟶ 1,278:
]
#method append
[
((ch >= 48) and:(ch < 58))
? [ theToken append
! [ #throw InvalidArgumentException new &message:"Invalid expression". ].
]
Line 1,286 ⟶ 1,287:
#method append &literal:aLiteral
[
]
Line 1,347 ⟶ 1,348:
#method append &last:aLastNode &new:aNewNode
[
($nil == aLastNode)
? [ ^ aNewNode. ].
Line 1,355 ⟶ 1,356:
#var aParent := aLastNode.
#var aCurrent := aLastNode right.
#loop ((
[ aParent := aCurrent. aCurrent := aCurrent right. ].
($nil == aCurrent)
? [ aParent set &right:aNewNode. ]
! [ aNewNode set &left:aCurrent. aParent set &right:aNewNode. ].
Line 1,369 ⟶ 1,370:
#var aScope := Scope new &parser:$self.
^ aScope number.
Line 1,380 ⟶ 1,381:
#var aParser := Parser new.
[
| if &Error:e [
].
].
|