Arithmetic evaluation: Difference between revisions

Line 1,147:
}
 
singleton operatorState : ch
{
[
eval(ch =>)
$40 [ // (
!ch [=>
^ target newBracket; gotoStarting
]; $40 [ // (
^ target newBracket; gotoStarting
! [
^ target newToken]; append:ch; gotoToken
]. ! [
^ target closeBracketnewToken; append:ch; gotoToken
]
! [ ].
]
}
 
singleton tokenState : ch
{
[
eval(ch =>)
$41 [ // )
!ch [=>
^ target closeBracket; gotoToken
]; $41 [ // )
$42 [ // *^ target closeBracket; gotoToken
^ target newProduct]; gotoOperator
]; $42 [ // *
$43 [ // +^ target newProduct; gotoOperator
^ target newSummary]; gotoOperator
]; $43 [ // +
$45 [ // -^ target newSummary; gotoOperator
^ target newDifference]; gotoOperator
]; $45 [ // -
$47 [ // /^ target newDifference; gotoOperator
^ target newFraction]; gotoOperator
]; $47 [ // /
^ target newBracketnewFraction; gotoStartinggotoOperator
! [
^ target append:ch];
]. ! [
^ target append:ch
]
$45 [ // - ].
]
}
 
singleton startState : ch
{
[
eval(ch =>)
$40 [ // (
ch =>
^ target newBracket; gotoStarting
]; $40 [ // (
^ target newBracket; gotoStarting
$45 [ // -
];
^ target newToken; append:"0"; newDifference; gotoOperator
]; $45 [ // -
^ target newToken; append:"0"; newDifference; gotoOperator
! [
^ target newToken]; append:ch; gotoToken
]. ! [
^ target newToken; append:ch; gotoToken
]
].
]
}
 
class Scope
Line 1,359 ⟶ 1,368:
}
 
public program =
[
var aText := StringWriter new.
Line 1,375 ⟶ 1,384:
aText clear
].
].</lang>
 
=={{header|Emacs Lisp}}==
Anonymous user