Previous: softproj, Up: Grammars


5.51 ww

This grammar covers the language L = {ww | w in {a, b}}, using a Tree Adjoining Grammar (TAG) encoding developed by Ralph Debusmann and Marco Kuhlmann (the same encoding as used for the XTAG grammar generator of the XDK). It was written by Ralph Debusmann.

usedim id
usedim lp
usedim idlp
usedim lex
%%
defdim id {
  deftype "id.label" {"A_s" "A_a" "B_s" "B_a" "S_s" "S_a"}
  deflabeltype "id.label"
  defentrytype {in: iset("id.label")
                out: valency("id.label")}
  %%
  useprinciple "principle.graph1Constraints" { dims {D: id} }
  useprinciple "principle.graph1Dist" { dims {D: id} }
  useprinciple "principle.tree" { dims {D: id} }
  useprinciple "principle.in" { dims {D: id} }
  useprinciple "principle.out" { dims {D: id} }
  useprinciple "principle.xTAGRoot" {dims {D: id}}
  %%
  output "output.latex1"
  output "output.pretty1"
}
%%
defdim lp {
  deftype "lp.label" {"0" "1" "2" "21" "22"}
  deflabeltype "lp.label"
  defentrytype {in: iset("lp.label")
                out: valency("lp.label")
                anchor: "lp.label"
                foot: set("lp.label")}
  %%
  useprinciple "principle.graph1Constraints" { dims {D: lp} }
  useprinciple "principle.graph1Dist" { dims {D: lp} }
  useprinciple "principle.tree" { dims {D: lp} }
  useprinciple "principle.in" { dims {D: lp} }
  useprinciple "principle.out" { dims {D: lp} }
  useprinciple "principle.xTAG" { dims {D: lp}}
  output "output.latex1"
  output "output.pretty1"
}
%%
defdim idlp {
  defentrytype {link: vec("lp.label" set("id.label"))}
  %%
  useprinciple "principle.xTAGLinking" { dims {D1: id D2: lp D3: idlp} }
  useprinciple "principle.xTAGRedundant" { dims {D1: id D2: lp} }
  output "output.latex1"
  output "output.pretty1"
}
%%
defdim lex {
  defentrytype {word: string
                tree: string}
  useprinciple "principle.entries" {}
  output "output.allDags1"
  output "output.xTAGDerivation"
  output "output.allLatexs1"
  useoutput "output.allDags1"
  %useoutput "output.xTAGDerivation"
}
%%
defclass "alpha1" A {
  dim id {in: {"S_s"}
          out: {"A_s"! "S_a"?}}
  dim lp {in: top
          out: {"1"! "2"?}
          anchor: "21"
          foot: {}}
  dim idlp {link: {"1": {"A_s"}
                   "2": {"S_a"}}}
  dim lex {word: A
           tree: "alpha1"}}

defclass "alpha2" B {
  dim id {in: {"S_s"}
          out: {"B_s"! "S_a"?}}
  dim lp {in: top
          out: {"1"! "2"?}
          anchor: "21"
          foot: {}}
  dim idlp {link: {"1": {"B_s"}
                   "2": {"S_a"}}}
  dim lex {word: B
           tree: "alpha2"}}

defclass "alpha3" A {
  dim id {in: {"A_s"}
          out: {"A_a"?}}
  dim lp {in: top
          out: {"0"?}
          anchor: "1"
          foot: {}}
  dim idlp {link: {"0": {"A_a"}}}
  dim lex {word: A
           tree: "alpha3"}}

defclass "alpha4" B {
  dim id {in: {"B_s"}
          out: {"B_a"?}}
  dim lp {in: top
          out: {"0"?}
          anchor: "1"
          foot: {}}
  dim idlp {link: {"0": {"B_a"}}}
  dim lex {word: B
           tree: "alpha4"}}

defclass "beta1" A {
  dim id {in: {"S_a"}
          out: {"A_s"! "S_a"?}}
  dim lp {in: top
          out: {"1"! "2"?}
          anchor: "22"
          foot: {"21"}}
  dim idlp {link: {"1": {"A_s"}
                   "2": {"S_a"}}}
  dim lex {word: A
           tree: "beta1"}}

defclass "beta2" B {
  dim id {in: {"S_a"}
          out: {"B_s"! "S_a"?}}
  dim lp {in: top
          out: {"1"! "2"?}
          anchor: "22"
          foot: {"21"}}
  dim idlp {link: {"1": {"B_s"}
                   "2": {"S_a"}}}
  dim lex {word: B
           tree: "beta2"}}

defentry { "alpha1" {A: "a"} }
defentry { "alpha2" {B: "b"} }
defentry { "alpha3" {A: "a"} }
defentry { "alpha4" {B: "b"} }
defentry { "beta1" {A: "a"} }
defentry { "beta2" {B: "b"} }