repositories
/
mTask.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
.p
[mTask.git]
/
mTaskInterpret.dcl
diff --git
a/mTaskInterpret.dcl
b/mTaskInterpret.dcl
index
557225f
..
0048859
100644
(file)
--- a/
mTaskInterpret.dcl
+++ b/
mTaskInterpret.dcl
@@
-1,21
+1,48
@@
definition module mTaskInterpret
definition module mTaskInterpret
+from Data.Functor.Identity import :: Identity
+from Control.Monad.State import :: State, :: StateT
import mTask
:: BC
= BCNop
import mTask
:: BC
= BCNop
- | BCPush
Int
+ | BCPush
String
| BCPop
//Unary ops
| BCPop
//Unary ops
- | BCNeg
| BCNot
//Binary Int ops
| BCAdd
| BCSub
| BCMul
| BCDiv
| BCNot
//Binary Int ops
| BCAdd
| BCSub
| BCMul
| BCDiv
+ //Binary Bool ops
+ | BCAnd
+ | BCOr
+ | BCEq
+ | BCNeq
+ | BCLes
+ | BCGre
+ | BCLeq
+ | BCGeq
+ //Conditionals and jumping
+ | BCJmp Int
+ | BCJmpT Int
+ | BCJmpF Int
+ //Serial
+ | BCSerialAvail
+ | BCSerialPrint
+ | BCSerialPrintln
+ | BCSerialRead
+ | BCSerialParseInt
+ //Pins
+ | BCAnalogRead String
+ | BCAnalogWrite String
+ | BCDigitalRead String
+ | BCDigitalWrite String
-:: ByteCode a p = BC ((ReadWrite a) BCState -> ([BC], BCState))
+//:: ByteCode a p = BC (BCState -> ([BC], BCState))
+:: ByteCode a p = BC [BC]
+//:: ByteCode a p = BC ((ReadWrite (ByteCode a Expr)) BCState -> ([BC], BCState))
:: BCState = {
a::()
}
:: BCState = {
a::()
}