summaryrefslogtreecommitdiff
path: root/doc/tutorial/smarthouse
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tutorial/smarthouse')
-rw-r--r--doc/tutorial/smarthouse/Smart.gf17
-rw-r--r--doc/tutorial/smarthouse/SmartEng.gf19
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" ;
+}
+