Next: , Previous: igk, Up: Grammars


5.45 nut

This is an English toy grammar written for the nutshell chapter of the dissertation by Ralph Debusmann. Compared to nut1, it does not use lexical classes but generates the lexicon directly.

usedim syn
usedim sem
usedim synsem
usedim lex
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension syn
defdim syn {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "syn.person" {"1" "2" "3"}
  deftype "syn.number" {sg pl}
  deftype "syn.agr" tuple("syn.person" "syn.number")
  deftype "syn.label" {root subj part obj vinf adv "^"}

  deflabeltype "syn.label"
  defattrstype {agr: "syn.agr"}
  defentrytype {in: valency("syn.label")
                out: valency("syn.label")
                order: set(tuple("syn.label" "syn.label"))
                agrs: iset("syn.agr")
                agree: set("syn.label")}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" { dims {D: syn} }
  useprinciple "principle.tree" { dims {D: syn} }
  useprinciple "principle.valency" { dims {D: syn} }
  useprinciple "principle.agr" { dims {D: syn} }
  useprinciple "principle.agreement" { dims {D: syn} }
  useprinciple "principle.order2" { dims {D: syn} }
  useprinciple "principle.projectivity" { dims {D: syn} }
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.decode"
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension sem
defdim sem {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "sem.label" {root del ag pat th}
  deflabeltype "sem.label"
  defentrytype {in: valency("sem.label")
                out: valency("sem.label")}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" { dims {D: sem} }
  useprinciple "principle.dag" { dims {D: sem} 
                                 args {Connected: false
                                       DisjointDaughters: false} }
  useprinciple "principle.valency" { dims {D: sem} }
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.decode"
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension synsem
defdim synsem {
  defentrytype {arg: vec("sem.label" set("syn.label"))
                mod: set("sem.label")}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.linkingEnd" {
    dims {D1: sem
          D2: syn
          D3: synsem}
    args {End: ^.D3.entry.arg}}
  useprinciple "principle.linkingMother" {
    dims {D1: sem
          D2: syn
          D3: synsem}
    args {Which: ^.D3.entry.mod}}
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension lex
defdim lex {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  defentrytype {word: string}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.dags1"
  output "output.dags2"
  output "output.latexs1"
  output "output.latexs2"
  useoutput "output.dags1"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define lexicon
defentry {
  dim lex {word: "Peter"}
  dim syn {in: {subj? obj?}
           out: {}
           agrs: {["3" sg]}
           agree: {}}
  dim sem {in: {ag* pat*}
           out: {}}
  dim synsem {arg: {}
              mod: {}}}
           
defentry {
  dim lex {word: "Mary"}
  dim syn {in: {subj? obj?}
           out: {}
           agrs: {["3" sg]}
           agree: {}}
  dim sem {in: {ag* pat*}
           out: {}}
  dim synsem {arg: {}
              mod: {}}}

defentry {
  dim lex {word: "spaghetti"}
  dim syn {in: {subj? obj?}
           out: {}
           agrs: {["3" pl]}
           agree: {}}
  dim sem {in: {ag* pat*}
           out: {}}
  dim synsem {arg: {}
              mod: {}}}

defentry {
  dim lex {word: "."}
  dim syn {in: {}
           out: {root!}
           order: {[root "^"]}
           agrs: top
           agree: {}}
  dim sem {in: {}
           out: {root* del*}}
  dim synsem {arg: {}
              mod: {}}}

defentry {
  dim lex {word: "today"}
  dim syn {in: {adv?}
           out: {}
           agrs: top
           agree: {}}
  dim sem {in: {root!}
           out: {th!}}
  dim synsem {arg: {}
              mod: {th}}}

defentry {
  dim lex {word: "to"}
  dim syn {in: {part?}
           out: {}
           agrs: top
           agree: {}}
  dim sem {in: {del!}
           out: {}}
  dim synsem {arg: {}
              mod: {}}}

defentry {
  dim lex {word: "wants"}
  dim syn {in: {root?}
           out: {subj! vinf! adv*}
           order: {[subj "^"] [subj vinf] [subj adv]
                   ["^" vinf] ["^" adv] [vinf adv]}
           agrs: {["3" sg]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag! th!}}
  dim synsem {arg: {ag: {subj}
                    th: {vinf}}
              mod: {}}}

defentry {
  dim lex {word: "wants"}
  dim syn {in: {root?}
           out: {subj! obj! vinf! adv*}
           order: {[subj "^"] [subj obj] [subj vinf] [subj adv]
                   ["^" obj] ["^" vinf] ["^" adv]
                   [obj vinf] [obj adv] [vinf adv]}
           agrs: {["3" sg]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag! pat! th!}}
  dim synsem {arg: {ag: {subj}
                    pat: {obj}
                    th: {vinf}}
              mod: {}}}

defentry {
  dim lex {word: "want"}
  dim syn {in: {root?}
           out: {subj! vinf! adv*}
           order: {[subj "^"] [subj vinf] [subj adv]
                   ["^" vinf] ["^" adv] [vinf adv]}
           agrs: {["1" sg] ["2" sg] ["1" pl] ["2" pl] ["3" pl]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag! th!}}
  dim synsem {arg: {ag: {subj}
                    th: {vinf}}
              mod: {}}}

defentry {
  dim lex {word: "want"}
  dim syn {in: {root?}
           out: {subj! obj! vinf! adv*}
           order: {[subj "^"] [subj obj] [subj vinf] [subj adv]
                   ["^" obj] ["^" vinf] ["^" adv]
                   [obj vinf] [obj adv] [vinf adv]}
           agrs: {["1" sg] ["2" sg] ["1" pl] ["2" pl] ["3" pl]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag! pat! th!}}
  dim synsem {arg: {ag: {subj}
                    pat: {obj}
                    th: {vinf}}
              mod: {}}}

defentry {
  dim lex {word: "eats"}
  dim syn {in: {root?}
           out: {subj! obj! adv*}
           order: {[subj "^"] [subj obj] [subj adv]
                   ["^" obj] ["^" adv] [obj adv]}
           agrs: {["3" sg]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag! pat!}}
  dim synsem {arg: {ag: {subj}
                    pat: {obj}}
              mod: {}}}

defentry {
  dim lex {word: "eat"}
  dim syn {in: {root?}
           out: {subj! obj! adv*}
           order: {[subj "^"] [subj obj] [subj adv]
                   ["^" obj] ["^" adv] [obj adv]}
           agrs: {["1" sg] ["2" sg] ["1" pl] ["2" pl] ["3" pl]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag! pat!}}
  dim synsem {arg: {ag: {subj}
                    pat: {obj}}
              mod: {}}}

defentry {
  dim lex {word: "eats"}
  dim syn {in: {root?}
           out: {subj! adv*}
           order: {[subj "^"] [subj adv] ["^" adv]}
           agrs: {["3" sg]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag!}}
  dim synsem {arg: {ag: {subj}}
              mod: {}}}

defentry {
  dim lex {word: "eat"}
  dim syn {in: {root?}
           out: {subj! adv*}
           order: {[subj "^"] [subj adv] ["^" adv]}
           agrs: {["1" sg] ["2" sg] ["1" pl] ["2" pl] ["3" pl]}
           agree: {subj}}
  dim sem {in: {root! th*}
           out: {ag!}}
  dim synsem {arg: {ag: {subj}}
              mod: {}}}

defentry {
  dim lex {word: "eat"}
  dim syn {in: {vinf?}
           out: {part! obj! adv*}
           order: {[part "^"] [part obj] [part adv]
                   ["^" obj] ["^" adv] [obj adv]}
           agrs: top
           agree: {}}
  dim sem {in: {root! th*}
           out: {ag! pat!}}
  dim synsem {arg: {ag: {subj}
                    pat: {obj}}
              mod: {}}}

defentry {
  dim lex {word: "eat"}
  dim syn {in: {vinf?}
           out: {part! adv*}
           order: {[part "^"] [part obj] [part adv]
                   ["^" obj] ["^" adv] [obj adv]}
           agrs: top
           agree: {}}
  dim sem {in: {root! th*}
           out: {ag!}}
  dim synsem {arg: {ag: {subj}}
              mod: {}}}