;;; -*- Mode: Lisp; Syntax: Common-Lisp; -*- File: language/grammars.lisp ;;;; Definition of Lexicons and Grammars: E0, E1, E2 (defparameter *E0* (grammar :lexicon '((Noun -> stench breeze glitter nothing wumpus pit pits gold north south east west) (Verb -> is see smell shoot shot feel stinks go grab carry kill turn) (Adjective -> right left east south back smelly) (Adverb -> here there nearby ahead right left north south east west back) (Pronoun -> me you I it) (Name -> John Mary Boston Aristotle) (Article -> the a an) (Preposition -> to in on near) (Conjunction -> and or but) (Digit -> 0 1 2 3 4 5 6 7 8 9) (that -> that)) :rules '((S -> NP VP) (S -> S Conjunction S) (NP -> Pronoun) (NP -> Noun) (NP -> Article Noun) (NP -> Digit Digit) (NP -> NP PP) (NP -> NP RelClause) (VP -> Verb) (VP -> VP NP) (VP -> VP Adjective) (VP -> VP PP) (VP -> VP Adverb) (PP -> Preposition NP) (RelClause -> that VP))) "Lexicon and grammar for E0 in Figures 22.5, 22.6, page 665.") (defparameter *E1* (grammar :lexicon '((Noun -> stench breeze glitter nothing wumpus pit pits gold north south east west) (Verb -> is see smell shoot shot feel stinks go grab carry kill turn) (Adjective -> right left east south back smelly) (Adverb -> here there nearby ahead right left north south east west back) ((Pronoun subjective) -> I you he she) ((Pronoun objective) -> me you him her) ((Pronoun $case) -> it) (Name -> John Mary Boston Aristotle) (Article -> the a an) (Preposition -> to in on near) (Conjunction -> and or but) (Digit -> 0 1 2 3 4 5 6 7 8 9) (that -> that)) :rules '((S -> (NP subjective) VP) (S -> S Conjunction S) ((NP $case) -> (Pronoun $case)) ((NP $case) -> Noun) ((NP $case) -> Article Noun) ((NP $case) -> Digit Digit) ((NP $case) -> (NP $case) PP) ((NP $case) -> (NP $case) RelClause) (VP -> Verb) (VP -> Verb (NP objective)) (VP -> Verb Adjective) (VP -> Verb PP) (VP -> Verb Adverb) (PP -> Preposition (NP objective)) (RelClause -> that VP))) "Lexicon and grammar for E1 in Figure 22.10, page 670.") (defparameter *E2* (grammar :lexicon '(((Noun $w) -> stench breeze glitter nothing wumpus pit pits gold north south east west) ((Verb $w) -> is see smell shoot shot feel stinks go grab carry kill turn) ((Adjective $w) -> right left east south back smelly) ((Adverb $w) -> here there nearby ahead right left north south east west back) ((Pronoun $w) -> me you I it) ((Name $w) -> John Mary Boston Aristotle) ((Article $w) -> the a an) ((Preposition $w) -> to in on near) ((Conjunction $w) -> and or but) ((Digit $w) -> 0 1 2 3 4 5 6 7 8 9) (that -> that)) :rules '(((S ($rel $obj)) -> (NP $obj) (VP $rel)) ((S ($conj $sem1 $sem2)) -> (S $sem1) (Conjunction $conj) (S $sem2)) ((NP $sem) -> (Pronoun $sem)) ((NP $sem) -> (Name $sem)) ;; ?? Need nouns with no article, e.g. "dogs" is an NP ((NP ($q $x ($sem $x))) -> (Article $q) (Noun $sem)) ((NP ($q $x (and $obj ($rel $x)))) -> (NP ($q $x $obj)) (PP $rel)) ((NP ($q $x (and $obj ($rel $x)))) -> (NP ($q $x $obj)) (RelClause $rel)) ((NP (@ $sem1 $sem2) -> (Digit $sem1) (Digit $sem2))) ;; VP rules for subcategorization ((VP $sem) -> (Verb $sem)) ((VP ($rel $obj)) -> (VP $rel) (NP $obj)) ((VP ($sem1 $sem2)) -> (VP $sem1) (Adjective $sem2)) ((VP ($sem1 $sem2)) -> (VP $sem1) (PP $sem2)) ;; VP rules for adjuncts ((VP (lambda $x (and ($sem1 $x) ($sem2 (event-var $sem1))))) -> (VP $sem1) (PP $sem2)) ((VP (lambda $x (and ($sem1 $x) ($sem2 (event-var $sem1))))) -> (VP $sem1) (Adverb $sem2)) ((RelClause $sem) -> that (VP $sem)) ((PP (lambda $x ($rel $x $obj))) -> (Preposition $rel) (NP $obj)))) "Lexicon and grammar for E2 in Figure 22.19, page 680.") ;;;; Other grammars: Arithmetic, Trivial (defparameter *arithmetic-grammar* (grammar :start-symbol 'Exp :rules '(((Exp ($op $sem1 $sem2)) -> (Exp $sem1) (Operator $op) (Exp $sem2)) ((Exp $sem) -> [ (Exp $sem) ]) ((Exp $sem) -> (Number $sem)) ((Number $sem) -> (Digit $sem)) ((Number (+ (* 10 $sem1) $sem2)) -> (Number $sem1) (Digit $sem2))) :lexicon '(((Digit $w) -> 0 1 2 3 4 5 6 7 8 9) ((Operator $w) -> + - * /) ([ -> \( [) (] -> \) ]))) "A grammar of arithmetic expressions, with semantics, from Figure 22.13, page 673.") (defparameter *figure23.4* (grammar :lexicon (grammar-lexicon *E0*) :rules '((S -> NP VP) (NP -> Pronoun) (VP -> Verb) (VP -> VP NP))) "A grammar that, with debugging on, produces output similar to that on page 700, Figure 23.4. The differences are: (1) Scanner does two steps in the book; here those steps are broken into Scanner and Completer. (2) Some 'irrelevant' edges were ommitted from Figure 23.4")