diff options
Diffstat (limited to 'doc/tutorial/smarthouse')
| -rw-r--r-- | doc/tutorial/smarthouse/Smart.gf | 17 | ||||
| -rw-r--r-- | doc/tutorial/smarthouse/SmartEng.gf | 19 |
2 files changed, 36 insertions, 0 deletions
diff --git a/doc/tutorial/smarthouse/Smart.gf b/doc/tutorial/smarthouse/Smart.gf new file mode 100644 index 000000000..f23082b47 --- /dev/null +++ b/doc/tutorial/smarthouse/Smart.gf @@ -0,0 +1,17 @@ +abstract Smart = { + +flags startcat = Command ; + +cat + Command ; + Kind ; + Action Kind ; + Device Kind ; +fun + CAction : (k : Kind) -> Action k -> Device k -> Command ; + DKindOne : (k : Kind) -> Device k ; + light, fan : Kind ; + switchOn, switchOff : (k : Kind) -> Action k ; + dim : Action light ; +} + diff --git a/doc/tutorial/smarthouse/SmartEng.gf b/doc/tutorial/smarthouse/SmartEng.gf new file mode 100644 index 000000000..0f59cd1e0 --- /dev/null +++ b/doc/tutorial/smarthouse/SmartEng.gf @@ -0,0 +1,19 @@ +--# -path=.:prelude + +concrete SmartEng of Smart = open Prelude in { + +-- part of grammar Toy1 from the Regulus book + +lincat + Command, Kind, Action, Device = SS ; +lin + CAction _ act dev = ss (act.s ++ dev.s) ; + DKindOne k = ss ("the" ++ k.s) ; + + light = ss "light" ; + fan = ss "fan" ; + switchOn _ = ss ["switch on"] ; + switchOff _ = ss ["switch off"] ; + dim = ss "dim" ; +} + |
