diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-03-24 23:11:59 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-03-24 23:11:59 +0000 |
| commit | 436ddd5ebf531c2693af9402236a5a0c462dc5b7 (patch) | |
| tree | 1bff96f484f3af5f78f9b1d92ad14532a440f9f2 /devel/compiler/ex.src | |
| parent | 4fdc0b598a36ab6b368e39f354364e20d27e9993 (diff) | |
simple source language for compiler experiment
Diffstat (limited to 'devel/compiler/ex.src')
| -rw-r--r-- | devel/compiler/ex.src | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/devel/compiler/ex.src b/devel/compiler/ex.src new file mode 100644 index 000000000..33890fb89 --- /dev/null +++ b/devel/compiler/ex.src @@ -0,0 +1,31 @@ +param Num = Sg | Pl ; +param Gen = Masc | Fem ; + +oper Agr = {g : Gen ; n : Num} ; + +oper CN = {s : Num -> Str ; g : Gen} ; +oper NP = {s : Str ; a : Agr} ; + +oper artDef : Gen -> Str = \g -> table { + (Masc) => "le" ; + (Fem) => "la" +} ! g ; + + +lin Voiture : CN = { + s = table { + (Sg) => "voiture" ; + (Pl) => "voitures" + } ; + g = Fem +} ; + +lin Bus : CN = { + s = table {$x => "bus"} ; + g = Masc +} ; + +lin Def : CN -> NP = \cn -> { + s = artDef cn.g ++ cn.s ! Sg ; + a = {g = cn.g ; n = Sg} +} ; |
