summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaromil <jaromil@dyne.org>2013-02-19 14:31:28 (GMT)
committer Jaromil <jaromil@dyne.org>2013-02-19 14:35:41 (GMT)
commitb5d7d1af079761fd841b12c5152d4cde81b11ebf (patch)
treecb8b0b6667e701d77cbe4fd6c777d474a181430b
parentaf4bdc0d55c109581a8e5692cfe0e32d04c86325 (diff)
added link-grammar parser for english
-rwxr-xr-xgrammar/build.zsh26
l---------grammar/data1
-rw-r--r--grammar/grammar-filter/README26
-rw-r--r--grammar/grammar-filter/grammar-filter.dSYM/Contents/Info.plist20
-rw-r--r--grammar/grammar-filter/grammar-filter.dSYM/Contents/Resources/DWARF/grammar-filterbin0 -> 462564 bytes
-rw-r--r--grammar/grammar-filter/grammar.cc128
-rw-r--r--grammar/grammar-filter/grammar.el396
-rw-r--r--grammar/link-grammar-4.7.9/AUTHORS31
-rw-r--r--grammar/link-grammar-4.7.9/COPYING41
-rw-r--r--grammar/link-grammar-4.7.9/ChangeLog505
-rw-r--r--grammar/link-grammar-4.7.9/FindLinkGrammar.cmake56
-rw-r--r--grammar/link-grammar-4.7.9/INSTALL291
-rw-r--r--grammar/link-grammar-4.7.9/LICENSE41
-rw-r--r--grammar/link-grammar-4.7.9/MAINTAINERS2
-rw-r--r--grammar/link-grammar-4.7.9/Makefile.am39
-rw-r--r--grammar/link-grammar-4.7.9/NEWS0
-rw-r--r--grammar/link-grammar-4.7.9/README1002
-rw-r--r--grammar/link-grammar-4.7.9/TODO7
-rw-r--r--grammar/link-grammar-4.7.9/ac-helpers/binreloc.m477
-rw-r--r--grammar/link-grammar-4.7.9/autogen.err0
-rwxr-xr-xgrammar/link-grammar-4.7.9/autogen.sh84
-rw-r--r--grammar/link-grammar-4.7.9/autopackage/default.apspec.in52
-rw-r--r--grammar/link-grammar-4.7.9/build.xml.in33
-rw-r--r--grammar/link-grammar-4.7.9/configure.in559
-rw-r--r--grammar/link-grammar-4.7.9/data/Makefile.am4
-rw-r--r--grammar/link-grammar-4.7.9/data/de/4.0.affix7
-rw-r--r--grammar/link-grammar-4.7.9/data/de/4.0.constituent-knowledge5
-rw-r--r--grammar/link-grammar-4.7.9/data/de/4.0.dict502
-rw-r--r--grammar/link-grammar-4.7.9/data/de/4.0.knowledge29
-rw-r--r--grammar/link-grammar-4.7.9/data/de/4.0.regex117
-rw-r--r--grammar/link-grammar-4.7.9/data/de/Makefile.am12
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.affix26
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.batch1028
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.biolg.batch411
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.constituent-knowledge127
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.dict9995
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.dict.m48078
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.enwiki.batch14
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.fixes.batch3594
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.knowledge307
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.regex240
-rw-r--r--grammar/link-grammar-4.7.9/data/en/4.0.voa.batch114
-rw-r--r--grammar/link-grammar-4.7.9/data/en/Makefile.am19
-rw-r--r--grammar/link-grammar-4.7.9/data/en/README173
-rw-r--r--grammar/link-grammar-4.7.9/data/en/tiny.dict157
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/Makefile.am81
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/currency204
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/currency.p28
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/entities.given-bisex.sing39
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/entities.given-female.sing4141
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/entities.given-male.sing1630
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/entities.locations.sing68
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/entities.national.sing253
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/entities.organizations.sing7
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/entities.us-states.sing11
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/measures.1117
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/measures.287
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/units.145
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/units.1.dot4
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/units.32
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/units.45
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/units.4.dot1
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words-medical.adv.11191
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words-medical.prep.167
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words-medical.v.4.12831
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words-medical.v.4.22845
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words-medical.v.4.33007
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words-medical.v.4.43032
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words-medical.v.4.53045
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.adj.16795
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.adj.2638
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.adj.3667
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.adv.11572
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.adv.267
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.adv.3157
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.adv.480
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.111392
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.1.wiki264
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.2.s11273
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.2.s.biolg1
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.2.s.wiki298
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.2.x66
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.2.x.wiki10
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.34938
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.3.y782
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.n.t142
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.1.11037
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.1.21042
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.1.31051
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.1.41022
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.1.p17
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.10.114
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.10.215
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.10.388
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.10.417
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.2.11256
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.2.21307
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.2.31285
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.2.41290
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.2.51292
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.4.12461
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.4.22476
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.4.32430
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.4.42467
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.4.52472
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.5.197
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.5.297
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.5.3101
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.5.4101
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.6.1392
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.6.2405
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.6.3402
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.6.4409
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.6.5405
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.8.1113
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.8.2114
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.8.3114
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.8.4115
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.v.8.5115
-rw-r--r--grammar/link-grammar-4.7.9/data/en/words/words.y104
-rw-r--r--grammar/link-grammar-4.7.9/data/lt/4.0.affix6
-rw-r--r--grammar/link-grammar-4.7.9/data/lt/4.0.constituent-knowledge24
-rw-r--r--grammar/link-grammar-4.7.9/data/lt/4.0.dict135
-rw-r--r--grammar/link-grammar-4.7.9/data/lt/4.0.knowledge38
-rw-r--r--grammar/link-grammar-4.7.9/data/lt/Makefile.am11
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar.pc.in10
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar.spec.in76
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar.xcode/Makefile.am2
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar.xcode/README6
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar.xcode/project.pbxproj1686
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/Makefile.am191
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/analyze-linkage.c1331
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/analyze-linkage.h27
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/and.c1606
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/and.h29
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/api-structures.h359
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/api-types.h78
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/api.c1594
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/api.h65
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/autoit/README10
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/autoit/_LGTest.au322
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/autoit/_LinkGrammar.au3545
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/build-disjuncts.c487
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/build-disjuncts.h21
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/constituents.c1887
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/constituents.h24
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/corpus/Makefile.am46
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/corpus/README17
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/corpus/cluster.c298
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/corpus/cluster.h32
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/corpus/corpus.c493
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/corpus/corpus.h46
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/count.c866
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/count.h27
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/dictionary.c450
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/disjunct-utils.c259
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/disjunct-utils.h27
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/disjuncts.c138
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/disjuncts.h13
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/error.c91
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/error.h35
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/expand.c67
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/expand.h13
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/externs.h22
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/extract-links.c625
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/extract-links.h16
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/fast-match.c337
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/fast-match.h17
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/idiom.c371
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/idiom.h15
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/README9
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/JSONReader.java368
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/LGConfig.java93
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/LGRemoteClient.java273
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/LGService.java570
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/Link.java67
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/LinkGrammar.java116
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/Linkage.java136
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/java/org/linkgrammar/ParseResult.java151
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/jni-client.c772
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/jni-client.h236
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/link-features.h.in37
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/link-grammar-java.def31
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/link-grammar.def202
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/link-includes.h495
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/massage.c333
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/massage.h15
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Alg.h55
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/BasicHeap.h98
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/BoxedVec.h146
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Heap.h180
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Makefile.am12
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Map.h118
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Queue.h82
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Solver.C1006
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Solver.h367
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/SolverTypes.h195
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Sort.h93
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/minisat/Vec.h141
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/post-process.c1127
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/post-process.h44
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/pp_knowledge.c376
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/pp_knowledge.h14
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/pp_lexer.c1920
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/pp_lexer.h19
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/pp_linkset.c158
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/pp_linkset.h20
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/prefix.c483
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/prefix.h139
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/preparation.c443
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/preparation.h22
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/print-util.c87
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/print-util.h32
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/print.c1090
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/print.h17
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/prune.c1876
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/prune.h17
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/read-dict.c1807
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/read-dict.h39
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/read-regex.c161
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/read-regex.h12
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/regex-morph.c126
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/regex-morph.h17
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/resources.c181
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/resources.h23
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/Makefile.am29
-rwxr-xr-xgrammar/link-grammar-4.7.9/link-grammar/sat-solver/clock.hpp33
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/fast-sprintf.cpp26
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/fast-sprintf.hpp7
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/guiding.hpp244
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/matrix-ut.hpp79
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/sat-encoder.cpp2811
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/sat-encoder.h11
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/sat-encoder.hpp381
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/trie.hpp118
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/util.cpp23
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/util.hpp14
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/variables.cpp5
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/variables.hpp829
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/word-tag.cpp159
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/sat-solver/word-tag.hpp162
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/spellcheck-aspell.c156
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/spellcheck-hun.c133
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/spellcheck.h32
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/string-set.c173
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/string-set.h16
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/structures.h487
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/tokenize.c1064
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/tokenize.h15
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/utilities.c961
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/utilities.h294
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/word-file.c124
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/word-file.h15
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/word-utils.c526
-rw-r--r--grammar/link-grammar-4.7.9/link-grammar/word-utils.h151
-rw-r--r--grammar/link-grammar-4.7.9/link-parser/Makefile.am33
-rw-r--r--grammar/link-grammar-4.7.9/link-parser/command-line.c474
-rw-r--r--grammar/link-grammar-4.7.9/link-parser/command-line.h15
-rw-r--r--grammar/link-grammar-4.7.9/link-parser/link-parser.c889
l---------grammar/link-grammar-4.7.9/m4/libtool.m41
l---------grammar/link-grammar-4.7.9/m4/ltoptions.m41
l---------grammar/link-grammar-4.7.9/m4/ltsugar.m41
l---------grammar/link-grammar-4.7.9/m4/ltversion.m41
l---------grammar/link-grammar-4.7.9/m4/lt~obsolete.m41
-rw-r--r--grammar/link-grammar-4.7.9/man/Makefile.am6
-rw-r--r--grammar/link-grammar-4.7.9/man/link-parser.1266
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/Link_Grammar_All.dsw59
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/Makefile.am7
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/link_grammar_dll/Makefile.am2
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/link_grammar_dll/link_grammar_dll.dsp387
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/link_grammar_exe/Makefile.am2
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/link_grammar_exe/link_grammar_exe.dsp102
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/link_grammar_java_dll/Makefile.am2
-rw-r--r--grammar/link-grammar-4.7.9/msvc6/link_grammar_java_dll/link_grammar_java_dll.dsp111
-rw-r--r--grammar/link-grammar-4.7.9/msvc9/LinkGrammar.sln32
-rwxr-xr-xgrammar/link-grammar-4.7.9/msvc9/LinkGrammar.vcproj475
-rw-r--r--grammar/link-grammar-4.7.9/msvc9/LinkGrammarExe.vcproj343
-rwxr-xr-xgrammar/link-grammar-4.7.9/msvc9/LinkGrammarJava.vcproj201
-rw-r--r--grammar/link-grammar-4.7.9/msvc9/Makefile.am8
-rw-r--r--grammar/link-grammar-4.7.9/msvc9/README28
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/Makefile.am37
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/README13
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/atom.cc111
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/atom.h138
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/compile.h225
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/connect.cc428
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/connect.h49
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/connector-utils.cc242
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/connector-utils.h28
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/parser.cc239
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/parser.h48
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/state.cc131
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/state.h39
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/viterbi.h7
-rw-r--r--grammar/link-grammar-4.7.9/viterbi/vitest.cc490
295 files changed, 162370 insertions, 0 deletions
diff --git a/grammar/build.zsh b/grammar/build.zsh
new file mode 100755
index 0000000..e3bf1bc
--- /dev/null
+++ b/grammar/build.zsh
@@ -0,0 +1,26 @@
+#!/bin/zsh
+
+link=link-grammar-4.7.9
+liblink=${link}/link-grammar/.libs/liblink-grammar.a
+
+{ test "$1" = clean } && {
+ pushd ${link}
+ make clean
+ popd
+ rm -f grammar-filter/grammar-filter
+ return 0
+}
+
+{ test -r ${liblink} } || {
+ pushd ${link}
+ CC=clang CXX=clang++ ./configure --disable-java-bindings --enable-debug \
+ && make
+ popd
+}
+
+{ test -r grammar-filter/grammar-filter } || {
+ pushd grammar-filter
+ clang++ -O0 -g grammar.cc -I../${link} -I../${link}/link-grammar \
+ ../${link}/link-grammar/.libs/liblink-grammar.a -o grammar-filter
+ popd
+}
diff --git a/grammar/data b/grammar/data
new file mode 120000
index 0000000..36c346a
--- /dev/null
+++ b/grammar/data
@@ -0,0 +1 @@
+link-grammar-4.7.9/data \ No newline at end of file
diff --git a/grammar/grammar-filter/README b/grammar/grammar-filter/README
new file mode 100644
index 0000000..63e9480
--- /dev/null
+++ b/grammar/grammar-filter/README
@@ -0,0 +1,26 @@
+#
+# File: grammar/README
+#
+# $Id$
+#
+
+This directory contains the grammar checker mode for Emacs.
+
+Link Grammar (http://www.link.cs.cmu.edu/link/) is used as the back-end
+grammar checker. A small C/C++ program called grammar is written based
+on the Link Grammar API to perform grammar checking for a given
+sentence, and grammar mode is simply the interface between Emacs and
+this grammar program.
+
+Stealing the idea of Flyspell, we want to make grammar.el do on-the-fly
+grammar checking. When detecting that the Emacs user has finished
+typing a sentence, we will grab the sentence and send it to the grammar
+program. The grammar program will then tell us if the sentence contains
+any grammar error(s). The problematic word(s) that contributed to the
+grammar error(s) will be highlighted...
+
+This mode is still in its early development stage. Any ideas on how to
+make it more useful are welcome!
+
+Thanks,
+Baoqiu Cui
diff --git a/grammar/grammar-filter/grammar-filter.dSYM/Contents/Info.plist b/grammar/grammar-filter/grammar-filter.dSYM/Contents/Info.plist
new file mode 100644
index 0000000..1ccfb6b
--- /dev/null
+++ b/grammar/grammar-filter/grammar-filter.dSYM/Contents/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+ <dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.apple.xcode.dsym.grammar-filter</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>dSYM</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ </dict>
+</plist>
diff --git a/grammar/grammar-filter/grammar-filter.dSYM/Contents/Resources/DWARF/grammar-filter b/grammar/grammar-filter/grammar-filter.dSYM/Contents/Resources/DWARF/grammar-filter
new file mode 100644
index 0000000..c4a4b4f
--- /dev/null
+++ b/grammar/grammar-filter/grammar-filter.dSYM/Contents/Resources/DWARF/grammar-filter
Binary files differ
diff --git a/grammar/grammar-filter/grammar.cc b/grammar/grammar-filter/grammar.cc
new file mode 100644
index 0000000..e7dbed8
--- /dev/null
+++ b/grammar/grammar-filter/grammar.cc
@@ -0,0 +1,128 @@
+//
+// File: grammar/grammar.cc
+//
+// $Id$
+//
+// This program is a light-weight application of Link Grammar, written to be
+// used by the Emacs Grammar minor mode (grammar.el).
+//
+// grammar.cc is free software: you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation, either version 3 of the License, or (at your option)
+// any later version.
+//
+// This file is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+// more details.
+//
+// A copy of the GNU General Public License can be made from
+// <http://www.gnu.org/licenses/>.
+//
+
+#include <locale.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <iostream>
+
+#include "link-includes.h"
+
+int
+parseSentence(std::string & sentence,
+ Dictionary & dict,
+ Parse_Options & opts)
+{
+ Sentence sent;
+ Linkage linkage;
+ int num_linkages;
+
+ // First parse with cost 0 or 1 and no null links.
+ parse_options_set_disjunct_cost(opts, 2);
+ parse_options_set_min_null_count(opts, 0);
+ parse_options_set_max_null_count(opts, 0);
+ parse_options_set_islands_ok(opts, 0);
+ parse_options_set_panic_mode(opts, true);
+ parse_options_reset_resources(opts);
+ // parse_options_set_short_length(opts, 10);
+
+ const char * sentText = sentence.c_str();
+
+ sent = sentence_create(sentText, dict);
+ sentence_split(sent, opts);
+ num_linkages = sentence_parse(sent, opts);
+
+ bool res = (num_linkages >= 1);
+
+ if (parse_options_timer_expired(opts)) {
+ std::cout << "timeout" << std::endl << std::endl;
+ }
+ else if (!res) {
+ // Now proces with NULL links. to find out what went wrong.
+ parse_options_set_min_null_count(opts, 1);
+ parse_options_set_max_null_count(opts, sentence_length(sent));
+ parse_options_set_islands_ok(opts, 1);
+ parse_options_reset_resources(opts);
+ num_linkages = sentence_parse(sent, opts);
+
+ Linkage linkage = linkage_create(0, sent, opts);
+ if (linkage != NULL) {
+ const char * pos = sentText;
+ for (int i = 1; i < sentence_length(sent); i++) {
+ while (*pos == ' ' || *pos == '\t') {
+ pos++;
+ }
+ std::string word = sentence_get_word(sent, i);
+ if (!sentence_nth_word_has_disjunction(sent, i) &&
+ word != "RIGHT-WALL" && word != "LEFT-WALL") {
+ std::cout << word << " " << pos - sentText << " ";
+ }
+ pos += word.size();
+ }
+ }
+ std::cout << std::endl << std::endl;
+ linkage_delete(linkage);
+ }
+ else {
+ std::cout << "ok" << std::endl << std::endl;
+ }
+ return 0;
+}
+
+
+int
+main()
+{
+ Dictionary dict;
+ Parse_Options opts;
+ Sentence sent;
+ Linkage linkage;
+
+ setlocale(LC_ALL, "");
+ opts = parse_options_create();
+ dictionary_set_data_dir(getenv("HOME"));
+
+ dict = dictionary_create_lang("en");
+ if (!dict) {
+ std::cout << "Fatal error: Unable to open the dictionary!" << std::endl;
+ return 1;
+ }
+
+ // Set max parse time to be 1 second.
+ parse_options_set_max_parse_time(opts, 1);
+
+ std::string sentence;
+ while (true) {
+ std::getline(std::cin, sentence);
+ if (sentence == "quit") {
+ break;
+ }
+ else if(sentence == "") continue;
+ else {
+ parseSentence(sentence, dict, opts);
+ }
+ }
+
+ dictionary_delete(dict);
+ parse_options_delete(opts);
+ return 0;
+}
diff --git a/grammar/grammar-filter/grammar.el b/grammar/grammar-filter/grammar.el
new file mode 100644
index 0000000..e60755f
--- /dev/null
+++ b/grammar/grammar-filter/grammar.el
@@ -0,0 +1,396 @@
+;;; grammar.el --- Grammar checker for Emacs
+;;
+;; Copyright (C) 2010 Baoqiu Cui
+;;
+;; Filename: grammar.el
+;; Author: Baoqiu Cui <cbaoqiu AT yahoo DOT com>
+;; Maintainer: Baoqiu Cui <cbaoqiu AT yahoo DOT com>
+;; Keywords: grammar spell
+;; Description: Perform grammar checking in Emacs buffers
+;;
+;; $Id: grammar.el,v 1.12 2010/06/14 06:00:06 bcui Exp $
+;;
+;; This file is NOT part of GNU Emacs.
+;;
+;; grammar.el is free software: you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by the
+;; Free Software Foundation, either version 3 of the License, or (at
+;; your option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+;;
+;; A copy of the GNU General Public License can be made from
+;; <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Grammar is a minor Emacs mode that performs semi-on-the-fly grammar
+;; checking using Link Grammar (http://www.link.cs.cmu.edu/link/). A
+;; separate Link Grammar client, grammar.cc (included in this package),
+;; is required in order to make this mode work.
+;;
+;; To enable Grammar minor mode, type M-x grammar-mode. This applies
+;; only to the current buffer. Command grammar-mode toggles Grammar
+;; mode in the current buffer.
+;;
+
+(defgroup grammar nil
+ "Grammar checking on the fly."
+ :tag "Grammar"
+ :group 'processes)
+
+(defcustom grammar-mode-line-string " Grammar"
+ "String displayed on the modeline when grammar is active.
+Set this to nil if you don't want a modeline indicator."
+ :group 'grammar
+ :type '(choice string (const :tag "None" nil)))
+
+(defcustom grammar-program-name "grammar"
+ "Program invoked by Grammar mode.
+Make sure this program can be located in your environment."
+ :type 'string
+ :group 'grammar)
+
+(defcustom grammar-delay 3
+ "The number of seconds to wait before checking, after a \"delayed\" command."
+ :type 'number
+ :group 'grammar)
+
+(defcustom grammar-default-delayed-commands
+ '(self-insert-command
+ delete-backward-char
+ backward-or-forward-delete-char
+ delete-char
+ scrollbar-vertical-drag
+ backward-delete-char-untabify)
+ "The standard list of delayed commands for Grammar.
+See `grammar-delayed-commands'."
+ :type '(repeat (symbol))
+ :group 'grammar)
+
+(defcustom grammar-delayed-commands nil
+ "List of commands that are \"delayed\" for Grammar mode.
+After these commands, grammar checking is delayed for a short time,
+whose length is specified by `grammar-delay'."
+ :type '(repeat (symbol))
+ :group 'grammar)
+
+(defface grammar-error-face
+ '((((class color)) :underline "darkgreen")
+ (t :underline t))
+ "Face for highlighting grammar errors."
+ :group 'grammar)
+
+(defvar grammar-process nil
+ "The process object for Grammar.")
+
+(defvar grammar-filter nil
+ "Output filter from piped calls to Grammar.")
+
+(defvar grammar-filter-continue nil
+ "Control variable for Ispell filter function.")
+
+(defun grammar-start-process ()
+ "Start the grammar process."
+ (apply 'start-process
+ "grammar" nil grammar-program-name nil))
+
+(defun grammar-accept-output (&optional timeout-secs timeout-msecs)
+ "Wait for output from grammar process, or TIMEOUT-SECS and TIMEOUT-MSECS."
+ (accept-process-output grammar-process timeout-secs timeout-msecs))
+
+;;; "grammar-filter" is a list of output lines from the generating
+;;; function. Each full line (ending with \n) is a separate item on the
+;;; list. "output" can contain multiple lines, part of a line, or both.
+;;; "start" and "end" are used to keep bounds on lines when "output"
+;;; contains multiple lines. "ispell-filter-continue" is true when we
+;;; have received only part of a line as output from a generating
+;;; function ("output" did not end with \n).
+;;;
+;;; THIS FUNCTION WILL FAIL IF THE PROCESS OUTPUT DOESN'T END WITH \n!
+;;; This is the case when a process dies or fails. The default behavior
+;;; in this case treats the next input received as fresh input.
+
+(defun grammar-filter (process output)
+ "Output filter function for grammar."
+ (let ((start 0)
+ (continue t)
+ end)
+ (while continue
+ ;; (message ">>> output = %s###" output)
+ (setq end (string-match "\n" output start)) ; get text up to the newline.
+ ;; If we get out of sync and ispell-filter-continue is asserted when we
+ ;; are not continuing, treat the next item as a separate list. When
+ ;; ispell-filter-continue is asserted, ispell-filter *should* always be a
+ ;; list!
+
+ ;; Continue with same line (item)?
+ (if (and grammar-filter-continue
+ grammar-filter
+ (listp grammar-filter))
+ ;; Yes. Add it to the prev item
+ (setcar grammar-filter
+ (concat (car grammar-filter) (substring output start end)))
+ ;; No. This is a new line and item.
+ (setq grammar-filter
+ (cons (substring output start end) grammar-filter)))
+ (if (null end)
+ ;; We've completed reading the output, but didn't finish the line.
+ (setq grammar-filter-continue t
+ continue nil)
+ ;; skip over newline, this line complete.
+ (setq grammar-filter-continue nil
+ end (1+ end))
+ (if (= end (length output))
+ ;; No more lines in output, so we can exit the filter.
+ (setq continue nil)
+ (setq start end))))))
+
+(defun grammar-kill-grammar (&optional no-error)
+ "Kill current grammar process."
+ (interactive)
+ (if (not (and grammar-process
+ (eq (process-status grammar-process) 'run)))
+ (or no-error
+ (error "There is no grammar process running!"))
+ (delete-process grammar-process)
+ (setq grammar-process nil)
+ (message "Grammar process killed")
+ nil))
+
+(defun grammar-init-process ()
+ "Initialize the grammar process.
+This function will (re)start the grammar process if necessary."
+ (if (and grammar-process
+ (eq (process-status grammar-process) 'run))
+ (setq grammar-filter nil))
+ (grammar-kill-grammar t)
+ (message "Starting new grammar process...")
+ (sit-for 0)
+ (setq grammar-process (grammar-start-process)
+ grammar-filter nil
+ grammar-filter-continue nil)
+ (set-process-filter grammar-process 'grammar-filter)
+ (grammar-accept-output 3)
+ (if (null grammar-filter)
+ ;; Get more output if filter is empty
+ (grammar-accept-output 3))
+ (cond ((null grammar-filter)
+ (error "%s did not output version line" grammar-program-name))
+ (t
+ (message (car grammar-filter)))
+ )
+ (setq grammar-filter nil)
+ (set-process-query-on-exit-flag grammar-process nil)
+ )
+
+(defun grammar-send-string (string)
+ "Send string STRING to the Grammar process.
+STRING should not contain any newline. It will be appended with
+a newline before being sent to the Grammar process."
+ (process-send-string grammar-process (concat string "\n")))
+
+(defun grammar-process-line (string)
+ "Check the grammar of string STRING.
+STRING is pre-processed before it is sent to the grammar process:
+the newlines, and prefixes for ordered lists or itemized lists,
+etc., are replaced with spaces. As long as we keep the relative
+positions of all really words intact, it is fine.
+
+When finished, `grammar-process-line' always returns a list of
+strings. If there is no grammar errors in STRING, '(\"ok\") is
+returned. If grammar checker timeout happens, '(\"timeout\") is
+returned. Otherwise, a sequence of problematic words and their
+positions in STRING is returned.
+
+For example, if STRING is \"This person have two name.\", list
+'(\"this\" \"0\" \"person\" \"5\" \"name\" \"21\") is returned."
+ (let (word-pos-list word pos (start 0))
+ ;;
+ ;; Do some cleanups on the string.
+ ;;
+ ;; - Replace potential prefixes like "\n 5. " or "\n - " with
+ ;; spaces. This prefix may exist if the current sentence is an
+ ;; item of an ordered list.
+ ;;
+ ;; - Replace newlines with spaces.
+ ;;
+ (if (string-match "\n *\\([0-9]+\.\\|-\\) " string)
+ (setq string (replace-match
+ (make-string (length (match-string 0 string)) ? )
+ t t string)))
+ (while (setq start (string-match "\n" string start))
+ (setq string (replace-match " " t t string)))
+ (grammar-send-string string)
+ (with-local-quit
+ (while (progn
+ (accept-process-output grammar-process)
+ ;; (if (not (string= "" (car grammar-filter)))
+ ;; (message ">>>> Read again"))
+ (not (string= "" (car grammar-filter))))))
+ (setq word-pos-list (split-string (cadr grammar-filter)))
+ word-pos-list))
+
+(defun grammar-make-overlay (from to face)
+ "Highlight region from FROM to TO with face FACE."
+ (let ((overlay (make-overlay from to)))
+ (overlay-put overlay 'grammar-overlay t)
+ (overlay-put overlay 'face face)))
+
+(defun grammar-check ()
+ "Check grammar of the sentence before or at the current point."
+ (interactive)
+ (let (start end sentence word-pos-list word pos)
+ (save-excursion
+ (backward-sentence)
+ (setq start (point))
+ (forward-sentence)
+ (setq end (point)))
+ (when (> end (+ start 10))
+ (setq word-pos-list (grammar-process-line
+ (buffer-substring start end)))
+ ;; Clear all overlays that may have grammar-error-face.
+ (dolist (overlay (overlays-in start end))
+ (when (eq (overlay-get overlay 'face) 'grammar-error-face)
+ (delete-overlay overlay)))
+ ;; If something is wrong with the grammar, word-pos-list should
+ ;; contains N pairs of (word position).
+ (if (= (length word-pos-list) 1)
+ (message "Grammar %s" (car word-pos-list))
+ (message "Grammar error")
+ (while word-pos-list
+ (setq word (car word-pos-list)
+ pos (string-to-number (cadr word-pos-list))
+ word-pos-list (cddr word-pos-list))
+ (grammar-make-overlay (+ start pos)
+ (+ start pos (length word))
+ 'grammar-error-face)
+ )))))
+
+(defun grammar-delay-commands ()
+ "Install the standard set of Grammar delayed commands."
+ (mapc 'grammar-delay-command grammar-default-delayed-commands)
+ (mapcar 'grammar-delay-command grammar-delayed-commands))
+
+(defun grammar-delay-command (command)
+ "Set COMMAND to be delayed, for Grammar.
+When grammar `post-command-hook' is invoked because a delayed command
+as been used the current sentence is not immediately checked.
+It will be checked only after `grammar-delay' seconds."
+ (interactive "SDelay Grammar after Command: ")
+ (put command 'grammar-delayed t))
+
+(defvar grammar-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-\M-g" 'grammar-check)
+ map)
+ "Minor mode keymap for grammar mode--for the whole buffer.")
+
+;;;###autoload
+(define-minor-mode grammar-mode
+ "Minor mode performing on-the-fly grammar checking."
+ :lighter grammar-mode-line-string
+ :keymap grammar-mode-map
+ :group grammar
+ (if grammar-mode
+ (condition-case ()
+ (grammar-mode-on)
+ (error (message "Enabling Grammar mode gave an error")
+ (grammar-mode -1)))
+ (grammar-mode-off)))
+
+;;;###autoload
+(defun turn-on-grammar ()
+ "Unconditionally turn on Grammar mode."
+ (grammar-mode 1))
+
+;;;###autoload
+(defun turn-off-grammar ()
+ "Unconditionally turn off Grammar mode."
+ (grammar-mode -1))
+
+(defun grammar-mode-on ()
+ "Turn Grammar mode on. Do not use this; use `grammar-mode' instead."
+ (if (or (null grammar-process)
+ (not (eq (process-status grammar-process) 'run)))
+ (grammar-init-process))
+ ;; we put the `grammar-delayed' property on some commands
+ (grammar-delay-commands)
+ ;; we put the `grammar-deplacement' property on some commands
+ ;(grammar-deplacement-commands)
+ ;; we bound grammar action to post-command hook
+ (add-hook 'post-command-hook (function grammar-post-command-hook) t t)
+ ;; we bound grammar action to pre-command hook
+ ;; (add-hook 'pre-command-hook (function grammar-pre-command-hook) t t)
+
+ ;; the welcome message
+ (message "Welcome to grammar."))
+
+(defun grammar-delete-all-overlays ()
+ "Delete all the overlays used by grammar."
+ (remove-overlays (point-min) (point-max) 'grammar-overlay))
+
+;;;###autoload
+(defun grammar-mode-off ()
+ "Turn Grammar mode off."
+ ;; Remove the hooks
+ (remove-hook 'post-command-hook (function grammar-post-command-hook) t)
+ ;; (remove-hook 'pre-command-hook (function grammar-pre-command-hook) t)
+
+ ;; Remove all the Grammar highlightings
+ (grammar-delete-all-overlays)
+ ;; Mark the mode as killed
+ (setq grammar-mode nil))
+
+(defun grammar-check-pre-sentence-p ()
+ "Return non-nil if we should check the sentence before point."
+ (let ((sentence-end (sentence-end)))
+ (cond
+ ;; After a space key: at least we should see two spaces before the
+ ;; current point.
+ ((and (or (eq this-command 'self-insert-command)
+ (eq this-command 'org-self-insert-command)
+ (eq this-command 'orgtbl-self-insert-command))
+ (eq (char-before (point)) ? )
+ (eq (char-before (1- (point))) ? )
+ (save-excursion
+ (re-search-backward sentence-end (- (point) 3) t)))
+ t)
+ ;; After a newline key
+ ((and (or (eq this-command 'newline)
+ (eq this-command 'org-return)
+ (eq this-command 'orgtbl-hijacker-command-100))
+ (eq (char-before (point)) 10)
+ (not (eq (char-before (1- (point))) 10))
+ (save-excursion
+ (re-search-backward sentence-end (- (point) 3) t)))
+ t)
+ ;; After a tab key.
+ ((and (or (eq this-command 'indent-for-tab-command)
+ (eq this-command 'orgtbl-hijacker-command-102))
+ (eq (char-syntax (char-before (point))) ? )
+ (save-excursion
+ (re-search-backward sentence-end (- (point) 3) t)))
+ t)
+ ((and (symbolp this-command)
+ (not executing-kbd-macro)
+ (or (get this-command 'grammar-delayed)))
+ nil)
+ ;; By default, do not check the sentence before point.
+ (t
+ nil)
+ )))
+
+(defun grammar-post-command-hook ()
+ "The `post-command-hook' used by Grammar to check a sentence in-the-fly."
+ (interactive)
+ (when grammar-mode
+ (let ((command this-command))
+ (if (grammar-check-pre-sentence-p)
+ (grammar-check))
+ )))
+
+(provide 'grammar)
diff --git a/grammar/link-grammar-4.7.9/AUTHORS b/grammar/link-grammar-4.7.9/AUTHORS
new file mode 100644
index 0000000..7e4ee2e
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/AUTHORS
@@ -0,0 +1,31 @@
+
+Original Authors:
+Davy Temperley: http://theory.esm.rochester.edu/temperley/
+Daniel Sleator: http://www.cs.cmu.edu/~sleator/
+John Lafferty: http://www.cs.cmu.edu/~lafferty/
+
+Much additional work has been done by many different developers.
+The current lead developer is
+Linas Vepstas: http://linas.org/
+
+The SAT parser code was developed by
+Filip Maric <filipmaric_at_gmail.com>
+as a part of the 2008 Google Summer of Code (GSoC) project for OpenCog.
+
+Some of the people who have contributed patches and fixes include:
+(In alphabetical order)
+
+Bill Hayes <bhayes84_at_gmail.com>
+Borislav Iordanov <borislav.iordanov_at_gmail.com>
+Vikas N Kumar <walburn_at_gmail.com>
+Dom Lachowicz <domlachowicz_at_gmail.com>
+Marc Maurer <uwog_at_uwog.net>
+Evgenii Philippov <efilippov_at_gmail.com>
+Sampo Pyysalo <smp_at_is.s.u-tokyo.ac.jp>
+Murilo Saraiva de Queiroz <muriloq_at_gmail.com>
+Fridrich Strba <fridrich.strba_at_bluewin.ch>
+Simon Stuart <kraven_at_greycascade.com>
+Peter Szolovits <psz_at_mit.edu>
+Vincent Untz <vuntz_at_opensuse.org>
+Bruce Wilcox <gowilcox_at_gmail.com>
+
diff --git a/grammar/link-grammar-4.7.9/COPYING b/grammar/link-grammar-4.7.9/COPYING
new file mode 100644
index 0000000..9f530fa
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/COPYING
@@ -0,0 +1,41 @@
+
+ LICENSE
+ -------
+
+ Copyright (c) 2003,2004 Daniel Sleator, David Temperley, and John
+ Lafferty. All rights reserved.
+ Copyright (c) 2007 Mike Ross.
+ Copyright (c) 2008,2009,2010 Linas Vepstas, Borislav Iordanov.
+ Copyright (c) 2011,2012 Linas Vepstas
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The names "Link Grammar" and "Link Parser" must not be used to
+ endorse or promote products derived from this software without
+ prior written permission. To obtain permission, contact
+ sleator@cs.cmu.edu
+
+ THIS SOFTWARE IS PROVIDED BY DANIEL SLEATOR, DAVID TEMPERLEY, JOHN
+ LAFFERTY AND OTHER CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/grammar/link-grammar-4.7.9/ChangeLog b/grammar/link-grammar-4.7.9/ChangeLog
new file mode 100644
index 0000000..46e687f
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/ChangeLog
@@ -0,0 +1,505 @@
+Version 4.7.9 (3 November 2012)
+ * Fix: Poor comma chocies: "The man, that you saw..." (issue #36)
+ * Fix: Add more java jni.h search paths.
+ * Fix: Warning in java JSON interface.
+ * Fix: weren't constructions: "If it weren't for Sally, ..."
+ * Fix: Better support for ellipsis ...
+ * Fix: strangely: "He is behaving very strangely"
+ * Fix: assorted usages of yes, no, maybe
+ * Fix: "being" in subordinate clauses: "The blade being dull, he ..."
+ * Fix: Build failure for Mac OSX.
+ * Fix: "... this time for real".
+ * Fix: "... the impudence to laugh."
+ * Fix: "we two", "us two"
+ * Fix: very old parse bug, using "enough"
+ * Fix: assorted profanity as synonyms to "else"
+ * Fix: whoever, whomever
+ * Fix: decade possessives: "It's a 60's hit"
+ * Fix: "... chances that ... could be ..."
+ * Fix: "Do you have it ready?"
+ * Fix: "What John wants are those cats"
+ * Fix: greetings
+ * Fix: misc verbs: wave, ink, kiss, bake, corral, crown, decant, rope,
+ slice, ink, butter, proclaim, make, give, bid, bade, think
+ * Fix: titles can behave as indefinite nouns.
+ * Fix: somewhere, near, nearby, halfway, about
+ * Fix: police-interrogation style questions
+
+Version 4.7.8 (10 October 2012)
+ * Ongoing work on pre-alpha Viterbi decoder.
+ * Fix include file paths so that 'make install' doesn't cause recompile.
+ * Fix build break due to bad include file paths in Makefiles.
+
+Version 4.7.7 (6 October 2012)
+ * Fix configure to not bomb if c++ is not found. (weird regex.h missing)
+ * Fix configure to explicitly require c++ only if sat-solver enabled.
+ * Dictionary: parse comma in "Monsters, Inc."
+ * Update README about Viterbi algo.
+ * Remove malloc-dbg.c from the MSVC6 project file.
+ * Add missing source files to MSVC6 project file.
+ * Use enums for constituent display style.
+ * Move command-line parser to its own directory.
+ * Portability fixes for Windows, from Bill Hayes.
+ * Fix: "Show results from today"
+ * Fix: conjoined imperatives.
+ * Fix: qualified conditional clauses
+ * Fix: conjoined irregular verbs: seem, appear, do, be, prove, have
+ * Disable fat link code via conditional compile.
+ * Fix: "a lot of", "a gaggle of" now treated as quantifying determiners
+ * Fix: likewise: "gallons of", "grams of" volume measures as determiners
+ * Update German dictionary so that it actually loads.
+ * Fix: assorted "but not", "not very" constructions.
+ * Pre-alpha implementation of Viterbi decoder started.
+ * Fix: conjunctions of optionally ditransitive verbs.
+
+Version 4.7.6 (26 April 2012)
+ * fast-match.c: unroll recursive call into loop (thx Valery Kholodkov).
+ * Fix accidental inclusion of internal header file from public header file.
+
+Version 4.7.5 (16 April 2012)
+ * Remove several duplicate given names.
+ * Remove malloc-dbg.c from the MSVC9 project file.
+ * Remove several dozen duplicated idioms.
+ * New AM_SILENT_RULES for less noisy build!
+ * Clean up misc minor compiler warnings.
+ * Start using -O3 optimization for another 2% perf improvement.
+ * Fix configure.in --enable/--disable flags (bug #53)
+ * Some intransitive verbs are actually transitive in rare cases.
+ * Use enum not int for the cost-model type.
+ * Update the man page to reflect actual command usage.
+
+Version 4.7.4 (13 February 2011)
+ * Dramatic speed improvement for long sentences (hash table fix).
+ * Fix: crash on certain sentences, when fat-link parsing enabled.
+ * Fix: fatal error introduced in last version (combinatorial explosion).
+ * Fix: mem leak introduced in last version (combinatorial explosion).
+ * Assorted fixes to the Boolean SAT solver.
+
+Version 4.7.3 (7 February 2011)
+ * Fix: "level" as indefinite noun: "... at knee level".
+ * Enable max disjunct cost as a controllable parser parameter.
+ * Don't just give up on combinatorial explosion, show something!
+
+Version 4.7.2 (6 January 2011)
+ * Fix: crash on certain sentences, when fat-link parsing enabled.
+ * Fix: 3 corrupted nouns in words.n.1
+ * Fix: minimize cpu spin if constituent processing and-list overflows.
+
+Version 4.7.1 (11 December 2010):
+ * Fix: dictionary: Add "x" as synonym for "times".
+ * Fix: compilation failure due to lack of termios support on Windows.
+ * Fix: if not set, then force-set locale to UTF-8 in the java library.
+ * Fix: Explicitly include <stddef.h> for Windows builds.
+ * Fix: "John imagines himself lost".
+ * Fix: predicative adjectives w/misc verbs: "You are driving me crazy"
+ * Fix: "judge innocent", etc.
+ * Fix: many, many conjoined present tense verbs.
+ * Fix: conjoined verbs with negations.
+ * Fix: "to" as post-nominal modifier: "the inability to laugh"
+
+Version 4.7.0 (12 September 2010):
+ * Fix: hunspell configuration on Fedora (bugtracker issue 47)
+ * Fix: 'turn' with adjective: "She turned him green" from wingedtachikoma
+ * Fix: comma-conjoined modifiers: "It tastes bitter, not sweet."
+ * Fix: conjoined question words: "When and where is the party?"
+ * Fix: recognize short, capitalized words (Los, La, etc.).
+ * Treat colon as synonym for is: "The answer: yes."
+ * Fix: begin with prepositions: "It all began in Chicago."
+ * Fix: "What does it come to?" and related.
+ * Fix: null infinitive: "I'd like to, I want to."
+ * Fix: "Because I said so."
+ * Fix: "sure" as preverbal adverb: "It sure is."
+ * Fix: Gerunds with determiners: "a running of the bulls"
+ * SJ link for conjoined nouns/noun phrases.
+ * Sort linkages according to whether fat linkage was used.
+ * Add flag to enable use of fat linkage during parsing.
+ (Fat links now disabled by default).
+ * Add male/female gender tags to misc nouns.
+ * Fix: misc optionally transitive verbs: mix, paint, boot
+ * Fix: word order: "look about fearfully", "look fearfully about", around
+ * Fix: recognize simple fractions
+ * Fix: "is" with uncountable nouns: "there is blood on your hands"
+ * Fix: Roman numeral suffixes e.g. "Henry VIII"
+ * Fix: regression in dates followed by punctuation. "In the 1950s, ..."
+ * Fix: verbs drank, drunk are optionally transitive.
+ * Fix: regression: "all the X", X can be plural or mass.
+ * Fix: verbs paint, color may be ditranstive: "paint the car bright green"
+
+Version 4.6.7 (16 April 2010)
+ * Fix: configure handling of --enable-hunspell (bugtracker issue 46)
+ * Fix: conjoined modifier phrases: "the black and white cat sleeps."
+ * Fix: MSWindows+MingGW compilation issue.
+ * Update msvc9 Microsoft Visual C 2008 project, from Boris Iordanov.
+
+Version 4.6.6 (19 March 2010)
+ * Minor fixes to handling of units.
+ * Fix: MSWindows+Cygwin/MingGW compilation issues.
+ * Use pkgconfig for editline (from Vincent Untz)
+ * Fix: "I want it back."
+ * Additional titular prefixes, suffixes: Maj. Ph.D.
+ * Add code to detect dictionary version number.
+ * Fix: MS VC missing strdup() function.
+ * Add AutoIt3 bindings from JRowe
+
+Version 4.6.5 (3 November 2009)
+ * Fix: Superlatives without preceding determiners ("... likes you best")
+ * Fix: Take more care in distinguishing mass and count nouns.
+ * Fix: Old bug w/relative clauses: Rw+ is optional, not mandatory.
+ * Provide tags identifying relative, superlative adjectives.
+ * Remove BioLG NUMBER-AND-UNIT handling, its been superceded.
+ * Fix handling of parenthetical phrases/clauses.
+ * Fix: handling of capitalized first words ending in letter "s".
+ * Fix: support "filler-it" SF link for "It was reasoned that..."
+ * Fix: certain WH-word constructions: "I did not know why until recently"
+ * Fix: go: "there goes the greatest guy ever"
+ * Fix: opening coordinating conjunctions: "And you can also ..."
+ * Configurable Hunspell spell-checker dictionary location.
+ * Fix: Misc ordinal usage.
+ * Add support for aspell spell-checker.
+
+Version 4.6.4 (11 October 2009)
+ * Restore nouns starting w/letters x-z, elided in version 4.5.9 ff.
+ * Add support for single-word interjections/exclamations!
+ * Fix: sometimes command line client fails to show all valid linkages.
+ * Misc fixes: such_that, upon, acted.v
+ * Fix: impersonal "be" linking to passive participle.
+ * Fix: handling of capitalized first words.
+ * Fix: duplication of certain parses involving transitive verbs.
+
+Version 4.6.3 (4 October 2009)
+ * Fix compilation bug on FreeBSD.
+ * Fix: allow MX link to post-nominal ", to be ..., "
+ * Fix: add idiom "time and again"
+ * Fix: another BioLG regression in handling of possessives.
+ * Fix: handling of period at end of number at end of sentence.
+ * Fix: Capitalized words ending in s at start of sentence.
+ * Use corpus-statistics-based ranking by default, if available.
+ * Fix difficulties in build of corpus statistics module.
+
+Version 4.6.2 (21 September 2009)
+ * Fix: "come across as authoritative".
+ * Improve Java location guessing in FreeBSD
+ * Fix for assert triggered by long sentences.
+ * Fix: long sequence of periods treated as unknown word.
+ * Add informational print showing dictionary location on startup.
+ * Remove duplicated {@MV+} in tend.v
+ * Automatically resize the display size to fit the current window size.
+ * Fix handling of punctuation at the end of a capitalized word.
+ * Fix misc verbs acting as adjectival modifiers: e.g. "given", "allied"
+ * Fix bug in BioLG code regarding the handling of possessives.
+ * Fix a (rare) crash in sentences with many conjunctions.
+ * Fix a crash involving long sequences of UTF8 punctuation marks.
+
+Version 4.6.1 (31 August 2009)
+ * Stop printing annoying warning when !vars are used.
+ * Fix missing dict file units.2 problem
+ * Fix compilation bug on FreeBSD.
+
+Version 4.6.0 (29 August 2009)
+ * Avoid used of bzero, add missing include directives (MacOSX problem)
+ * Reclassify a number of "medical" prepositions as adverbs.
+ * Add approx 100 adverbs & 300 adjectives.
+ * Add approx 250 verbs.
+ * Add approx 300 nouns.
+ * Add misc units.
+ * Add misc European connector words/patronymics.
+ * Reclassify 100's of transitive verbs as optionally-transitive.
+ * Add distinct tokenization step ("sentence_split") to public API.
+ This last change forces the minor-version-number bump.
+
+Version 4.5.10 (25 August 2009)
+ * Be sure to link with -lm
+
+Version 4.5.9 (25 August 2009)
+ * Modify error messages to indicate that they are from link-grammar.
+ * Add missing Java files that were forgotten last time around.
+ * Add greeting to command-line client startup.
+ * Print disjunct cost also, when requesting disjunct printing.
+ * Add missing color names as mass nouns.
+ * Fix: Reclassify musical instruments: "He plays piano"
+ * Add experimental word-clustering system.
+ * Add CMake build file
+ * Fix: "It takes longer than that."
+ * Fix: "He has done very well."
+ * Fix: a dozen optionally transitive verbs (swim, kill, etc.)
+ * Fix: "He's out running."
+ * Fix: "suddenly" is a "manner adverb", not a clausal adverb.
+ * Fix: Use Pg links to gerunds: "He feared hitting the wall."
+ * Fix: assorted numerical-range bugs.
+ * Fix: prep modifiers with distances: "It is a few miles out"
+ * Fix: Spelled-out dates: "It started in nineteen twelve"
+ * Fix: Misc date, time expression parsing e.g "Zero hour is here."
+ * Fix: Misc words, "ordered list", "screened out"
+ * Fix: Post-fixed numbers can act as determiners.
+ * Fix: "We bought the last 50 ft. of cable."
+ * Fix: opening directives to imperatives: "Finally, move it back."
+ * Fix: Improved simple equation parsing support.
+ * Fix: Add misc fixes from BioLG that were previously overlooked.
+ * Fix: "favorite" can take determiner "a" ("a favorite place")
+ * Fix: assorted clausal complements: "The emperor ordered it done."
+ * Fix: ordinals: "First on our list is ..."
+ * Fix: verb modifier "some of the time", "most places"
+ * Fix: Sit, stand take modifiers: "he stood still"
+
+Version 4.5.8 (2 July 2009)
+ * Fix: 'than anticipated', 'than was anticipated', etc.
+ * Fix: 'saw the wood'
+ * Fix: sometimes commas are used as if they were semicolons.
+ * Fix: 'We have quite enough work already, thank you!'
+ * Fix: allow 'and' as conjunction in entity names.
+ * Fix: 'I stared him down', 'They shouted him down', 'booed off'
+ * Fix: 'sound him out', 'look him over'
+ * Fix: 'Somewhere in the distance'
+ * Stub out list of names given to both men and women, to avoid duplication.
+ * Fix: 'I think so, too'
+ * Fixes for compilation under Cygwin.
+ * From Boris Iordanov: fixes to JSON java code.
+ * From Boris Iordanov: new java remote client code.
+ * Fix: Biological texts commonly have adj-noun-adj-noun chains
+
+Version 4.5.7 (4 June 2009)
+ * Fix 'make install' for windows (abi bug 12049)
+ * Fix multi-threaded bug when TRACK_SPACE_USAGE is defined.
+ * Add './configure --enable-mudflap' just for fun...
+ * Fix: "Walk tall", "Think quick"
+ * Fix: "... part no. 1234-56A"
+ * Fix regression from BioLG merge: "It cost $14 million."
+ * Fix come/came: "The dog came running..."
+ * Fix year abbreviations: "He drove a souped-up '57 Chevy"
+ * Fix sit, stand: "The dog stood still"
+ * Fix act up, act out: "He is acting out." "The motor is acting up."
+ * Fix notoriously, poorly: "The store was poorly stocked".
+ * Fix: "strong" can be adverb
+ * Add support for recognizing basic time zones during parsing.
+ * Fix: verbs acting as adjectival modifiers: "a very politicized deal."
+ * Fix: ".. nearly so well", "...almost so well".
+ * Fix financial ranges: "It will cost $10 million to $20 million to build."
+ * Expand handling of capitalized words that appear in entity names.
+ * Expand the list of characters that are recognized as quotes.
+ * Support usage of yes, no as sentence openers.
+ * Better support for directives, commands.
+ * Fix: "Ash Wednesday", "Fat Tuesday", etc.
+ * Fix: post-verbal adj: "she wiped the table dry"
+ * Fix: wish: "she wished me a happy birthday"
+
+Version 4.5.6 (24 May 2009)
+ * Bugfix: fix non-thread-safe usage.
+ * Changes to enable MinGW/Windows to compile.
+ * Update of MSVC6 build files
+ * Fix: pizza, fries, chopsticks.
+ * Export word-sense database to Java apps.
+ * Fix: "Was the man drunk or crazy or both?"
+
+Version 4.5.5 (10 May 2009) includes the following changes:
+ * Bugfix: crash for zero-length sentences.
+
+Version 4.5.4 (9 May 2009) includes the following changes:
+ * Fix: "sleep in": "A bed is something you sleep in."
+ * Fix: "drinking": "Let's go drinking."
+ * Fix go+bare infinitive: "Let's go shop", "Let's go swim"
+ * Fix: "Let's go for a swim." "Let's go for a smoke".
+ * Fix: "Let's not" "Let's not go" "Let's not cry"
+ * Fix: ... is <bare-infinitive>: "All he ever does is complain."
+ * Fix: "You will die young/happy/unhappy"
+ * Fix: "You should exercise to stay fit."
+ * Fix: "We danced 'til dawn."
+ * Fix: "tell <direct-object> off": "She had told him off."
+ * Bugfix: sometimes spell checker would run even if turned off.
+
+Version 4.5.3 (14 April 2009) includes the following changes:
+ * Haste makes waste! Revert a recent 'fix'.
+
+Version 4.5.2 (14 April 2009) includes the following changes:
+ * Use re-entrant version of mbtowc in all code.
+ * Fix run-time breakage on Mac OSX and FreeBSD.
+
+Version 4.5.1 (13 April 2009) includes the following changes:
+ * Fix Assertion failed: negative constituent length!
+ * Fix build break for Mac OSX.
+ * Force use of UTF-8 locale in the command-line tool.
+
+Version 4.5.0 (10 April 2009) includes the following changes:
+ * Hack around missing SQLite3 pkgconfig on MacOS
+ * Fix adverbs: 'The motor ran hot', 'the door swung wide open', etc.
+ * Fix: 'at risk of breakdown', 'under threat of fire'
+ * Add regular-expression-based word guessing, from BioLG project.
+ This provides support for many scientific/biomedical terms.
+ * Add spell-guessing for unknown words.
+ * Fix UTF8 support to be correctly thread-safe.
+ * BioLG: fix post-numbering: 'it started on day one'
+ * BioLG: add number ranges: 'it takes 2 to 3 times the effort'
+ * BioLG: assorted adverb fixes, typical of scientific prose.
+ * BioLG: initiate, attach, localize etc are optionally transitive.
+ * BioLG: allow fork, branch, splice, export, etc to take particles.
+ * BioLG: extended use of Greek letters in biomedical text.
+ * BioLG: support parsing of Roman numerals.
+ * BioLG: support Greek-letter-number combinations.
+ * Fix: 'she was singing', etc.
+ * Enable WordNet word-sense identification based on syntactical usage.
+
+Version 4.4.3 (11 March 2009) includes the following changes:
+ * Look at JAVA_HOME to guess location of jni.h
+ * Add dictionary maintenance utility script.
+ * Add prototype German dictionary.
+ * Fix sentences containing measurements, lengths, speeds. etc.
+ * Add 1400 new adjectives, many of scientific origin.
+ * Add 250 international currencies, including special utf8 symbols.
+ * Performance optimization in sentence tokenization.
+ * Add 1100 male, female given names (from Bruce Wilcox).
+ * Cleanup parsing of "in-" date expressions, e.g. "in the 1940's".
+ * Cleanup of assorted compiler warnings.
+ * Fix handling of special utf8 characters in dictionary.
+ * Fix hang when parsing certain utf8 input strings.
+ * Make sure that most strings in the API are declared const char *
+ * Add option to command-line client to print disjunct strings.
+
+Version 4.4.2 (15 January 2009) includes the following changes:
+ * Fix: 'The keys are gone', 'It is a gone desire'
+ * Fix: 'He poured me a glass', 'He wired me the money', etc.
+ * Initial rough-in of corpus statistics based parse ranking.
+ * Initial rough-in of corpus-guided word-sense identification.
+ * Fix for googlecode bugs 38, 39 (Java, Ruby failure to load)
+ * Add new API routine to return disjunct string.
+
+Version 4.4.1 (15 December 2008) includes the following changes:
+ * Balance the dictionary tree; this speeds word-lookup slightly.
+ * New MSVC6 build files from Evgenii Philippov.
+ * Fix java server classes to pass along the link-grammar version number.
+
+Version 4.4.0 (7 December 2008) includes the following changes:
+ * fix: recognize curly-single-quote ’ where straight quote can be used.
+ * recognize and explicitly ignore emoticon types.
+ * Include MSVC6 build files.
+ * Apply patch needed for Ruby bindings.
+ * fix: "Where did they come from?", per Viswanath IIIT
+ * fix: "Where did they go to?"
+ * fix: "It gives me peace of mind."
+ * fix: many, many incorrectly identified mass nouns.
+ * fix: ladle.v "molten hot" "piping hot"
+ * fix: "It's a shame that...", "The crux of the plan is that..."
+ * Performance improvements (about 11%) to prunce.c from Bruce Wilcox
+ * fix: "He eats with me nightly."
+ * Add new public api function: linkgrammar_get_version()
+ * MSVC9 build files from Borislav Iordanov
+ * Java network-efficient client-server classes from Borislav Iordanov
+
+Version 4.3.9 (8 October 2008) includes the following changes:
+ * Issue 13: "John is altogether amazingly quick."
+ * Nonstandard spelling "unequivocably"
+ * Dictionary fixes for 'marginally', etc. "That one is marginally better"
+ * Issue 7: Dictionary fixes for 'done': "I am done working"
+ * dictionary entries for walk-up drivethru car-wash
+ * dictionary: "I am through being mad", "It was a through flight", etc.
+ * Issue 11: "You are doing well"
+ * Issue 3: "I asked Jim a question", "I told Jim a story"
+ * Passive subjects with objects: "I was told that crap, too" "...was asked..."
+ * Fixes for Apple Mac OSX (crash on non-executable stack)
+ * Early version of Filip Maric's boolean SAT solver
+ * fix: "He talked quietly of revolt."
+ * fix: "It consists mostly of sand.", "He talks, mostly of revolution."
+ * fix: "He talked mostly to Ann.", "He talks a lot."
+ * fix: than_usual: "He is taking longer than usual."
+ * fix: a batch of new verbs from Roman Khlupin
+ * fix: Fix crash on Apple Macintosh by correctly identifying the platform.
+ * fix: "San Gabriel" "Block Island" "Great Southern Bank" "de la Rente"
+ * fix: "I biked Johnson Creek."
+
+Version 4.3.8 (14 August 2008) includes the following changes:
+ * Build fixes for Windows (missing bzero and thread-safe rand)
+ * Fix several mem leaks, one in the Java jni code.
+ * Fix crash of java6 jvm, due to blown stack limits.
+
+Version 4.3.7 (8 August 2008) includes the following changes:
+ * Expanded list of given names to include those from 2005 US Census
+ * Export a new java jni function, to get the inflected word.
+ * Add a TO+ connector so that "I tend to agree" parses correctly.
+ * Makefile fixes for Mac OS/X Leopard.
+
+Version 4.3.6 (21 July 2008) includes the following changes:
+ * Fixes for Windows MS Visual-C builds.
+ * Fix parsing of "He walked the dog.", "He sailed the boat."
+ * Add support for right-apostrophe (’) which is a non-ASCII UTF8 char.
+ * Add support for other non-ASCII UTF8 punctuation.
+ * Fix crash on printing constituent tree of certain long sentences.
+ * Avoid recursive error reporting for UTF8 dictionary errors.
+ * Clarify error logging and error printing.
+ * Add java getVersion() to return link-grammar version string.
+ * Add more numbers to dict (e.g. twenty-seven, bazillion, half-dozen, etc.)
+ * Foodstuffs: bagels, lox, tacos, guacamole, roe, neufchatel, mayo, etc.
+ * Weights and measures: megabytes, °C, km² etc.
+ * Performance improvements in printing of link-tree.
+ * Convert assert into warning when no canonical linkages can be found.
+ * Convert assert into warning when constituent andlist overflows.
+ * Provide additional checks for constituent overflows.
+ * Convert most error printfs into a formal error reporting system.
+ * Remove all globals, library is now thread-safe.
+ * Fix crash when sentence has square bracket, and doing constituents.
+
+Version 4.3.5 (29 April 2008) includes the following changes:
+ * Added ant build file to create the link-grammar jar file.
+ * Fix regression in command-line client of multiple-parse display.
+ * Use MB_LEN_MAX, not MB_CUR_MAX for UTF8 support.
+ * Fix a WIN32 compiler regression (no inline support in Windows).
+ * Fix error in handling of UTF8 dictionaries.
+ * Fix strncat() misuse in error.c
+ * Fix capitalization errors in country names.
+ * Fix parsing of "he angled left, he dodged left, he turned left".
+ * Don't build the JNI library if Java isn't found. Fixes build on Windows.
+ * Fix install bug for NetBSD systems.
+ * Pre-detected entities cannot participate in G links.
+ * There is no UTF8 support in windows, so stub it out.
+ * Fix crash in constituent output, bug #22 in googlecode bugtacker.
+ * Some small steps taken to eventually make library thread-safe.
+ * There are three constituent string styles, enable all three.
+ * Make the command-line flag errors less cryptic.
+ * Add readline (BSD editline) support.
+ * Rename "grammar-parse" to the more logical "link-parser".
+ * Small man page updates.
+ * Export and cost, link cost via public API.
+
+Version 4.3.4 (16 March 2008) includes the following changes:
+ * Fix regression of handling of capitalization at the start of sentences.
+ * Fix dictionary search path so that it respects command-line input.
+ * Fix rare but nasty crash when parsing long sentences in panic mode.
+ * Add a method to set the dictionary path.
+ * Fix all remaining compiler warnings.
+ * Make parser capable of handling UTF8 strings and dictionaries.
+ * Ongoing minor expansion of the Lithuanian (lt) dictionary.
+
+Version 4.3.3 (27 February 2008) includes the following changes:
+ * Missing java is a warning, not an error.
+ * man page for grammar-parse.
+ * Removed cruft from the dictionary open routines.
+ * configure tries to guess some non-standard jni.h locations.
+ * Split up java library exports, should help cygwin builds.
+ * Fix java library pre-linking bug.
+ * Minor English dictionary additions.
+ * Prototype Lithuanian (lt) dictionary.
+
+Version 4.3.2 (2 February 2008) includes the following changes:
+ * Compile fixes for WIN32
+ * Dictionary fixes for given names. (Fixes a serious problem with 4.3.1)
+
+Version 4.3.1 (31 Jaunary 2008) includes the following changes:
+ * A merger of significant parts of the "medical terms" dictionary
+ from Peter Szolovits. This includes thousands of additional words.
+
+Version 4.3.0 (30 January 2008) includes the following changes:
+ * New link types (Ct, Cta, Rn, Rw) for comparatives, so as to link
+ relative clauses: "John is bigger than Dave is", "John wants more
+ cookies than Dave wants". The Rw link is used to link question words
+ to the relative clauses that follow them.
+ * Dictionary Fixes for "Expresso is a coffee drink", "Teach me fetch",
+ "I am pooped" as synonym for "I am tired", "Mother likes her",
+ "Mommy loves me" and related. Also, directives involving "go":
+ "Go play ball", "Go take a walk", "You and Rover go play with the
+ ball."
+ * Dictionary support for external entity markup. This includes the
+ recognizition of personID0..personID60, dateID0..dateID60,
+ organizationID0..organizationID60 and locationID0..locationID60
+ as appropriate words.
+ * Fixes of numerous compile-time warnings.
+ * Simple Java (JNI) bindings.
+
+Version 4.2.5 (11 November 2007) includes the following changes:
+ * Security fix for a buffer overflow. CVE-2007-5395
diff --git a/grammar/link-grammar-4.7.9/FindLinkGrammar.cmake b/grammar/link-grammar-4.7.9/FindLinkGrammar.cmake
new file mode 100644
index 0000000..0a54212
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/FindLinkGrammar.cmake
@@ -0,0 +1,56 @@
+# - Try to find the link-grammar library; Once done this will define
+#
+# LINK_GRAMMAR_FOUND - system has the link-grammar library
+# LINK_GRAMMAR_INCLUDE_DIRS - the link-grammar include directory
+# LINK_GRAMMAR_LIBRARIES - The libraries needed to use link-grammar
+# LINK_GRAMMAR_DATA_DIR - the dir where you will find the dictionaries
+
+# Copyright (c) 2008, OpenCog.org (http://opencog.org)
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+# Look for the header file
+FIND_PATH(LINK_GRAMMAR_INCLUDE_DIR link-grammar/link-includes.h)
+FIND_PATH(LINK_GRAMMAR_DATA_DIR 4.0.dict
+ PATHS
+ /usr/share/link-grammar/en/
+ /usr/local/share/link-grammar/en/)
+
+# Look for the library
+FIND_LIBRARY(LINK_GRAMMAR_LIBRARY
+ NAMES
+ link-grammar
+ PATHS
+ /usr/lib
+ /usr/local/lib
+ /opt/local/lib)
+
+# Copy the results to the output variables.
+IF (LINK_GRAMMAR_INCLUDE_DIR AND LINK_GRAMMAR_LIBRARY AND LINK_GRAMMAR_DATA_DIR)
+ SET(LINK_GRAMMAR_FOUND 1)
+ SET(LINK_GRAMMAR_LIBRARIES ${LINK_GRAMMAR_LIBRARY})
+ SET(LINK_GRAMMAR_INCLUDE_DIRS ${LINK_GRAMMAR_INCLUDE_DIR})
+ELSE (LINK_GRAMMAR_INCLUDE_DIR AND LINK_GRAMMAR_LIBRARY AND LINK_GRAMMAR_DATA_DIR)
+ SET(LINK_GRAMMAR_FOUND 0)
+ SET(LINK_GRAMMAR_LIBRARIES)
+ SET(LINK_GRAMMAR_INCLUDE_DIRS)
+ENDIF (LINK_GRAMMAR_INCLUDE_DIR AND LINK_GRAMMAR_LIBRARY AND LINK_GRAMMAR_DATA_DIR)
+
+# Report the results.
+IF (NOT LINK_GRAMMAR_FOUND)
+ SET(LINK_GRAMMAR_DIR_MESSAGE
+ "link-grammar was not found. Make sure LINK_GRAMMAR_LIBRARY, LINK_GRAMMAR_INCLUDE_DIR and LINK_GRAMMAR_DATA_DIR are set.")
+ IF (NOT LINK_GRAMMAR_FIND_QUIETLY)
+ MESSAGE(STATUS "${LINK_GRAMMAR_DIR_MESSAGE}")
+ ELSE (NOT LINK_GRAMMAR_FIND_QUIETLY)
+ IF (LINK_GRAMMAR_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "${LINK_GRAMMAR_DIR_MESSAGE}")
+ ENDIF (LINK_GRAMMAR_FIND_REQUIRED)
+ ENDIF (NOT LINK_GRAMMAR_FIND_QUIETLY)
+ENDIF (NOT LINK_GRAMMAR_FOUND)
+
+MARK_AS_ADVANCED(
+ LINK_GRAMMAR_INCLUDE_DIR
+ LINK_GRAMMAR_LIBRARY
+)
diff --git a/grammar/link-grammar-4.7.9/INSTALL b/grammar/link-grammar-4.7.9/INSTALL
new file mode 100644
index 0000000..8b82ade
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/INSTALL
@@ -0,0 +1,291 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008 Free Software Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 6. Often, you can also type `make uninstall' to remove the installed
+ files again.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *Note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/grammar/link-grammar-4.7.9/LICENSE b/grammar/link-grammar-4.7.9/LICENSE
new file mode 100644
index 0000000..8401789
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/LICENSE
@@ -0,0 +1,41 @@
+
+ LICENSE
+ -------
+
+ Copyright (c) 2003,2004 Daniel Sleator, David Temperley, and John
+ Lafferty. All rights reserved.
+ Copyright (c) 2007 Mike Ross.
+ Copyright (c) 2008,2009,2010 Linas Vepstas, Borislav Iordanov.
+ Copyright (c) 2011 Linas Vepstas
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The names "Link Grammar" and "Link Parser" must not be used to
+ endorse or promote products derived from this software without
+ prior written permission. To obtain permission, contact
+ sleator@cs.cmu.edu
+
+ THIS SOFTWARE IS PROVIDED BY DANIEL SLEATOR, DAVID TEMPERLEY, JOHN
+ LAFFERTY AND OTHER CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/grammar/link-grammar-4.7.9/MAINTAINERS b/grammar/link-grammar-4.7.9/MAINTAINERS
new file mode 100644
index 0000000..d7006d9
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/MAINTAINERS
@@ -0,0 +1,2 @@
+Dom Lachowicz (domlachowicz@gmail.com)
+Linas Vepstas (linasvepstas@gmail.com)
diff --git a/grammar/link-grammar-4.7.9/Makefile.am b/grammar/link-grammar-4.7.9/Makefile.am
new file mode 100644
index 0000000..1ee0699
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/Makefile.am
@@ -0,0 +1,39 @@
+SUBDIRS=link-grammar viterbi link-parser data man link-grammar.xcode msvc6 msvc9
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = link-grammar.pc
+
+ACLOCAL_AMFLAGS = -I m4
+
+# Build and install the jar file in $(PREFIX)/share/java ...
+# XXX FIXME configure should look to see if it can find ant
+if HAVE_JAVA
+linkgrammar-@VERSION@.jar:
+ ant
+
+javadir=$(datadir)/java
+java_DATA = linkgrammar-@VERSION@.jar
+
+if OS_WIN32
+LN_SF = cp
+else
+LN_SF = ln -sf
+endif
+
+install-data-hook:
+ ${LN_SF} ${javadir}/${java_DATA} ${DESTDIR}/${javadir}/linkgrammar.jar
+endif
+
+
+EXTRA_DIST = \
+ autogen.sh \
+ link-grammar.pc.in \
+ link-grammar.spec.in \
+ link-grammar.spec \
+ AUTHORS \
+ ChangeLog \
+ FindLinkGrammar.cmake\
+ LICENSE \
+ MAINTAINERS \
+ README \
+ TODO
diff --git a/grammar/link-grammar-4.7.9/NEWS b/grammar/link-grammar-4.7.9/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/NEWS
diff --git a/grammar/link-grammar-4.7.9/README b/grammar/link-grammar-4.7.9/README
new file mode 100644
index 0000000..a7efff8
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/README
@@ -0,0 +1,1002 @@
+
+ Link Grammar Parser
+ -------------------
+ Version 4.7.9
+
+The Link Grammar Parser implements the Sleator/Temperley/Lafferty
+theory of natural language parsing. This version of the parser is
+an extended, expanded version of the last official CMU release, and
+includes many enhancements and fixes created by many different
+developers. This latest version incorporates a substantial part (but
+not all) of the BioLG project.
+
+This code is released under the BSD license (which is GPL compatible),
+making it freely available for private and commercial use, with
+few restrictions. The terms of the license are given in the
+LICENSE file included with this software, and also available at
+http://www.link.cs.cmu.edu/link/license.html.
+
+Please see the web page http://www.abisource.com/projects/link-grammar/
+for more information. This version is a continuation of the original
+parser posted at http://www.link.cs.cmu.edu/link
+
+CONTENTS of this directory:
+---------------------------
+ LICENSE The license describing terms of use
+
+ link-grammar/*.c The program. (Written in ANSI-C)
+ link-grammar/autoit/* Optional AutoIt language bindings.
+ link-grammar/corpus/*.c Optional corpus statistics database.
+ link-grammar/java/* Optional Java language bindings.
+ link-grammar/minisat/* Optional SAT Solver. (Written in C++)
+ link-grammar/sat-solver Optional SAT Solver. (Written in C++)
+
+ data/en/* English language dictionaries.
+ data/en/4.0.dict The file containing the dictionary definitions.
+ data/en/4.0.knowledge The post-processing knowledge file.
+ data/en/4.0.constituents The constituent knowledge file.
+ data/en/4.0.affix The affix file.
+ data/en/4.0.regex Regex-based morphology guesser.
+ data/en/tiny.dict A small sample dictionary.
+ data/en/words/* A directory full of word lists.
+ data/en/4.0*.batch These files contain sentences (both grammatical
+ and ungrammatical ones) that are handled correctly
+ by this release of the system. These can be
+ run through the parser with the command
+ "./link-parser < 4.0.*.batch"
+
+ COPYING The license for this code and data
+ ChangeLog A compendium of recent changes.
+ configure The GNU configuration script
+ autogen.sh Developer's configure maintenance tool
+ msvc6, msvc9 Microsoft Visual-C project files
+
+
+UNPACKING and signature verification:
+-------------------------------------
+ The system is distributed using the normal tar.gz format; it can be
+ extracted using the "tar -zxf link-grammar.tar.gz" command at the
+ command line.
+
+ The files have been digitally signed to make sure that there was no
+ corruption of the dataset during download, and to help ensure that
+ no malicious changes were made to the code internals by third
+ parties. The signatures can be checked with the gpg command:
+
+ gpg --verify link-grammar-4.7.8.tar.gz.asc
+
+ which should generate output identical to (except for the date):
+
+ gpg: Signature made Thu 26 Apr 2012 12:45:31 PM CDT using RSA key ID E0C0651C
+ gpg: Good signature from "Linas Vepstas (Hexagon Architecture Patches) <linas@codeaurora.org>"
+ gpg: aka "Linas Vepstas (LKML) <linasvepstas@gmail.com>"
+
+ Alternately, the md5 checksums can be verified. These do not provide
+ cryptographic security, but they can detect simple corruption. To
+ verify the checksums, issue "md5sum -c MD5SUM" at the command line.
+
+
+CREATING the system:
+--------------------
+ To compile the link-grammar shared library and demonstration program,
+ at the command line, type:
+
+ ./configure
+ make
+
+ To install, change user to "root" and say
+
+ make install
+ ldconfig
+
+ This will install the lib-link-grammar.so library into /usr/local/lib,
+ the header files in /usr/local/include/link-grammar, and the
+ dictionaries into /usr/local/share/link-grammar. Running 'ldconfig'
+ will rebuild the shared library cache.
+
+ By default, the Makefiles attempt to build the Java bindings.
+ The use of the Java bindings is *OPTIONAL*; you do not need these if
+ you do not plan to use link-grammar with Java. You can skip building
+ the Java bindings by disabling as follows:
+
+ ./configure --disable-java-bindings
+
+ The /usr/local install target can be over-ridden using the
+ standard GNU configure --prefix option, so for example:
+
+ ./configure --prefix=/opt/link-grammar
+
+ By using pkg-config (see below), non-standard install locations
+ can be automatically detected.
+
+ Additional config options are printed by
+
+ ./configure --help
+
+ The system has been tested and works well on 32 and 64-bit Linux
+ systems, FreeBSD, MacOSX, as well as on many Microsoft Windows
+ systems, under various different Windows development environments.
+ Specific OS-dependent notes follow.
+
+
+BUILDING on MacOS:
+------------------
+ Apple MacOSX users will probably need to obtain missing packages
+ from MacPorts in order to successfully build on MacOS. See
+ http://www.macports.org/ for details.
+
+ See also:
+ http://trac.macports.org/browser/trunk/dports/textproc/link-grammar/Portfile
+
+ A MacOS project file can be found in the directory link-grammar.xcode
+ It is probably stale and out-of-date; can someone send me a new one?
+
+ Users who intend to use the java bindings with java6 will need to
+ make sure to compile link-grammar to produce a 64-bit binary, as
+ this is not automatic on OSX. Do this during configure:
+
+ ./configure CFLAGS="-arch x86_64"
+
+ Be sure to set the JDK_HOME environment variable to wherever
+ <Headers/jni.h> is. Set the JAVA_HOME variable to the location of
+ the java compiler.
+
+
+BUILDING on Windows
+-------------------
+ There are three different ways in which link-grammr can be compiled
+ on Windows. One way is to use Cygwin, which provides a Linux
+ compatibility layer for Windows. Unfortunately, the Cygwin system
+ is not compatible with Java for Windows. Another way is use the
+ MSVC system. A third way is to use the MinGW system, which uses the
+ Gnu toolset to compile windows programs.
+
+ Link-grammar now requires a working version of POSIX-standard regex
+ libraries. Since these are not provided by Microsoft, a copy must be
+ obtained elsewhere. One possibility is from the gnuwin32 system:
+ http://gnuwin32.sourceforge.net/packages/regex.htm
+ http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/regex.README
+ See also:
+ http://www.pcre.org/ Perl-Compatible Regular Expressions.
+
+ These different build methods are NOT regularly tested, and some
+ linkgrammar versions may have build issues. If you are an
+ experienced Windows developer who knows how to make things work
+ in the Microsoft environment, we need your help!
+
+
+BUILDING on Windows (Cygwin)
+----------------------------
+ The easiest way to have link-grammar working on MS Windows is to
+ use Cygwin, a Linux-like environment for Windows making it possible
+ to port software running on POSIX systems to Windows. Download and
+ install Cygwin from http://www.cygwin.com/
+
+ Unfortunately, the Cygwin system is not compatible with Java, so if
+ you need the Java bindings, you must use MSVC or MinGW, below.
+
+
+BUILDING on Windows (MinGW)
+---------------------------
+ Another way to build link-grammar is to use the MinGW/MSYS, which
+ uses the Gnu toolset to compile Windows programs for Windows. This
+ is probably the easiest way to obtain workable Java bindings for
+ Windows. Download and install MinGW, MSYS and MSYS-DTK from
+ http://mingw.org.
+
+ Then build and install link-grammar with
+
+ ./configure
+ make
+ make install
+
+ If you used the standard installation paths, the directory /usr/ is
+ mapped to C:\msys\1.0, so after 'make install', the libraries and
+ executable will be found at C:\msys\1.0\local\bin and the dictionary
+ files at C:\msys\1.0\local\share\link-grammar.
+
+ In order to use the Java bindings you'll need to build two extra
+ DLLs, by running the following commands from the link-grammar base
+ directory:
+
+ cd link-grammar
+
+ gcc -g -shared -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at \
+ .libs/analyze-linkage.o .libs/and.o .libs/api.o \
+ .libs/build-disjuncts.o .libs/constituents.o \
+ .libs/count.o .libs/disjuncts.o .libs/disjunct-utils.o \
+ .libs/error.o .libs/expand.o .libs/extract-links.o \
+ .libs/fast-match.o .libs/idiom.o .libs/massage.o \
+ .libs/post-process.o .libs/pp_knowledge.o .libs/pp_lexer.o \
+ .libs/pp_linkset.o .libs/prefix.o .libs/preparation.o \
+ .libs/print-util.o .libs/print.o .libs/prune.o \
+ .libs/read-dict.o .libs/read-regex.o .libs/regex-morph.o \
+ .libs/resources.o .libs/spellcheck-aspell.o \
+ .libs/spellcheck-hun.o .libs/string-set.o .libs/tokenize.o \
+ .libs/utilities.o .libs/word-file.o .libs/word-utils.o \
+ -o /usr/local/bin/link-grammar.dll
+
+ gcc -g -shared -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at \
+ .libs/jni-client.o /usr/local/bin/link-grammar.dll \
+ -o /usr/local/bin/link-grammar-java.dll
+
+ This will create link-grammar.dll and link-grammar-java.dll in the
+ directory c:\msys\1.0\local\bin . These files, together with
+ link-grammar-*.jar, will be used by Java programs.
+
+ Make sure that this directory is in the %PATH setting, as otherwise,
+ the DLL's will not be found.
+
+
+BUILDING on Windows (MSVC)
+--------------------------
+ Microsoft Visual C/C++ project files can be found in the msvc6 and
+ msvc9 directories.
+
+ Please note that the regex package, which includes libraries and
+ header files, must be seperately downloaded and installed, as
+ described above. The MSVC project files *MUST* be modified to
+ indicate the correct location of the regex libraries.
+
+ The build files make use of two environment variables, GNUREGEX and
+ JAVA_HOME.
+ -- GNUREGEX must be pointing to an unzipped gnuwin32-regex
+ distribution.
+ -- JAVA_HOME must be pointing to a locally installed JDK.
+
+ Those two can be set either as system environment variables (Windows
+ users are supposed to know how to do this :) or as MSVC9 user macros.
+ But just in case you don't, here's how:
+
+ 1) Start > Control Panel > System (remember in Vista or 7 you need
+ to switch to "Classic View" or "Large icons" respectively to see
+ the System icon).
+ 2) "Advanced system settings" (or "Advanced" tab under XP)
+ 3) On all versions you will see a button with the caption
+ "Environment Variables", press it.... (ALL REMAINING STEPS
+ CORRELATE ON XP, VISTA, AND 7)
+ 4) You now see two lists of environment variables... the top one
+ says "User variables for <yourusernamehere>" and is localized to
+ your user account, the other says "System variables" and applies
+ to ALL user accounts on that computer.
+ 5) Press the "New ..." button corresponding to whether or not you
+ want the variables to be valid on ALL accounts or just your own
+ (either way the following steps remain the same)
+ 6) In the "Variable name:" box, enter "GNUREGEX".
+ 7) In the "Variable value" box, enter the path to your installation
+ of GNUREGEX (on my system this is "C:\Program Files (x86)\GnuWin32"
+ as I am on Windows 7 Ultimate x64) then press "OK"
+ 8) Press the same "New ..." button and this time in the "Variable
+ name" box enter "JAVA_HOME", and in the "Variable value" box
+ enter the path to your Java SDK root folder. (IMPORTANT NOTE: On
+ some systems this variable may already be defined automatically
+ by the JAVA SDK installation! You should check the variables
+ lists before creating a new one to avoid any conflict).
+ 9) Press "OK" and close all Windows opened during the above steps.
+
+ If you were running MSVC++ or your chosen development environment
+ whilst performing the above steps, you should restart it! Once
+ restarted you should be able to build the latest version of the
+ code.
+
+
+RUNNING the program:
+--------------------
+ To run the program issue the Unix command:
+
+ ./link-parser
+
+ This starts the program. The program has many user-settable variables
+ and options. These can be displayed by entering !var at the link-parser
+ prompt. Entering !help will display some additional commands.
+
+ The dictionaries contain some utf-8 punctuation. These may generate
+ errors for users in a non-utf-8 locale, such as the "C" locale.
+ The locale can be set, for example, by saying
+
+ export LANG=en_US.UTF-8
+
+ at the shell prompt.
+
+ By default, the parser will use dictionaries at the installed location
+ (typically in /usr/local/share). Other locations can be specified on
+ the command line; for example:
+
+ link-parser ../path/to-my/modified/data/en
+
+ When accessing dictionaries in non-standard locations, the standard
+ filenames are still assumed (i.e. 4.0.dict, 4.0.affix, etc.)
+
+ If you see errors similar to this:
+
+ Warning: The word "encyclop" found near line 252 of en/4.0.dict
+ matches the following words:
+ encyclop
+ This word will be ignored.
+
+ then your UTF-8 locales are either not installed or not configured.
+ The shell command `locale -a` should list en_US.utf8 as a locale.
+ If not, then you need to `dpkg-reconfigure locales` and/or run
+ `update-locale` or possibly `apt-get install locales`, or
+ combinations or variants of these, depending on your operating
+ system.
+
+
+TESTING the program:
+--------------------
+ The program can run in batch mode for testing the system on a large
+ number of sentences. The following command runs the parser on
+ a file called 4.0.batch
+
+ ./link-parser < 4.0.batch
+
+ The line "!batch" near the top of 4.0.batch turns on batch mode. In
+ this mode sentences labeled with an initial "*" should be rejected
+ and those not starting with a "*" should be accepted. The current
+ batch file does report some errors, as do the files "4.0.biolg.batch"
+ and "4.0.fixes.batch". Work is ongoing to fix these.
+
+ The "4.0.fixes.batch" file contains sentences that have been fixed
+ since the original 4.1 release of link-grammar. The "4.0.biolg.batch"
+ contains biology/medical-text sentences from the BioLG project.
+
+
+USING the parser in your own applications:
+------------------------------------------
+ There is an API (application program interface) to the parser. This
+ makes it easy to incorporate it into your own applications. The API
+ is documented on the web site.
+
+
+USING pkg-config:
+-----------------
+ To make compiling and linking easier, the current release uses
+ the pkg-config system. To determine the location of the link-grammar
+ header files, say `pkg-config --cflags link-grammar` To obtain
+ the location of the libraries, say `pkg-config --libs link-grammar`
+ Thus, for example, a typical makefile might include the targets:
+
+ .c.o:
+ cc -O2 -g -Wall -c $< `pkg-config --cflags link-grammar`
+
+ $(EXE): $(OBJS)
+ cc -g -o $@ $^ `pkg-config --libs link-grammar`
+
+
+JAVA bindings:
+--------------
+ This release includes Java bindings. Their use is optional.
+
+ The bindings will be built automatically if jni.h can be found.
+ Some common java JVM distributions (most notably, the ones from Sun)
+ place this file in unusual locations, where it cannot be
+ automatically found. To remedy this, make sure that JAVA_HOME is
+ set. The configure script looks for jni.h in $JAVA_HOME/Headers
+ and in $JAVA_HOME/include; it also examines corresponding locations
+ for $JDK_HOME. If jni.h still cannot be found, specify the location
+ with the CPPFLAGS variable: so, for example,
+
+ export CPPFLAGS="-I/opt/jdk1.5/include/:/opt/jdk1.5/include/linux"
+ or
+ export CPPFLAGS="-I/c/java/jdk1.6.0/include/ -I/c/java/jdk1.6.0/include/win32/"
+
+ Please note that the use of /opt is non-standard, and most system
+ tools will fail to find packages installed there.
+
+ The building of the Java bindings can be disabled by configuring as
+ below:
+
+ ./configure --disable-java-bindings
+
+
+Spell Checking:
+---------------
+ The parser will run a spell-checker at an early stage, if it
+ encounters a word that it does not know, and cannot guess, based on
+ morphology. The configure script looks for the aspell or hunspell
+ spell-checkers; if the aspell devel environment is found, then
+ aspell is used, else hunspell is used.
+
+ Spell checking may be disabled at runtime, in the link-parser client
+ with the !spell flag. Enter !help for more details.
+
+
+Corpus Statistics:
+------------------
+ The parser now contains some experimental code for using corpus
+ statistics to provide a parse ranking, and to assign WordNet word
+ senses to word, based on their grammatical usage. An overview of
+ the idea is given on the OpenCog blog, here:
+
+ http://brainwave.opencog.org/2009/01/12/determining-word-senses-from-grammatical-usage/
+
+ It is planned that the Corpus statistics database will be used to
+ guide the SAT solver.
+
+ To enable the corpus statistics, specify
+
+ ./configure --enable-corpus-stats
+
+ prior to compiling. The database itself can be downloaded from
+
+ http://www.abisource.com/downloads/link-grammar/sense-dictionary/
+ or
+ http://gnucash.org/linas/nlp/data/linkgrammar-wsd/
+
+ The data is contained in an sqlite3 database file,
+
+ disjuncts.20090430.db.bz2
+
+ Unzip this file (using bunzip2) rename it to "disjuncts.db", and
+ place it in the subdirectory "sql", in the same directory that
+ contains the "en" directory. For default unix installations, the
+ final location would be
+
+ /usr/local/share/link-grammar/sql/disjuncts.db
+
+ where, by comparison, the usual dictionary would be at
+
+ /usr/local/share/link-grammar/en/4.0.dict
+
+ After this is installed, parse ranking scores should be printed
+ automatically, as floating-point numbers: for example:
+
+ Unique linkage, cost vector = (CORP=4.4257 UNUSED=0 DIS=1 AND=0 LEN=5)
+
+ Lower numbers are better. The scores can be interpreted as -log_2
+ of a certain probability, so the lower the number, the higher the
+ probability.
+
+ The display of disjunct scores can be enabled with the !disjuncts
+ flag, and senses with the !senses flag, at the link-parser prompt.
+ Entering !var and !help will show all flags. Multiple parses are
+ sorted and displayed in order from lowest to highest cost; the sort
+ of can be set by saying !cost=1 for the traditional sort, and
+ !cost=2 for corpus-based cost. Output similar to the below should
+ be printed:
+
+ linkparser> !disjunct
+ Showing of disjunct used turned on.
+ linkparser> !cost=2
+ cost set to 2
+ linkparser> !sense
+ Showing of word senses turned on.
+ linkparser> this is a test
+ Found 1 linkage (1 had no P.P. violations)
+ Unique linkage, cost vector = (CORP=4.4257 UNUSED=0 DIS=1 AND=0 LEN=5)
+
+ +--Ost--+
+ +-Ss*b+ +-Ds-+
+ | | | |
+ this.p is.v a test.n
+
+ 2 is.v dj=Ss*b- Ost+ sense=be%2:42:02:: score=2.351568
+ 2 is.v dj=Ss*b- Ost+ sense=be%2:42:05:: score=2.143989
+ 2 is.v dj=Ss*b- Ost+ sense=be%2:42:03:: score=1.699292
+ 4 test.n dj=Ost- Ds- sense=test%1:04:00:: score=0.000000
+ this.p 0.0 0.695 Wd- Ss*b+
+ is.v 0.0 7.355 Ss*b- Ost+
+ a 0.0 0.502 Ds+
+ test.n 1.0 9.151 Ost- Ds-
+
+
+ Note that the sense labels are not terribly accurate; the verb "to be"
+ is particularly hard to tag correctly.
+
+
+MULTI-THREADED USE:
+-------------------
+ The link-grammar library should be thread-safe as of version 4.3.6,
+ although this has not yet been tested very well, and may possibly be
+ buggy. To enable the thread-safe version of the library, run
+ ./configure like so:
+
+ ./configure --enable-pthreads
+
+ The resulting library is thread-safe for all parsing and general
+ use, with the exception of the startup/initialization code. That
+ is, the initial open/creation of the parser dictionary should be
+ done only once, from a single thread, and parsing should not be
+ started until after the dictionary has been read and initialized.
+
+ Parse options can be set on a per-thread basis, with the exception
+ of verbosity, which is treated as a global.
+
+ The library uses pthreads for the few spots where it needs to manage
+ per-thread storage. It is possibly quite reasonable to abolish these
+ few spots, thus making the library not only thread-safe, but thread
+ agnostic (i.e. not require pthreads).
+
+ The following exceptions and special notes apply:
+
+ utilities.c -- has global "verbosity". Uses pthreads for tracking
+ memory usage. The memory usage code is just about
+ obsolete, and could probably be discarded.
+ jni-client.c - uses per-thread struct, but needs to be attached
+ to JNIEnv somehow.
+ malloc-dbg.c - not thread safe, not normally used;
+ only for debugging.
+ prefix.c - not thread-safe, but doesn't need to be; used only
+ during initialization, and only if binreloc turned
+ on.
+ pp_lexer.c -- autogened code, original lex sources lost.
+ This is only used when reading dictionaries,
+ during initialization, and so doesn't need
+ to be thread safe.
+
+
+BioLG merger:
+-------------
+ Much of the BioLG project changes have been merged into this version.
+ The current version of link-grammar has superior parse coverage to BioLG
+ on all texts, including biomedical texts. The original BioLG test suite
+ can be found in data/en/4.0.biolg.batch.
+
+ The following changes in BioLG have NOT been merged:
+ -- Part of speech hinting. The BioLG code can accept part-of-speech
+ hints for unknown words.
+ -- XML I/O. The BioLG code can output parsed text in a certain
+ idiosyncratic XML format.
+ -- "term support". Link-grammar does support "entity placeholders",
+ which provides an equivalant function.
+ -- The link type CH. This was a large, intrusive, incompatible change
+ to the dictionary, and it is not strictly required -- there is a
+ better, alternative way of handling adj-noun-adj-noun chains commonly
+ seen in biomedical text, and this has been implemented.
+
+ All other BioLG changes, and in particular, extensive dictionary fixes,
+ as well as regex morphology handling, have been incorporated.
+
+
+Medical Terms Merger
+--------------------
+Many, but not all, of the "medical terms" from Peter Szolovits have been
+merged into version 4.3.1 (January 2008) of link-grammar. The origiginal
+project page was at:
+
+ http://groups.csail.mit.edu/medg/projects/text/lexicon.html
+
+The following "extra" files were either merged directly, renamed, or
+skipped (omitted):
+
+/extra.1: -- merged
+/extra.2: -- skip, too big
+/extra.3: -- skip, too big
+/extra.4: -- /en/words/words-medical.v.4.2:
+/extra.5: -- /en/words/words-medical.v.4.1:
+/extra.6: -- /en/words/words-medical.adj.2:
+/extra.7: -- /en/words/words-medical.n.p
+/extra.8: -- skip, too big
+/extra.9: -- skip, random names
+/extra.10: -- /en/words/words-medical.adv.1:
+/extra.11: -- /en/words/words-medical.v.4.5:
+/extra.12: -- skip, too big
+/extra.13: -- /en/words/words-medical.v.4.3:
+/extra.14: -- /en/words/words-medical.prep.1
+/extra.15: -- /en/words/words-medical.adj.3:
+/extra.16: -- /en/words/words-medical.v.2.1:
+/extra.17: -- skip, too big
+
+The make use of the "skipped" files, download the original extension,
+gut the contents of "extra.dict" except for the parts refering to the
+skipped files above, and then append to 4.0.dict (as per original
+instructions).
+
+
+Fat Links:
+----------
+ As of version 4.7.0, parsing using "fat links" has been disabled
+ by default, and is now deprecated. The function is still there,
+ and can be turned on by specifying the !use-fat=1 command, or by
+ calling parse_options_use_fat_links(TRUE) from programs.
+
+ Older versions of the link-grammar parser used "fat links" to
+ support conjunctions (and, or, but, ...). However, this lead
+ to a number of complications, including poor performance due to
+ a combinatorial explosion of linkage possibilities, as well as
+ an excessively complex parse algorithm. As a result, the function
+ is now deprecated, and will be removed in version 4.8.
+
+
+SAT solver:
+-----------
+ The current parser uses an algorithm that runs in O(N^3) time, for
+ a sentence containing N words. This algorithm is more or less a
+ chart parser, a variant of the Earley parser.
+
+ The SAT solver aims to replace the chart parser with an algorithm
+ based on Boolean Satisfiability Theory; specifically using the
+ MiniSAT solver. The SAT solver has a bit more overhead for shorter
+ sentences, but is significantly faster for long sentences. To work
+ properly, it needs to be attached to a parse ranking system. This
+ work is incomplete, although the prototype works. it is not yet
+ well-integrated with the system, and needs cleanup.
+
+ The SAT solver is enabled by specifying
+
+ ./configure --enable-sat-solver
+
+ prior to compiling.
+
+
+COMMERCIAL use:
+---------------
+ The original authors would be pleased to discuss alternate
+ licensing terms and/or additional research work, with those
+ wanting to use this system under a paid contract.
+
+ Academic products or papers should reference the various
+ link grammar publications.
+
+
+ADDRESSES
+---------
+ If you have any questions, or find any bugs, please feel free
+ to send a note to the mailing list:
+
+ link-grammar@googlegroups.com
+
+ Although all messages should go to the mailing list, the current
+ maintainers can be contacted at:
+
+ Linas Vepstas - <linasvepstas@gmail.com>
+ Dom Lachowicz - <domlachowicz@gmail.com>
+
+ The original authors of the Link Grammar parser are:
+
+ Daniel Sleator sleator@cs.cmu.edu
+ Computer Science Department 412-268-7563
+ Carnegie Mellon University www.cs.cmu.edu/~sleator
+ Pittsburgh, PA 15213
+
+ Davy Temperley dtemp@theory.esm.rochester.edu
+ Eastman School of Music 716-274-1557
+ 26 Gibbs St. www.link.cs.cmu.edu/temperley
+ Rochester, NY 14604
+
+ John Lafferty lafferty@cs.cmu.edu
+ Computer Science Department 412-268-6791
+ Carnegie Mellon University www.cs.cmu.edu/~lafferty
+ Pittsburgh, PA 15213
+
+
+TODO -- Working Notes:
+----------------------
+ Some working notes.
+
+ Easy to fix: provide a more uniform API to the constituent tree.
+ i.e provide word index. Also .. provide a clear word API,
+ showing word extent, suffix, etc.
+
+ Head words:
+ The head-word of a sentences is usually the verb; head-words should
+ attach to walls, and not nouns, the way the current link-grammar
+ does it. Why? Because this allows for a more correct handling of
+ many clause openers, such as "the blah being blah, ..." e.g
+ * Cutting was difficult, the knife being dull.
+ In the above, "being" can only be used in this way, in such compound
+ sentences. The head-word is already correctly linked with C for
+ subordinate clauses. "I told him I was angry", with "told" being the
+ head-word.
+
+ Zero/phantom words: Expressions such as "Looks good" have an implicit
+ "it" (also called a zero-it or phantom-it) in them; that is, the
+ sentence should really parse as "(it) looks good". The dictionary
+ could be simplified by admitting such phantom words explicitly,
+ rather than modifying the grammar rules to allow such constructions.
+ Other examples, with the phantom word in parenthesis, include:
+ * I ate all (of) the cookies.
+ * I taught him (how) to swim.
+
+
+ Bad grammar: When a sentence fails to parse, look for:
+ * confused words: its/it's, there/their, to/too, your/you're ...
+ * missing apostrophes in possessives: "the peoples desires"
+ * determiner agreement errors: "a books"
+ * aux verb agreement errors: "to be hooks up"
+
+ A/An determiners before consonants/vowels: fix this. Just adding
+ linkages in a naive way is not enough, because there's no restriction
+ on neighboring words: "I ate an apple." vs. "I ate a green apple".
+ Should this be done in post-processing? or in pre-processing?
+ (maybe easier to post-process, but more biologically natural as
+ a pre-process step.)
+
+
+ Poor linkage choices:
+ Compare "she will be happier than before" to "she will be more happy
+ than before." Current parser makes "happy" the head word, and "more"
+ a modifier w/EA link. I beleive the correct solution would be to
+ make "more" the head (link it as a comparative), and make "happy"
+ the dependent. This would harmonize rules for comparatives... and
+ would eliminate/simplify rules for less,more.
+
+
+ Repulsive parses: Sometimes, the existance of one parse should suggest
+ that another parse must surely be wrong: if one parse is possible,
+ then the other parses must surely be unlikely. For example: the
+ conjunction and.j-g allows the "The Great Southern and Western
+ Railroad" to be parsed as the single name of an entity. However,
+ it also provides a pattern match for "John and Mike" as a single
+ entity, which is almost certainly wrong. But "John and Mike" has
+ an alternative parse, as a conventional-and -- a list of two people,
+ and so the existance of this alternaive (and correct) parse suggests
+ that perhaps the entity-and is really very much the wrong parse.
+ That is, the mere possibility of certain parses should strongly
+ disfavour other possible parses. (Exception: Ben & Jerry's ice
+ cream; however, in this case, we could recognize Ben & Jerry as the
+ name of a proper brand; but this is outside of the "normal"
+ dictionary (?) (but maybe should be in the dictionary!))
+
+ More examples: "high water" can have A joining high.a and AN joining
+ high.n; these two should either be collapsed into one, or one should
+ be eliminated.
+
+
+ Wordnet hinting:
+ Use wordnet to reduce the number for parses for sentences containing
+ compound verb phrases, such as "give up", "give off", etc.
+
+ incremental parsing: to avoid a combinatorial explosion of parses,
+ it would be nice to have an incremental parsing, phrase by phrase,
+ using a Viterbi-like algorithm to obtain the parse. Thus, for example,
+ the parse of the last half of a long, run-on sentence should not be
+ sensitive to the parse of the beginning of the sentence.
+
+ Doing so would help with combinatorial explosion. So, for example,
+ if the first half of a sentence has 4 plausible parses, and the
+ last half has 4 more, then link-grammar reports 16 parses total.
+ It would be much, much more useful to instead be given the
+ factored results: i.e. the four plausible parses for the
+ first half, and the four plausible parses for the last half.
+ The lower combinatoric stress would ease the burden on
+ downstream users of link-grammar.
+
+ (This somewhat resembles the application of construction grammar
+ ideas to the link-grammar dictionary).
+
+ Caution: watch out for garden-path sentences:
+ The horse raced past the barn fell.
+ The old man the boat.
+ The cotton clothing is made of grows in Mississippi.
+ The current parser parses these perfectly; a viterbi parsr could
+ trip on these.
+
+ Other benefits of a Viterbi decoder:
+ * Less sensitive to sentence boundaries: this would allow longer,
+ run-on sentences to be parsed far more quickly.
+ * Could do better with slang, hip-speak.
+ * Would enable co-reference resultion across sentences (resolve
+ pronouns, etc.)
+ * Would allow richer state to be passed up to higher layers:
+ specifically, alternate parses for fractions of a sentence,
+ alternate refernce resolutions.
+ * Would allow plug-in architecture, so that plugins, employing
+ some alternate, higher-level logic, could disambiguate (e.g.
+ by making use of semantic content).
+ * Eliminate many of the hard-coded array sizes in the code.
+ * Fixes the word-count problem during spell-guessing. So, for
+ example, if the mis-spelled word "dont" shows up in the input, it
+ could be issued as one word ("done") or two ("do n't") and the
+ current suffix-stripping/word-issueing algo cannot deal with this
+ correctly. By contrast, this should not be an issue for the
+ Viterbi algo, as it could explore both states at once.
+
+ One may argue that Viterbi is a more natural, biological way of
+ working with sequences. Some experimental, psychological support
+ for this can be found here:
+ http://www.sciencedaily.com/releases/2012/09/120925143555.htm
+ per Morten Christiansen, Cornell professor of psychology.
+
+
+ Registers:
+ Consider the sentence "Thieves rob bank" -- a typical newspaper
+ headline. LG currently fails to parse this, because the determiner
+ is missing ("bank" is a count noun, not a mass noun, and thus
+ requires a determiner. By contrast, "thieves rob water" parses
+ just fine.) A fix for this would be to replace mandatory
+ determiner links by (D- or {[[()]] & headline-flag}) which allows
+ the D link to be ommitted if the headline-flag bit is set.
+ Here, "headline-flag" could be a new link-type, but one that is
+ not subject to planarity constraints.
+
+ Note that this is easier said than done: if one simply adds a
+ high-cost null link, and no headline-flag, then all sorts of
+ ungrammatical sentences parse, with strange parses; while some
+ grammatical sentences, which should parse, but currently don't,
+ become parseable, but with crazy results.
+
+
+ Hand-refining verb patterns:
+ A good reference for refining verb usage patterns is:
+ COBUILD GRAMMAR PATTERNS 1: VERBS
+ from THE COBUILD SERIES /from/ THE BANK OF ENGLISH
+ HARPER COLLINS
+ online at https://arts-ccr-002.bham.ac.uk/ccr/patgram/
+ http://www.corpus.bham.ac.uk/publications/index.shtml
+
+
+ Quotations: Currently, tokenize.c ignores all ASCII double-quotes
+ (grep for "quote_found" in the source). However, it does not do this
+ for the various "curly" UTF8 quotes, such as ‘these’ and “these”.
+ This results is some ugly parsing for sentences containing such
+ quotes. (Note that these are in 4.0.affix).
+
+
+ no-links-cross: Link Grammar uses a constraint that all linkages must
+ be planar graphs. While this is mostly correct, it would probably
+ be more correct to use "landmark transitivity" as articulated by
+ Hudson in the Word Grammar theory. This might allow the elimination
+ of most or all post-processing rules.
+
+ This is done by making each link directional: one end of the link
+ is the parent. (e.g. noun, noun-modifier: the noun is the parent).
+ Parents are landmarks for children. Transitivity is applied to
+ parent-child relationships. Specifically, the no-links-cross
+ rule is replaced by two landmark transitivity rules:
+
+ -- If B is a landmark for C, then A is also a type-L landmark for C
+ -- If A is a landmark for C, then B is also a landmark for C
+
+ where type-L means either a right-going or left-going link.
+
+ See http://goertzel.org/ProwlGrammar.pdf for details.
+ See also: http://www.phon.ucl.ac.uk/home/dick/enc/syntax.htm
+
+ "to be fishing": Link grammar offers four parses of "I was fishing for
+ evidence", two of which are given low scores, and two are given
+ high scores. Of the two with high scores, one parse is clearly bad.
+ Its links "to be fishing.noun" as opposed to the correct
+ "to be fishing.gerund". That is, I can be happy, healthy and wise,
+ but I certainly cannot be fishing.noun. This is perhaps not
+ just a bug in the structure of the dictionary, but is perhaps
+ deeper: link-grammar has little or no concept of lexical units
+ (i.e. collocations, idioms, institutional phrases), which thus
+ allows parses with bad word-senses to sneak in.
+
+ The goal is to introduce more knowledge of lexical units into LG.
+
+ Different word senses can have different grammar rules (and thus,
+ the links employed reveal the sense of the word): for example:
+ "I tend to agree" vs. "I tend to the sheep" -- these employ two
+ different meanings for the verb "tend", and the grammatical
+ constructions allowed for one meaning are not the same as those
+ allowed for the other. Yet, the link rules for "tend.v" have
+ to accommodate both senses, thus making the rules rather complex.
+ Worse, it potentially allows for non-sense constructions.
+ If, instead, we allowed the dictionary to contain different
+ rules for "tend.meaning1" and "tend.meaning2", the rules would
+ simplify (at the cost of inflating the size of the dictionary).
+
+ Another example: "I fear so" -- the word "so" is only allowed
+ with some, but not all, lexical senses of "fear". So e.g.
+ "I fear so" is in the same semantic class as "I think so" or
+ "I hope so", although other meanings of these verbs are
+ otherwise quite different.
+
+ [Sin2004] "New evidence, new priorities, new attitudes" in J.
+ Sinclair, (ed) (2004) How to use corpora in language teaching,
+ Amsterdam: John Benjamins
+
+ See also: Pattern Grammar: A Corpus-Driven Approach to the Lexical
+ Grammar of English Susan Hunston and Gill Francis (University of
+ Birmingham) Amsterdam: John Benjamins (Studies in corpus linguistics,
+ edited by Elena Tognini-Bonelli, volume 4), 2000
+
+ "holes" in collocations (aka "set phrases" of "phrasemes"):
+ The link-grammar provides several mechanisms to support
+ circumpositions or even more complicated multi-word structures.
+ One mechanism is by ordinary links; see the V, XJ and RJ links.
+ The other mechanism is by means of post-processing rules.
+ However, rules for many common forms have not yet been written.
+ The general problem is of supporting structures that have "holes"
+ in the middle. For example, the adposition:
+
+ ... from [xxx] on.
+
+ "He never said another word from then on."
+ "I promise to be quiet from now on."
+ "Keep going straight from that point on."
+ "We went straight from here on."
+ ... from there on.
+ "We went straight, from the house on to the woods."
+ "We drove straight, from the hill onwards."
+
+ Note that multiple words can fit in the slot [xxx].
+ Note the tangling of another prepositional phrase:
+ "... from [xxx] on to [yyy]"
+
+ More complicated collocations with holes include
+ "First.. next..."
+ "If ... then ..."
+
+ 'Then' is optional, for example:
+ "If it is raining, stay inside!"
+
+ "if ... only ..." "If there were only more like you!"
+ "... not only, ... but also ..."
+
+ "Either ... or ..."
+ "Both ... and ..." "Both June and Tom are coming"
+ "ought ... if ..." "That ought to be the case, if John is not lying"
+
+ "Someone ... who ..."
+ "Someone is outside who wants to see you"
+
+ The above are not currently supported. An example that is supported
+ is the "non-referential it", e.g.
+ "It ... that ..."
+ "It seemed likely that John would go"
+
+ The above is supported by means of special disjuncts for 'it' and
+ 'that', which must occur in the same post-processing domain.
+
+ See also:
+ http://www.phon.ucl.ac.uk/home/dick/enc/syntax.htm#relative-clause
+ http://www.phon.ucl.ac.uk/home/dick/enc/syntax.htm#extraposition
+
+ "...from X and from Y"
+ "By X, and by Y, ..."
+ Here, X and Y might be rather long phrases, containing other
+ prepositions. In this case, the usual link-grammar linkage rules
+ will typically conjoin "and from Y" to some preposition in X,
+ instead of the correct link to "from X". Although adding a cost to
+ keep the lengths of X and Y approximately equal can help, it would
+ be even better to recognize the "...from ... and from..." pattern.
+
+ One possible way to implement this would be to give preference to
+ and-links that have the same word on either end.
+
+ More idiomatic than the above examples:
+ "...the chip on X's shoulder"
+ "to do X a favour"
+ "to give X a look"
+
+ The above are all examples of "set phrases" or "phrasemes", and are
+ most commonly discussed in the context of MTT or Meaning-Text Theory
+ of Igor Mel'cuk et al (search for "MTT Lexical Function" for more
+ info). Mel'cuk treats set phrases as lexemes, and, for parsing, this
+ is not directly relevent. However, insofar as phrasemes have a high
+ mutual information content, they can dominate the syntactic
+ structure of a sentence.
+
+ MTT suggests that perhaps the correct way to understand the contents
+ of the post-processing rules is as an implementation of 'lexical
+ functions' projected onto syntax. That is, the post-processing
+ rules allow only certain syntactical constructions, and these are
+ the kinds of constructions one typically sees in certain kinds
+ of lexical functions.
+
+ Alternately, link-grammar suffers from a combinatoric explosion
+ of possible parses of a given sentence. It would seem that lexical
+ functions could be used to rule out many of these parses. On the
+ other hand, the results are likely to be similar to that of
+ statistical pare ranking (which presumably captures such
+ quasi-idiomatic collocations at least weakly).
+
+ Ref. I. Mel'cuk: "Collocations and Lexical Functions", in ''Phraseology:
+ theory, analysis, and applications'' Ed. Anthony Paul Cowie (1998)
+ Oxford University Press pp. 23-54.
+
+ Conjunction cleanup: parser has some special-case code for dealing
+ with conjunctions. Unfortunately, some of this code has hard-wired
+ English words in them. These are in construct_either() and in
+ set_is_conjunction(). Actually, all of massage.c Grep for XXX FIXME.
+ All of this can now be deleted for version 5.0.
+
+
+ Assorted minor cleanup:
+ -- Should provide a query that returns compile-time consts,
+ e.g. the max number of characters in a word, or max words
+ in a sentence
+ -- Should remove compile-time constants, e.g. max words, max
+ length etc.
+ -- Split out parse-options, so that the command-line client
+ options are not in the parse-options struct.
+
+ Version 5.0 TODO list:
+ Version 5.0 will completely eliminate both fat links, and vestiges thereof.
+ In particular, this will get rid of sublinkages, and all uses thereof.
+ -- in api.c, change many linkage_*() funs to linkage_get_*() funs
+ -- get rid of sublinkages.
+ -- Change Sentence, Linkage etc. to not be pointers.
diff --git a/grammar/link-grammar-4.7.9/TODO b/grammar/link-grammar-4.7.9/TODO
new file mode 100644
index 0000000..6db4899
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/TODO
@@ -0,0 +1,7 @@
+
+List of ideas for possible improvements:
+----------------------------------------
+
+-- See the bottom of the README file for list of ideas.
+
+
diff --git a/grammar/link-grammar-4.7.9/ac-helpers/binreloc.m4 b/grammar/link-grammar-4.7.9/ac-helpers/binreloc.m4
new file mode 100644
index 0000000..8e44e4e
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/ac-helpers/binreloc.m4
@@ -0,0 +1,77 @@
+# Check for binary relocation support
+# Hongli Lai
+# http://autopackage.org/
+
+AC_DEFUN([AM_BINRELOC],
+[
+ AC_ARG_ENABLE(binreloc,
+ [ --enable-binreloc compile with binary relocation support
+ (default=enable when available)],
+ enable_binreloc=$enableval,enable_binreloc=auto)
+
+ AC_ARG_ENABLE(binreloc-threads,
+ [ --enable-binreloc-threads compile binary relocation with threads support
+ (default=yes)],
+ enable_binreloc_threads=$enableval,enable_binreloc_threads=yes)
+
+ BINRELOC_CFLAGS=
+ BINRELOC_LIBS=
+ if test "x$enable_binreloc" = "xauto"; then
+ AC_CHECK_FILE([/proc/self/maps])
+ AC_CACHE_CHECK([whether everything is installed to the same prefix],
+ [br_cv_valid_prefixes], [
+ if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \
+ "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \
+ "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc'
+ then
+ br_cv_valid_prefixes=yes
+ else
+ br_cv_valid_prefixes=no
+ fi
+ ])
+ fi
+ AC_CACHE_CHECK([whether binary relocation support should be enabled],
+ [br_cv_binreloc],
+ [if test "x$enable_binreloc" = "xyes"; then
+ br_cv_binreloc=yes
+ elif test "x$enable_binreloc" = "xauto"; then
+ if test "x$br_cv_valid_prefixes" = "xyes" -a \
+ "x$ac_cv_file__proc_self_maps" = "xyes"; then
+ br_cv_binreloc=yes
+ else
+ br_cv_binreloc=no
+ fi
+ else
+ br_cv_binreloc=no
+ fi])
+
+ if test "x$br_cv_binreloc" = "xyes"; then
+ BINRELOC_CFLAGS="-DENABLE_BINRELOC"
+ AC_DEFINE(ENABLE_BINRELOC,,[Use binary relocation?])
+ if test "x$enable_binreloc_threads" = "xyes"; then
+ AC_CHECK_LIB([pthread], [pthread_getspecific])
+ fi
+
+ AC_CACHE_CHECK([whether binary relocation should use threads],
+ [br_cv_binreloc_threads],
+ [if test "x$enable_binreloc_threads" = "xyes"; then
+ if test "x$ac_cv_lib_pthread_pthread_getspecific" = "xyes"; then
+ br_cv_binreloc_threads=yes
+ else
+ br_cv_binreloc_threads=no
+ fi
+ else
+ br_cv_binreloc_threads=no
+ fi])
+
+ if test "x$br_cv_binreloc_threads" = "xyes"; then
+ BINRELOC_LIBS="-lpthread"
+ AC_DEFINE(BR_PTHREAD,1,[Include pthread support for binary relocation?])
+ else
+ BINRELOC_CFLAGS="$BINRELOC_CFLAGS -DBR_PTHREADS=0"
+ AC_DEFINE(BR_PTHREAD,0,[Include pthread support for binary relocation?])
+ fi
+ fi
+ AC_SUBST(BINRELOC_CFLAGS)
+ AC_SUBST(BINRELOC_LIBS)
+])
diff --git a/grammar/link-grammar-4.7.9/autogen.err b/grammar/link-grammar-4.7.9/autogen.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/autogen.err
diff --git a/grammar/link-grammar-4.7.9/autogen.sh b/grammar/link-grammar-4.7.9/autogen.sh
new file mode 100755
index 0000000..228a4da
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/autogen.sh
@@ -0,0 +1,84 @@
+#!/bin/sh
+#
+# Run this before configure
+#
+# This file blatantly ripped off from subversion.
+#
+# Note: this dependency on Perl is fine: only developers use autogen.sh
+# and we can state that dev people need Perl on their machine
+#
+
+rm -f autogen.err
+
+automake --version | perl -ne 'if (/\(GNU automake\) (([0-9]+).([0-9]+))/) {print; if ($2 < 1 || ($2 == 1 && $3 < 4)) {exit 1;}}'
+
+if [ $? -ne 0 ]; then
+ echo "Error: you need automake 1.4 or later. Please upgrade."
+ exit 1
+fi
+
+if test ! -d `aclocal --print-ac-dir 2>> autogen.err`; then
+ echo "Bad aclocal (automake) installation"
+ exit 1
+fi
+
+libtoolize --force --copy || {
+ echo "error: libtoolize failed"
+ exit 1
+}
+
+# Produce aclocal.m4, so autoconf gets the automake macros it needs
+#
+ACLOCAL_BINRELOC='-I ac-helpers'
+echo "Creating aclocal.m4: aclocal $ACLOCAL_FLAGS $ACLOCAL_BINRELOC"
+
+aclocal $ACLOCAL_FLAGS $ACLOCAL_BINRELOC 2>> autogen.err
+
+# Produce all the `GNUmakefile.in's and create neat missing things
+# like `install-sh', etc.
+#
+echo "automake --add-missing --copy --foreign"
+
+automake --add-missing --copy --foreign 2>> autogen.err || {
+ echo ""
+ echo "* * * warning: possible errors while running automake - check autogen.err"
+ echo ""
+}
+
+# If there's a config.cache file, we may need to delete it.
+# If we have an existing configure script, save a copy for comparison.
+if [ -f config.cache ] && [ -f configure ]; then
+ cp configure configure.$$.tmp
+fi
+
+# Produce ./configure
+#
+echo "Creating configure..."
+
+autoconf 2>> autogen.err || {
+ echo ""
+ echo "* * * warning: possible errors while running automake - check autogen.err"
+ echo ""
+}
+
+run_configure=true
+for arg in $*; do
+ case $arg in
+ --no-configure)
+ run_configure=false
+ ;;
+ *)
+ ;;
+ esac
+done
+
+if $run_configure; then
+ mkdir -p build
+ cd build
+ ../configure --enable-maintainer-mode "$@"
+ echo
+ echo "Now type 'make' to compile link-grammar."
+else
+ echo
+ echo "Now run 'configure' and 'make' to compile link-grammar."
+fi
diff --git a/grammar/link-grammar-4.7.9/autopackage/default.apspec.in b/grammar/link-grammar-4.7.9/autopackage/default.apspec.in
new file mode 100644
index 0000000..ac313ad
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/autopackage/default.apspec.in
@@ -0,0 +1,52 @@
+# -*-shell-script-*-
+
+[Meta]
+RootName: @abisource.org/link-grammar:@VERSION@
+DisplayName: An english language parser
+ShortName: link-grammar
+Maintainer: Link-Grammar Team - http://www.abisource.com/projects/link-grammar/
+Packager: Robert Staudinger <robsta@stereolyzer.net>
+Summary: An english language parser
+SoftwareVersion: @VERSION@
+AutopackageTarget: 1.0
+PackageVersion: 1
+
+# Only uncomment InterfaceVersion if your package exposes interfaces to
+# other software, for instance if it includes DSOs or python/perl modules.
+# See the developer guide for more info, or ask on autopackage-dev if you
+# don't understand interface versioning in autopackage.
+
+# XXX this can't possibly be right, I think its stale.
+# Should be using LINK_VERSION_STRING, yeah ??
+# Or maybe just major plus minor ?
+InterfaceVersion: 4.1
+
+[Description]
+An English language parser, based on the theory of link grammars.
+
+[BuildPrepare]
+# create configure wrapper when building out of the source tree
+if [ ! -e "configure" ] ; then
+ echo '#!/bin/bash' > configure
+ echo '../link-grammar/configure $@' >> configure
+ chmod +x configure
+fi
+prepareBuild --prefix=/break/if/binreloc/breaks --enable-binreloc --disable-debug
+
+[BuildUnprepare]
+unprepareBuild
+
+[Imports]
+echo '*' | import
+
+[Prepare]
+# avoid warning
+echo "nothing to prepare"
+
+[Install]
+#doesn't work installExe ./bin/link-parser
+installLib ./lib/*.so.*.*.*
+installData ./share/*
+
+[Uninstall]
+uninstallFromLog
diff --git a/grammar/link-grammar-4.7.9/build.xml.in b/grammar/link-grammar-4.7.9/build.xml.in
new file mode 100644
index 0000000..b2783fe
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/build.xml.in
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project basedir="." default="build" name="linkgrammar">
+ <property environment="env"/>
+ <property name="debuglevel" value="source,lines,vars"/>
+ <property name="target" value="1.5"/>
+ <property name="source" value="1.5"/>
+ <target name="init">
+ <mkdir dir="bin"/>
+ <copy includeemptydirs="false" todir="bin">
+ <fileset dir="@srcdir@/link-grammar/java" excludes="**/*.java"/>
+ </copy>
+ </target>
+ <target name="clean">
+ <delete dir="bin"/>
+ </target>
+ <target depends="clean" name="cleanall"/>
+ <target depends="build-subprojects,build-project" name="build"/>
+ <target name="build-subprojects"/>
+ <target depends="init" name="build-project">
+ <echo message="${ant.project.name}: ${ant.file}"/>
+ <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">
+ <src path="@srcdir@/link-grammar/java"/>
+ </javac>
+ <jar basedir="bin" destfile="linkgrammar-@VERSION@.jar">
+ <manifest>
+ <attribute name="Implementation-Title" value="Link Grammar Parser Java Bindings"/>
+ <attribute name="Implementation-URL" value="http://www.abisource.com/projects/link-grammar/"/>
+ <attribute name="Specification-Version" value="@LINK_MAJOR_VERSION@.@LINK_MINOR_VERSION@"/>
+ <attribute name="Implementation-Version" value="@VERSION@"/>
+ </manifest>
+ </jar>
+ </target>
+</project>
diff --git a/grammar/link-grammar-4.7.9/configure.in b/grammar/link-grammar-4.7.9/configure.in
new file mode 100644
index 0000000..fa1675c
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/configure.in
@@ -0,0 +1,559 @@
+AC_INIT([link-grammar],[4.7.9],[link-grammar@googlegroups.com])
+
+dnl Set release number
+dnl This is derived from "Versioning" chapter of info libtool documentation.
+PACKAGE=link-grammar
+dnl 4a) Increment when removing or changing interfaces.
+LINK_MAJOR_VERSION=4
+dnl 4a) 5) Increment when adding interfaces.
+dnl 6) Set to zero when removing or changing interfaces.
+LINK_MINOR_VERSION=7
+dnl 3) Increment when interfaces not changed at all,
+dnl only bug fixes or internal changes made.
+dnl 4b) Set to zero when adding, removing or changing interfaces.
+LINK_MICRO_VERSION=9
+dnl
+dnl Set this too
+MAJOR_VERSION_PLUS_MINOR_VERSION=`expr $LINK_MAJOR_VERSION + $LINK_MINOR_VERSION`
+dnl
+VERSION=$LINK_MAJOR_VERSION.$LINK_MINOR_VERSION.$LINK_MICRO_VERSION
+dnl Version info for libraries = CURRENT:REVISION:AGE
+VERSION_INFO=$MAJOR_VERSION_PLUS_MINOR_VERSION:$LINK_MICRO_VERSION:$LINK_MINOR_VERSION
+
+AC_SUBST(VERSION_INFO)
+AC_SUBST(LINK_MAJOR_VERSION)
+AC_SUBST(LINK_MINOR_VERSION)
+AC_SUBST(LINK_MICRO_VERSION)
+
+AM_INIT_AUTOMAKE()
+AM_MAINTAINER_MODE
+
+AC_CONFIG_MACRO_DIR([m4])
+
+AC_CONFIG_SRCDIR($PACKAGE)
+
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [AC_SUBST([AM_DEFAULT_VERBOSITY],1)])
+
+# OS checks, including Win32
+AC_CANONICAL_HOST
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_HEADER_STDC
+LT_INIT([win32-dll])
+AM_BINRELOC
+PKG_PROG_PKG_CONFIG
+
+# The below says "use the C compiler for all reamining tests".
+# That way, if g++ is not installed, configure won't crap out
+# (with a mystery error about not finding regex.h)
+AC_LANG([C])
+
+AC_C_CONST
+
+AC_CHECK_FUNCS(towupper)
+
+dnl ====================================================================
+
+AC_MSG_CHECKING([for native Win32])
+case "$host" in
+ *-*-mingw*)
+ native_win32=yes
+ ;;
+ *)
+ native_win32=no
+ ;;
+esac
+AC_MSG_RESULT([$native_win32])
+AM_CONDITIONAL(OS_WIN32, test "x$native_win32" = "xyes")
+
+dnl ====================================================================
+CFLAGS="${CFLAGS}"
+
+# The std=c99 flag provides the proper float-pt math decls working,
+# e.g. fmaxf However, it also undefined _BSD_SOURCE, etc which is
+# needed to get fileno, strdup, etc. and so it needs to be manually
+# enabled again.
+
+# Setting -D_POSIX_SOURCE messes up compilation on FreeBSD by
+# hiding strdup, etc. again.
+# CFLAGS="${CFLAGS} -std=c99 -D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE -D_GNU_SOURCE"
+
+# Final solution: enable std=c99, explitictly turn on BSD and SVID and
+# GNU, but do NOT turn on POSIX.
+#
+if test x${native_win32} = xyes; then
+ # Vikas says that -std=gnu99 is needed on cygwin/mingw
+ CFLAGS="${CFLAGS} -std=gnu99 -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE"
+ # Also -- Vikas sets MINGW explicitly, as well as assorted paths.
+ # I'm unclear as to why these are not being set automatically,
+ # by mingw itself .. but what the hey ... this can't hurt, right?
+ # Oh yes it can hurt, do not set these at all.
+ # Setting these screws up the remainder of the configure script.
+ # CFLAGS="${CFLAGS} -I/usr/include/mingw -D__MINGW32__"
+ # LDFLAGS="${LDFLAGS} -L/usr/lib/mingw -lmingwex -lcrtdll -lmsvcrt -lc -Wl,--allow-multiple-definition"
+else
+ # Else standard Linux/*BSD environment.
+ CFLAGS="${CFLAGS} -std=c99 -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE"
+fi
+
+dnl ====================================================================
+
+AM_CONDITIONAL(WITH_BINRELOC, test "x$br_cv_binreloc" = "xyes")
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( debug,
+ [ --enable-debug compile with debugging flags set],
+ [],
+ [enable_debug=no])
+
+if test "x$enable_debug" = "xyes"
+then
+ CFLAGS="${CFLAGS} -O0 -g"
+ LDFLAGS="${LDFLAGS} -g"
+ AC_DEFINE(DEBUG_MEMORY,1)
+else
+ CFLAGS="${CFLAGS} -O3"
+ AC_DEFINE(DEBUG_MEMORY,0)
+fi
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( mudflap,
+ [ --enable-mudflap compile with mudflap checking],
+ [],
+ [enable_mudflap=no])
+
+if test "x$enable_mudflap" = "xyes"
+then
+ CFLAGS="${CFLAGS} -fmudflap"
+ LDFLAGS="${LDFLAGS} -fmudflap -lmudflap"
+fi
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( profile,
+ [ --enable-profile compile with profiling set],
+ [],
+ [enable_profile=no]
+)
+if test "x$enable_profile" = "xyes"
+then
+ CFLAGS="${CFLAGS} -pg"
+ LDFLAGS="${LDFLAGS} -pg"
+fi
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( pthreads,
+ [ --enable-pthreads compile with pthread support],
+ [],
+ [enable_pthreads=no]
+)
+if test "x$enable_pthreads" = "xyes"
+then
+ CPPFLAGS="${CPPFLAGS} -DUSE_PTHREADS=1"
+fi
+
+
+AM_CONDITIONAL(WITH_PTHREADS, test x${enable_pthreads} = xyes)
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( java-bindings,
+ [ --disable-java-bindings disable build of java bindings],
+ [],
+ [enable_java_bindings=yes])
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( sat-solver,
+ [ --enable-sat-solver enable use of the Boolean SAT parser],
+ [],
+ [enable_sat_solver=no]
+)
+
+if test "x$enable_sat_solver" = "xyes"; then
+ CPPFLAGS="${CPPFLAGS} -DUSE_SAT_SOLVER=1"
+
+ # We want to check for C++; the easiest way to do this is to
+ # use c++ to compile stdio.h and bomb if it fails.
+ AC_LANG([C++])
+ AC_CHECK_HEADER([stdio.h],,
+ [AC_MSG_ERROR([C++ compiler not found; it is needed for the SAT parser])])
+ AC_LANG([C])
+fi
+
+AM_CONDITIONAL(WITH_SAT_SOLVER, test x${enable_sat_solver} = xyes)
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( viterbi,
+ [ --enable-viterbi enable use of the Viterbi parser],
+ [],
+ [enable_viterbi=no]
+)
+
+if test "x$enable_viterbi" = "xyes"; then
+ CPPFLAGS="${CPPFLAGS} -DUSE_VITERBI"
+
+ # We want to check for C++; the easiest way to do this is to
+ # use c++ to compile stdio.h and bomb if it fails.
+ AC_LANG([C++])
+ AC_CHECK_HEADER([stdio.h],,
+ [AC_MSG_ERROR([C++ compiler not found; it is needed for the Viterbi parser])])
+ AC_LANG([C])
+fi
+
+AM_CONDITIONAL(WITH_VITERBI, test x${enable_viterbi} = xyes)
+
+dnl ====================================================================
+
+AC_ARG_ENABLE( corpus-stats,
+ [ --enable-corpus-stats use corpus statistics],
+ [],
+ [enable_corpus_stats=no]
+)
+if test "x$enable_corpus_stats" = "xyes"
+then
+ CPPFLAGS="${CPPFLAGS} -DUSE_CORPUS=1"
+fi
+
+AM_CONDITIONAL(WITH_CORPUS, test x${enable_corpus_stats} = xyes)
+
+dnl ====================================================================
+
+# If not asking for the statistics backend, then don't even
+# check for SQLite.
+if test x${enable_corpus_stats} = xyes; then
+ AC_CHECK_HEADER([sqlite3.h], [CPPFLAGS="${CPPFLAGS} -DHAVE_SQLITE=1" SQLiteFound=yes], SQLiteFound=no)
+ AM_CONDITIONAL(HAVE_SQLITE, test x${SQLiteFound} = xyes)
+
+ # If there are sqlite3 and pkgconfig on MacOS, then
+ # recommend that user install MacPorts http://www.macports.org/
+ if test "x${SQLiteFound}" = "xyes"; then
+ PKG_CHECK_MODULES(SQLITE3, sqlite3 >= 3.0.0)
+ AC_SUBST(SQLITE3_LIBS)
+ AC_SUBST(SQLITE3_CFLAGS)
+ fi
+else
+ AM_CONDITIONAL(HAVE_SQLITE, false)
+fi
+
+dnl Set Default Spell Checker settings
+
+dnl ====================================================================
+
+do_aspell=yes
+dnl ASpell Support is handled here
+AC_ARG_ENABLE([aspell], [AS_HELP_STRING([--disable-aspell],
+ [Build without ASpell support (default is enabled)])],
+ [do_aspell="${enableval}"])
+
+AM_CONDITIONAL(WITH_ASPELL, test x${do_aspell} = xyes)
+
+dnl Hunspell Support is handled here
+do_hunspell=yes
+AC_ARG_ENABLE([hunspell], [AS_HELP_STRING([--disable-hunspell],
+ [Build without HunSpell support (default is enabled)])],
+ [do_hunspell="${enableval}"])
+
+AM_CONDITIONAL(WITH_HUNSPELL, test x${do_hunspell} = xyes)
+
+AC_ARG_WITH([hunspell-dictdir], [AS_HELP_STRING([--with-hunspell-dictdir=DIR],
+ [Use DIR to find HunSpell files (default=/usr/share/myspell/dicts])],
+ [], with_hunspell_dictdir=)
+
+dnl ====================================================================
+
+ASpellFound=no
+if test "$do_aspell" = yes ; then
+ PKG_CHECK_MODULES([ASPELL], [aspell], [ASpellFound=yes], [ASpellFound=no])
+ save_cpp_flags=${CPPFLAGS}
+ CPPFLAGS="${CPPFLAGS} ${ASPELL_CFLAGS}"
+ AC_CHECK_HEADER([aspell.h], [ASpellFound=yes], ASpellFound=no)
+ AC_CHECK_LIB(aspell, new_aspell_config, [], [ASpellFound=no])
+ CPPFLAGS=$save_cpp_flags
+ if test "x${ASpellFound}" = "xyes"; then
+ AC_DEFINE(HAVE_ASPELL, 1, [Define for compilation])
+ AC_SUBST(ASPELL_LIBS)
+ AC_SUBST(ASPELL_CFLAGS)
+
+ # If aspell enabled and found, then do NOT do hunspell
+ do_hunspell=no
+ fi
+fi
+
+AM_CONDITIONAL(HAVE_ASPELL, test x${ASpellFound} = xyes)
+
+HunSpellDictDir=
+HunSpellFound=no
+if test x"$do_hunspell" = xyes; then
+ HunSpellFound=no
+
+ # First, look for the libraries.
+ PKG_CHECK_MODULES([HUNSPELL], [hunspell], [HunSpellFound=yes], [HunSpellFound=no])
+ save_cpp_flags=${CPPFLAGS}
+ CPPFLAGS="${CPPFLAGS} ${HUNSPELL_CFLAGS}"
+ AC_CHECK_HEADER([hunspell.h], [HunSpellFound=yes], HunSpellFound=no)
+ CPPFLAGS=$save_cpp_flags
+ if test "x${HunSpellFound}" = "xyes"; then
+ AC_DEFINE(HAVE_HUNSPELL, 1, [Define for compilation])
+ AC_SUBST(HUNSPELL_LIBS)
+ AC_SUBST(HUNSPELL_CFLAGS)
+
+ # Now, look for the dictionaries.
+ HunSpellDictDir=/usr/share/myspell/dicts
+ if test -n "$with_hunspell_dictdir"; then
+ HunSpellDictDir=$with_hunspell_dictdir
+ fi
+
+ if ! test -d "$HunSpellDictDir" ; then
+ echo "WARN HunSpell Dictionaries do not exist at \"$HunSpellDictDir\""
+ fi
+ AC_DEFINE_UNQUOTED(HUNSPELL_DICT_DIR, "$HunSpellDictDir", [Defining the dictionary path])
+ fi
+
+fi
+
+AM_CONDITIONAL(HAVE_HUNSPELL, test x${HunSpellFound} = xyes)
+
+dnl ====================================================================
+
+# It's not enough that locale.h is present; link-grammar really
+# wants to have LC_MESSAGES as well, so test for it explicitly.
+
+AC_DEFUN([GLIB_LC_MESSAGES],
+ [AC_CHECK_HEADERS([locale.h])
+ if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <locale.h>]], [[return LC_MESSAGES]])],[am_cv_val_LC_MESSAGES=yes],[am_cv_val_LC_MESSAGES=no])])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+ fi])
+
+GLIB_LC_MESSAGES
+
+dnl ====================================================================
+
+PKG_CHECK_MODULES([LIBEDIT], [libedit], [edlin=yes], [edlin=no])
+if test "x${edlin}" = "xyes"; then
+ AM_CONDITIONAL(HAVE_EDITLINE, true)
+ AC_DEFINE(HAVE_EDITLINE, 1, [Define for compilation])
+else
+ AM_CONDITIONAL(HAVE_EDITLINE, false)
+fi
+
+
+dnl ====================================================================
+
+AC_CHECK_HEADER([regex.h],,[AC_MSG_ERROR([No regex.h header found])])
+
+AC_CHECK_FUNCS(regexec,,[AC_CHECK_LIB(regex,regexec,
+ [REGEX_LIBS=-lregex],
+ [AC_MSG_ERROR([No regex library found])])])
+AC_SUBST(REGEX_LIBS)
+
+dnl ====================================================================
+dnl check compiler flags
+
+AC_DEFUN([LINK_CC_TRY_FLAG], [
+ AC_MSG_CHECKING([whether $CC supports $1])
+
+ link_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ ]])], [link_cc_flag=yes], [link_cc_flag=no])
+ CFLAGS="$link_save_CFLAGS"
+
+ if test "x$link_cc_flag" = "xyes"; then
+ ifelse([$2], , :, [$2])
+ else
+ ifelse([$3], , :, [$3])
+ fi
+ AC_MSG_RESULT([$link_cc_flag])
+])
+
+dnl Use lots of warning flags with with gcc and compatible compilers
+
+dnl Note: if you change the following variable, the cache is automatically
+dnl skipped and all flags rechecked. So there's no need to do anything
+dnl else. If for any reason you need to force a recheck, just change
+dnl MAYBE_WARN in an ignorable way (like adding whitespace)
+
+#MAYBE_WARN="-Wall -Wextra \
+#-Wsign-compare -Werror-implicit-function-declaration \
+#-Wpointer-arith -Wwrite-strings -Wstrict-prototypes \
+#-Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
+#-Wpacked -Wswitch-enum -Wmissing-format-attribute \
+#-Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \
+#-Wdeclaration-after-statement -Wold-style-definition \
+#-Wno-missing-field-initializers -Wno-unused-parameter \
+#-Wno-attributes -Wno-long-long -Winline"
+
+# invalidate cached value if MAYBE_WARN has changed
+if test "x$link_cv_warn_maybe" != "x$MAYBE_WARN"; then
+ unset link_cv_warn_cflags
+fi
+AC_CACHE_CHECK([for supported warning flags], link_cv_warn_cflags, [
+ echo
+ WARN_CFLAGS=""
+
+ # Some warning options are not supported by all versions of
+ # gcc, so test all desired options against the current
+ # compiler.
+ #
+ # Note that there are some order dependencies
+ # here. Specifically, an option that disables a warning will
+ # have no net effect if a later option then enables that
+ # warnings, (perhaps implicitly). So we put some grouped
+ # options (-Wall and -Wextra) up front and the -Wno options
+ # last.
+
+ for W in $MAYBE_WARN; do
+ LINK_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
+ done
+
+ link_cv_warn_cflags=$WARN_CFLAGS
+ link_cv_warn_maybe=$MAYBE_WARN
+
+ AC_MSG_CHECKING([which warning flags were supported])])
+
+WARN_CFLAGS="$link_cv_warn_cflags"
+LINK_CFLAGS="$LINK_CFLAGS $WARN_CFLAGS"
+
+LINK_CC_TRY_FLAG([-fno-strict-aliasing],
+ [LINK_CFLAGS="$LINK_CFLAGS -fno-strict-aliasing"])
+
+AC_SUBST(LINK_CFLAGS)
+
+# =====================================================================
+# Try to guess location of the jni.h file.
+# Might be useful to look at env variables $JDK_HOME and $JAVA_HOME for these.
+#
+JNIfound=no
+
+if test "x$enable_java_bindings" = "xyes"; then
+ JNI_GUESS=" \
+ -I $JAVA_HOME/include \
+ -I $JAVA_HOME/include/freebsd \
+ -I $JAVA_HOME/include/linux \
+ -I $JAVA_HOME/include/win32 \
+ -I $JAVA_HOME/Headers \
+ -I $JDK_HOME/include \
+ -I $JDK_HOME/include/freebsd \
+ -I $JDK_HOME/include/linux \
+ -I $JDK_HOME/include/win32 \
+ -I $JDK_HOME/Headers \
+ -I/usr/include/classpath/ \
+ -I/usr/lib/jvm/default-java/include \
+ -I/usr/lib/jvm/default-java/include/freebsd \
+ -I/usr/lib/jvm/default-java/include/linux \
+ -I/usr/lib/jvm/java-gcj/include \
+ -I/usr/lib/jvm/java-gcj/include/freebsd \
+ -I/usr/lib/jvm/java-gcj/include/linux \
+ -I/usr/local/jdk1.6.0/include/\
+ -I/usr/local/jdk1.6.0/include/freebsd \
+ -I/usr/local/jdk1.6.0/include/linux \
+ -I/usr/lib/jvm/java-6-sun/include/ \
+ -I/usr/lib/jvm/java-6-sun/include/freebsd \
+ -I/usr/lib/jvm/java-6-sun/include/linux \
+ -I/usr/lib/j2sdk1.6-ibm/include \
+ -I/usr/lib/j2sdk1.6-ibm/include/freebsd \
+ -I/usr/lib/j2sdk1.6-ibm/include/linux \
+ -I/opt/jdk1.5/include/ \
+ -I/opt/jdk1.5/include/freebsd \
+ -I/opt/jdk1.5/include/linux \
+ -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.15/include \
+ -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.15/include/freebsd \
+ -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.15/include/linux \
+ -I/c/java/jdk1.6.0/include/ \
+ -I/c/java/jdk1.6.0/include/win32/ \
+ -I/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/JavaVM.framework/Headers/ \
+ -I/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/JavaVM.framework/Headers/ \
+ -I /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers"
+
+ AC_MSG_CHECKING(for jni.h)
+ AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <jni.h>]])],[AC_MSG_RESULT([yes, will build java libs])
+ JNIfound=yes],[
+ SAVE_CPPFLAGS=${CPPFLAGS}
+ CPPFLAGS="${CPPFLAGS} ${JNI_GUESS}"
+ AC_MSG_WARN([Can't find jni.h header in standard locations, trying again with ${CPPFLAGS}])
+ AC_TRY_CPP( [#include <jni.h>],
+ [AC_MSG_RESULT([yes, will build java libs])
+ JNIfound=yes],
+ [ AC_MSG_WARN([cannot find jni.h header, needed for Java bindings support.])
+ CPPFLAGS=${SAVE_CPPFLAGS}
+ JNIfound=no])
+ ])
+ AC_SUBST(CPPFLAGS)
+
+ # Hmm .. there seems to be a missing pkgconfig for Sun java ...
+ # There's libgcj-4.2.pc and libgcj8.pc but nothing for Sun java??
+ # PKG_CHECK_MODULES(LIBJDK, libjdk-1.5 >= $LIBJDK_REQUIRED)
+ # AC_SUBST(LIBJDK_CFLAGS)
+ # AC_SUBST(LIBJDK_LIBS)
+
+ # For now, we assume that if the jni files are there, then the javac
+ # ant, and jar compilers/builders are install as well. This is used
+ # to build the jar file and install it.
+ AM_CONDITIONAL(HAVE_JAVA, test x${JNIfound} = xyes)
+else
+ AM_CONDITIONAL(HAVE_JAVA, false)
+fi
+
+dnl ===================================================================
+
+AC_CONFIG_FILES([
+Makefile
+build.xml
+link-grammar.pc
+link-grammar.spec
+link-grammar/Makefile
+link-grammar/corpus/Makefile
+link-grammar/minisat/Makefile
+link-grammar/sat-solver/Makefile
+link-grammar/link-features.h
+link-parser/Makefile
+data/Makefile
+data/de/Makefile
+data/en/Makefile
+data/en/words/Makefile
+data/lt/Makefile
+man/Makefile
+autopackage/default.apspec
+link-grammar.xcode/Makefile
+msvc6/Makefile
+msvc6/link_grammar_dll/Makefile
+msvc6/link_grammar_exe/Makefile
+msvc6/link_grammar_java_dll/Makefile
+msvc9/Makefile
+viterbi/Makefile
+])
+AC_OUTPUT
+
+dnl ====================================================================
+echo "
+$PACKAGE-$VERSION
+
+ prefix: ${prefix}
+ compiler: ${CC} ${CPPFLAGS} ${CFLAGS}
+ autopackage: ${br_cv_binreloc}
+ Posix threads: ${enable_pthreads}
+ Editline command-line history: ${edlin}
+ Java interfaces: ${JNIfound}
+ ASpell spell checker: ${ASpellFound}
+ HunSpell spell checker: ${HunSpellFound}
+ HunSpell dictionary location: ${HunSpellDictDir}
+ Boolean SAT parser: ${enable_sat_solver}
+ Viterbi algorithm parser: ${enable_viterbi}
+ Corpus statistics database: ${enable_corpus_stats}
+"
diff --git a/grammar/link-grammar-4.7.9/data/Makefile.am b/grammar/link-grammar-4.7.9/data/Makefile.am
new file mode 100644
index 0000000..afeb176
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS=de en lt
+
+# include the script in the tarball, but do not install it.
+# EXTRA_DIST=insert.pl
diff --git a/grammar/link-grammar-4.7.9/data/de/4.0.affix b/grammar/link-grammar-4.7.9/data/de/4.0.affix
new file mode 100644
index 0000000..72428d2
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/de/4.0.affix
@@ -0,0 +1,7 @@
+
+")" "%" "," "." ":" ";" "?" "!" "''" "'" "'s": RPUNC+;
+"(" "$" "``": LPUNC+;
+e en er.f es.f em: SUF+;
+xxx: PRE+;
+
+
diff --git a/grammar/link-grammar-4.7.9/data/de/4.0.constituent-knowledge b/grammar/link-grammar-4.7.9/data/de/4.0.constituent-knowledge
new file mode 100644
index 0000000..a40fe88
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/de/4.0.constituent-knowledge
@@ -0,0 +1,5 @@
+
+STARTING_LINK_TYPE_TABLE:
+S##* v
+
+
diff --git a/grammar/link-grammar-4.7.9/data/de/4.0.dict b/grammar/link-grammar-4.7.9/data/de/4.0.dict
new file mode 100644
index 0000000..e865740
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/de/4.0.dict
@@ -0,0 +1,502 @@
+
+ %***************************************************************************%
+ % %
+ % Copyright (C) 1991-1998 Daniel Sleator and Davy Temperley %
+ % %
+ % See file "README" for information about commercial use of this system %
+ % %
+ %***************************************************************************%
+
+% Dictionary version number is 4.0.0 (formatted as V4v0v0+)
+<dictionary-version-number>: V4v0v0+;
+
+
+% NOUNS, PRONOUNS
+
+% Masculine singular
+Hund.n Mann.n Brief.n Stein.n Freund.n Koenig.n Punkt.n Schuh.n Mond.n Ball.n Markt.n Frosch.n
+Hof.n Rock.n Sohn.n Baum.n Traum.n Arzt.n Satz.n Monat.n Bericht.n Erfolg.n Versuch.n
+Professor.n Doktor.n Staat.n Junge.n Bauer.n Nachbar.n Name.n Lehrer.s Vater.n Bruder.n
+Schlussel.s Vogel.n Apfel.n Garten.n Tag.n Park.n:
+{GE+} & {Rm+ or @M+} & {@MX+} &
+(((({@Ae-} & Dnmd-) or ({@Ar-} & Dnmi-)) & (Ss+ or SIs- or (Xd- & Xc+ & MX-))) or
+({@An-} & Dam- & (O- or J*a- or B+)) or ({@An-} & Ddm- & (J*d- or JB+)));
+
+% Feminine singular
+Katze.n Frau.n Hand.n Bank.n Nacht.n Stadt.n Wand.n Wurst.n Form.n
+Bahn.n Uhr.n Zahl.n Zeit.n Ansicht.n Gestalt.n Krankheit.n Bibliothek.n
+Blume.n Ecke.n Farbe.n Geige.n Karte.n Kueche.n Nase.n Reise.n Sache.n Strasse.n Woche.n
+Regel.n Schwester.n Tochter.n Mutter.n Tuer.n Geschichte.n:
+{GE+} & {Rf+ or @M+} & {@MX+} & (({@Ae-} & Dnf- & (Ss+ or SIs- or O- or B+ or J*a- or (Xd- & Xc+ & MX-))) or
+({@An-} & ((Ddf- & (J*d- or JB+)) or (Dgf- & GE-))));
+
+% Neuter singular
+Maedchen.s Haus.n Jahr.n Bein.n Stueck.n Teil.n Geschenk.n Geschaeft.n Papier.n
+Glas.n Land.n Wort.n Buch.n Bild.n Kind.n Bett.n Auge.n Ende.n Buero.n Auto.n Kino.n
+Fenster.s Messer.s Verbrechen.s Halsband.n:
+{GE+} & {Rn+ or @M+} & {@MX+} & (((({@Ae-} & Dnnd-) or ({@As-} & Dnni-)) & (Ss+ or SIs- or O- or J*a- or B+
+or (Xd- & Xc+ & MX-))) or ({@An-} & Ddn- & (J*d- or JB+)));
+
+% Masculine genitive
+Hundes.n Mannes.n Briefes.n Steines.n Freundes.n Koeniges.n Punktes.n Schuhes.n Mondes.n
+Balles.n Marktes.n Frosches.n Hofes.n Rockes.n Sohnes.n Baumes.n Traumes.n Arztes.n
+Satzes.n Monates.n Berichtes.n Erfolges.n Versuches.n
+Professores.n Doktors.n Staates.n Junges.n Bauern.s Nachbares.n Names.n Lehrers.s
+Vaters.n Bruders.n Schlusseles.s Vogeles.n Apfeles.n Gartenes.n Tages.n Parkes.n:
+{GE+} & {Rn+ or @M+} & {@MX+} & {@An-} & Dgm- & GE-;
+
+% Neuter genitive
+Maedchenes.s Hauses.n Jahres.n Beines.n Stueckes.n Teiles.n Geschenkes.n
+Geschaeftes.n Papieres.n
+Glases.n Landes.n Wortes.n Buches.n Bildes.n Kindes.n Bettes.n Auges.n Endes.n
+Bueros.s Autos.s Kinos.s
+Fensters.n Messers.n Verbrechenes.n:
+{GE+} & {Rn+ or @M+} & {@MX+} & {@An-} & Dgn- & GE-;
+
+% Plural
+Maenner.n Hunde.n Katzen.n Frauen.n Hauser.n Maedchenen.n Briefe.n Steine.n Freunde.n Koenige.n
+Punkte.n Schuhe.n Monde.n Baelle.n Maerkte.n Froesche.n Hoefe.n Roecke.n Soehne.n Baeume.n
+Traeume.n Aerzte.n Saetze.n Monate.n Berichte.n Erfolge.n Versuche.n Professoren.n
+Doktoren.n Staaten.n Jungen.n Bauern.p Nachbarn.n Namen.n Lehrer.p Vaeter.n Brueder.n
+Schlussel.p Voegel.n Aepfel.n Gaerten.n
+Haende.n Baenke.n Naechte.n Staedte.n Waende.n Wuerste.n Kuenste.n
+Banken.n Formen.n Bahnen.n Uhren.n Zahlen.n Zeiten.n Ansichten.n
+Gestalten.n Krankheiten.n Bibliotheken.n
+Blumen.n Ecken.n Farben.n Geigen.n Karten.n Kuechen.n Nasen.n Reisen.n Sachen.n Strassen.n
+Wochen.n Regeln.n Schwestern.n Toechter.n Muetter.n
+Jahre.n Beine.n Stuecke.n Teile.n Geschenke.n Geschaefte.n Papiere.n
+Glaeser.n Laender.n Woerter.n Buecher.n Bilder.n Gelder.n Kinder.n Betten.n Augen.n Enden.n
+Bueros.p Autos.p Kinos.p Fenster.p Messer.p Verbrechen.p Maedchen.p
+Tagen.n Parke.n Tueren.n Halsbaender.n Geschichten.n:
+{GE+} & {Rp+ or @M+} & {@MX+} &
+{@An-} & ((Dnp- & (Sp+ or SIp- or O- or J*a- or B+ or (Xd- & Xc+ & MX-))) or (Ddp- & (J*d- or
+JB+)) or (Dgp- & GE-));
+
+%Masculine mass
+Kaese.n:
+{GE+} & {Rm+ or @M+} & {@MX+} &
+((((({@Ae-} & Dnmd-) or ({@Ar-} & {Dnmi- or Dm-}))) & (Ss+ or SIs- or (Xd- & Xc+ & MX-))) or
+(({@An-} & {Dam- or Dm-}) & (O- or J*a- or B+)) or ((({@An-} & Ddm-) or ({@Am-} & {Dm-})) & (J*d- or JB+)));
+
+%Feminine mass
+Arbeit.n Luft.n Milch.n:
+{GE+} & {Rf+ or @M+} & {@MX+} & ((({@Ae-} & {Dnf- or Dm-}) & (Ss+ or SIs- or O- or B+ or J*a- or (Xd- & Xc+ & MX-))) or
+((({@An-} & Ddf-) or ({@Ar-} & {Dm-})) & (J*d- or JB+)) or ((({@An-} & Dgf-) or ({@Ar-} & {Dm-})) & GE-));
+
+%Neuter mass
+Geld.n Wasser.n Bier.n Brot.n:
+{GE+} & {Rn+ or @M+} & {@MX+} & (((({@Ae-} & Dnnd-) or ({@As-} & {Dnni- or Dm-})) & (Ss+ or SIs- or O- or J*a- or B+
+or (Xd- & Xc+ & MX-))) or ((({@An-} & Ddn-) or ({@Am-} & {Dm-})) & (J*d- or JB+)));
+
+%Masculine mass genitive
+Kaeses.n:
+{GE+} & {Rn+ or @M+} & {@MX+} & (({@An-} & Dgm-) or ({@As-} & {Dm-})) & GE-;
+
+%Neuter mass genitive
+Geldes.n Wassers.n Bieres.n Brotes.n:
+{GE+} & {Rn+ or @M+} & {@MX+} & (({@An-} & Dgn-) or ({@As-} & {Dm-})) & GE-;
+
+%PRONOUNS AND DETERMINERS
+
+ich: Si+ or SIi-;
+du: Sd+ or SId-;
+es.p: Ss+ or SIs- or O- or J*a- or B+;
+er.p: Ss+ or SIs-;
+wir: Sp+ or SIp-;
+ihr.p: Sr+ or SIr- or J*d- or JB+;
+sie.s: Ss+ or SIs- or O- or J*a- or B+;
+sie.p: Sp+ or SIp- or O- or J*a- or B+;
+
+das.p dies: Ss+ or SIp- or O- or B+ or JB+;
+
+mich dich ihn: O- or J*a- or B+;
+mir dir ihm: J*d- or JB+;
+uns: O- or J*a- or J*d- or B+ or JB+;
+ihnen: J*d- or JB+;
+
+der.d dieser jener: Dnmd+ or Ddf+ or Dgf+ or Dgp+;
+die.d diese jene: Dnf+ or Dnp+;
+das.d: Dnnd+;
+den.d diesen jenen: Dam+ or Ddp+;
+dem.d diesem jenem: Ddm+ or Ddn+;
+des.d: Dgm+ or Dgn+;
+dieses jenes: Dnnd+ or Dgm+;
+
+der.r: (RSs+ & {Xd- & Xc+} & Rm-);
+die.r: ((RSs+ or RO+) & {Xd- & Xc+} & Rf-) or (RSp+ & {Xd- & Xc+} & Rp-);
+das.r: ((RSs+ or RO+) & {Xd- & Xc+} & Rn-);
+den.r: (RO+ & {Xd- & Xc+} & Rm-);
+
+ein: Dnmi+ or Dnni+;
+eine: Dnf+;
+einen: Dam+;
+einer: Ddf+ or Dgf+;
+einem: Ddm+ or Ddn+;
+eines: Dgm+ or Dgn+;
+
+mein dein sein.d unser ihr.d euer: Dnmi+ or Dnni+;
+meine deine seine unsere ihre eure: Dnf+ or Dnp+;
+meinen deinen seinen unseren ihren euren: Dam+ or Ddp+ or Dgf+;
+meiner deiner seiner unserer ihrer eurer: Ddf+ or Dgf+ or Dgp+;
+meinem deinem seinem unserem ihrem eurem: Ddm+ or Ddn+;
+meines deines seines unseres ihres eures: Dgm+ or Dgn+;
+
+einige: Dnp+ or Sp+ or SIp- or O- or J*a- or B+;
+einigen: Ddp+ or J*d- or JB+;
+einiger: Dgp+ or GE-;
+
+etwas.d: Dm+;
+
+zwei drei vier fuenf sechs sieben acht neun zehn: D*p+;
+
+s: YS- & D+;
+
+% VERBS
+
+bin.v war.i: (((Si- or ({CO-} & SIi+)) & (O+ or P+) & W-)
+or ((B- or PI-) & (Si- & C-))) & {SC+};
+bist.v warst.v: (((Sd- or ({CO-} & SId+)) & (O+ or P+) & W-)
+ or ((B- or PI-) & (Sd- & C-))) & {SC+};
+ist.v war.s: (((Ss- or ({CO-} & SIs+)) & (O+ or P+) & W-)
+or ((B- or PI-) & ((Ss- & C-) or RSs-))) & {SC+};
+sind.v waren.v: (((Sp- or ({CO-} & SIp+)) & (O+ or P+) & W-) or
+((B- or PI-) & ((Sp- & C-) or RSp-))) & {SC+};
+seid.v wart.v: (((Sr- or ({CO-} & SIr+)) & (O+ or P+) & W-)
+or ((B- or PI-) & (Sr- & C-))) & {SC+};
+sein.v: (B- or PI-) & (I- or II+);
+gewesen.v: (B- or PI-) & (Pb- or PIb+);
+
+habe.v hatte.i: (((Si- or ({CO-} & SIi+)) & (O+ or PP+) & {@MV+} & W-)
+or ({@MVI-} & (((B- or PPI-) & (Si- & (C- or RO-))) or (Sit- & RO-)))) & {SC+};
+hast.v hattest.v: (((Sd- or ({CO-} & SId+)) & (O+ or PP+) & {@MV+} & W-)
+or ({@MVI-} & (((B- or PPI-) & (Sd- & (C- or RO-))) or (Sdt- & RO-)))) & {SC+};
+hat.v hatte.s: (((Ss- or ({CO-} & SIs+)) & (O+ or PP+) & {@MV+} & W-)
+or ({@MVI-} & (((B- or PPI-) & ((Ss- & (C- or RO-)) or RSs-)) or (Sst- & RO-))))
+& {SC+};
+habt.v hattet.v: (((Sr- or ({CO-} & SIr+)) & (O+ or PP+) & {@MV+} & W-)
+or ({@MVI-} & (((B- or PPI-) & (Sr- & (C- or RO-))) or (Srt- & RO-)))) & {SC+};
+hatten.v: (((Sp- or ({CO-} & SIp+)) & (O+ or PP+) & {@MV+} & W-)
+or ({@MVI-} & (((B- or PPI-) & ((Sp- & (C- or RO-)) or RSp-)) or (Spt- & RO-))))
+& {SC+};
+haben.v: (((Sp- or ({CO-} & SIp+)) & (O+ or PP+) & {@MV+} & W-)
+or ({@MVI-} & (((B- or PPI-) & ((Sp- & (C- or RO-)) or RSp-)) or
+(Spt- & RO-)))) & {SC+};
+haben.i: {ZU-} & {@MVI-} & (B- or PPI-) & ((Xd- & Xc+ & SCz-) or I- or IIt+);
+gehabt.v: {@MVI-} & ((B- & PP-) or ({B-} & PPIt+));
+
+muss.v soll.v will.v kann.v
+musste.v sollte.v wollte.v kannte.m: (((Si- or Ss- or ({CO-} & (SIi+ or SIs+))) & I+
+& W-) or (II- & (((Si- or Ss-) & (C- or RO-)) or RS-))) & {SC+};
+werde.v: (((Si- or ({CO-} & SIi+)) & (I+ or PV+) & W-) or
+((II- or PVI-) & Si- & (C- or RO-))) & {SC+};
+wird.v: (((Ss- or ({CO-} & SIs+)) & (I+ or PV+) & W-) or ((II- or PVI-) & ((Ss- &
+(C- or RO-)) or RSs-))) & {SC+};
+wurde.v: (((Si- or Ss- or ({CO-} & (SIi+ or SIs+))) & (I+ or PV+)
+& W-) or ((II- or PVI-) & (((Si- or Ss-) & (C- or RO-)) or RS-))) & {SC+};
+musst.v sollst.v willst.v kannst.v musstest.v solltest.v wolltest.v kanntest.m:
+(((Sd- or ({CO-} & SId+)) & I+ & W-) or (II- & Sd- & (C- or RO-))) & {SC+};
+wirst.v wurdest.v: (((Sd- or ({CO-} & SId+)) & (I+ or PV+) & W-) or
+((II- or PVI-) & Sd- & (C- or RO-))) & {SC+};
+muesst.v sollt.v wollt.v koennt.v:
+(((Sr- or ({CO-} & SIr+)) & I+ & W-) or
+(II- & Sr- & (C- or RO-))) & {SC+};
+werdet.v wurdet.v: (((Sr- or ({CO-} & SIr+)) & (I+ or PV+) & W-) or
+((II- or PVI-) & Sr- & (C- or RO-))) & {SC+};
+muessen.v sollen.v wollen.v koennen.v muessten.v sollten.v wollten.v kannten.m:
+(((Sp- or ({CO-} & SIp+)) & I+ & W-) or
+(II- & (I- or II+ or ((Sp- & (C- or RO-)) or RSp-)))) & {SC+};
+werden.v wurden.v:
+(((Sp- or ({CO-} & SIp+)) & (I+ or PV+) & W-) or
+((II- or PVI-) & (I- or II+ or ((Sp- & (C- or RO-)) or RSp-)))) & {SC+};
+worden.i: PVI- & (Pb- or PIb+);
+muessen.i sollen.i wollen.i koennen.i werden.i:
+(II- & (I- or II+));
+
+gehe.v spreche.v bleibe.v fahre.v komme.v laufe.v sterbe.v an+komme.v
+ging.i sprach.i blieb.i fuhr.i kam.i lief.i starb.i an+kam.i:
+(((Si- or ({CO-} & SIi+)) & {@MV+} & {K+} & W-) or ({KI-} & {@MVI-} & Si- &
+C-)) & {SC+};
+gehst.v sprichst.v bleibst.v faehrst.v kommst.v laeufst.v stirbst.a an+kommst.v
+gingst.v sprachst.v bliebst.v fuhrst.v kamst.v liefst.v starbst.v an+kamst.v:
+(((Sd- or ({CO-} & SId+)) & {@MV+} & {K+} & W-) or ({KI-} & {@MVI-} & Sd- & C-))
+& {SC+};
+geht.v spricht.v bleibt.v faehrt.v kommt.v laeuft.v stirbt.v an+kommt.v
+ging.s sprach.s blieb.s fuhr.s kam.s lief.s starb.s an+kam.s:
+(((Ss- or Sr- or ({CO-} & (SIs+ or SIr+))) & {@MV+} & {K+} & W-) or
+({KI-} & {@MVI-} & (((Ss- or Sr-) & C-) or RSs-))) & {SC+}; % Sr-
+gingt.v spracht.v bliebt.v fuhrt.v kamt.v lieft.v starbt.v an+kamt.v:
+(((Sr- or ({CO-} & SIr+)) & {@MV+} & {K+} & W-) or ({KI-} & {@MVI-} & Sr- & C-)) & {SC+};
+gehen.v sprechen.v bleiben.v fahren.v kommen.v laufen.v sterben.v an+kommen.v:
+(((Sp- or ({CO-} & SIp+)) & {@MV+} & {K+} & W-) or
+({KI-} & {@MVI-} & (((Sp- & C-) or RSp-)))) & {SC+};
+gehen.i sprechen.i bleiben.i fahren.i kommen.i laufen.i sterben.i an+kommen.i:
+{ZU-} & {KI-} & {@MVI-} & ((Xd- & Xc+ & SCz-) or I- or IIi+); % SCz- needs an optional SC+
+gingen.v sprachen.v blieben.v fuhren.v kamen.v liefen.v starben.v an+kamen.v:
+(((Sp- or ({CO-} & SIp+)) & {@MV+} & {K+} & W-) or
+({KI-} & {@MVI-} & ((Sp- & C-) or RSp-))) & {SC+};
+gesprochen.v:
+{KI-} & {@MVI-} & (PP- or PPIi+);
+gegangen.v geblieben.v gekommen.v gestorben.v gelaufen.v an+gekommen.v:
+{KI-} & {@MVI-} & (Pb- or PIb+);
+gefahren.v:
+{KI-} & {@MVI-} & (Pb- or PIb+ or PP- or PPIi+);
+
+spiele.v koche.v esse.v trinke.v schreibe.v lese.v
+spielte.i kochte.i ass.i trank.i schrieb.i las.i:
+(((Si- or ({CO-} & SIi+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & Sio- & (C- or RO-))) & {SC+};
+spielst.v kochst.v isst.d trinkst.v schreibst.v liest.d
+spieltest.v kochtest.v assest.i trankst.v schriebst.i lasst.v:
+(((Sd- or ({CO-} & SId+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & Sdo- & (C- or RO-))) & {SC+};
+spielt.v kocht.v isst.s trinkt.v schreibt.v liest.s
+spielte.s kochte.s asst.s trank.s schrieb.s las.s:
+(((Ss- or Sr- or ({CO-} & (SIs+ or SIr+))) & {O+} & {@MV+} &
+W-) or ({@MVI-} & {B-} & (((Sso- or Sro-) & (C- or RO-)) or RSs-))) & {SC+};
+spieltet.v kochtet.v asset.v tranket.v schriebet.v last.v:
+(((Sr- or ({CO-} & SIr+)) & {O+} & {@MV+} &
+W-) or ({@MVI-} & {B-} & Sro- & (C- or RO-))) & {SC+};
+spielen.v kochen.v essen.v schreiben.v lesen.v:
+(((Sp- or ({CO-} & SIp+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & (((Spo- & (C- or RO-)) or RSp-))))
+& {SC+};
+spielen.i kochen.i essen.i schreiben.i lesen.i:
+{ZU-} & {@MVI-} & {B-} & ((Xd- & Xc+ & SCz-) or I- or IIo+);
+spielten.v kochten.v assen.i tranken.v schrieben.v lasen.v:
+(((Sp- or ({CO-} & SIp+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & ((Spo- & (C- or RO-)) or RSp-))) & {SC+};
+gespielt.v gekocht.v gegessen.v geschrieben.v gelesen.v:
+{@MVI-} & (PV- or PVI+ or ({B-} & (PP- or PPIo+)));
+
+sehe.v schlage.v mache.v hoere.v kenne.v brauche.v nehme.v trage.v finde.v jage.v
+sah.i schlug.i machte.i hoerte.i kannte.i brauchte.i nahm.i
+trug.i fand.i jagte.i:
+(((Si- or ({CO-} & SIi+)) & O+ & {@MV+} & W-) or
+({@MVI-} & {B-} & Sit- & (C- or RO-))) & {SC+};
+siehst.v schlaegst.v machst.v hoerst.v kennst.v brauchst.v nimmst.v traegst.v findest.v
+jagst.v
+sahst.v schlugst.v machtest.v hoertest.v kanntest.v brauchtest.v nahmst.v
+trugst.v fandest.i jagtest.v:
+(((Sd- or ({CO-} & SId+)) & O+ & {@MV+} & W-) or
+({@MVI-} & {B-} & Sdt- & (C- or RO-))) & {SC+};
+sieht.v schlaegt.v macht.v hoert.v kennt.v braucht.v nimmt.v traegt.v findet.v jagt.v
+sah.s schlug.s machte.s hoerte.s kannte.s brauchte.s nahm.s trug.s fand.s jagte.s:
+(((Ss- or Sr- or ({CO-} & (SIs+ or SIr+)))
+& O+ & {@MV+} & W-) or ({@MVI-} & {B-} & (((Sst- or Srt-) &
+(C- or RO-)) or RSst-))) & {SC+};
+saht.v schlugt.v machtet.v hoertet.v kanntet.v brauchtet.v nahmet.v trugt.v fandet
+jagtet.v:
+(((Sr- or ({CO-} & SIr+))
+& O+ & {@MV+} & W-) or ({@MVI-} & {B-} & Srt- & (C- or RO-))) & {SC+};
+sehen.v schlagen.v machen.v hoeren.v kennen.v brauchen.v nehmen.v tragen.v jagen.v:
+(((Sp- or ({CO-} & SIp+)) & O+ & {@MV+} & W-) or
+({@MVI-} & {B-} & ((Spt- & (C- or RO-)) or RSpt-))) & {SC+};
+sehen.i schlagen.i machen.i hoeren.i kennen.i brauchen.i nehmen.i tragen.i jagen.i:
+{ZU-} & {@MVI-} & {B-} & ((Xd- & Xc+ & SCz-) or I- or IIt+);
+sahten.v schlugten.v machten.v hoerten.v kannten.v brauchten.v nahmen.v
+trugten.v fanden.v jagten.v:
+(((Sp- or ({CO-} & SIp+)) & O+ & {@MV+} & {SC+} & W-) or
+({@MVI-} & {B-} & ((Spt- & (C- or RO-)) or RSpt-))) & {SC+};
+gesehen.v geschlagt.v gemacht.v gehoert.v gekannt.v gebraucht.v genommen.v
+getragen.v gefunden.v gejagt.v erschreckt.v:
+{@MVI-} & (PV- or PVI+ or (B- & PP-) or ({B-} & PPIt+));
+
+gebe.v bringe.v kaufe.v
+gab.i brachte.i kaufte.i:
+(((Si- or ({CO-} & SIi+)) & {J*d+} & O+ & {@MV+} & W-) or
+({@MVI-} & {B-} & {JB-} & Sit- & (C- or RO-))) & {SC+};
+% To handle dative relative clauses:
+% ...& ({@MVI-} & {B-} & {JB-} & Sit- & (C- or RO- or RJ-))) & {SC+};
+% make RJ incompat with JB. When RJ is used, B will be obligatory, as it should be!
+gibst.v bringst.v kaufst.v
+gabst.v brachtest.v kauftest.v:
+(((Sd- or ({CO-} & SId+)) & {J*d+} & O+ & {@MV+} & W-) or
+({@MVI-} & {B-} & {JB-} & Sdt- & (C- or RO-))) & {SC+};
+gibt.v bringt.v kauft.v
+gab.s brachte.s kaufte.s:
+(((Ss- or Sr- or ({CO-} & (SIs+ or SIr+)))
+& {J*d+} & O+ & {@MV+} & W-) or ({@MVI-} & {B-} & {JB-} & (((Sst- or Srt-) &
+(C- or RO-)) or RSst-))) & {SC+};
+gabt.v brachtet.v kauftet.v:
+(((Sr- or ({CO-} & SIr+))
+& {J*d+} & O+ & {@MV+} & W-) or ({@MVI-} & {B-} & {JB-} & Srt- & (C- or RO-))) & {SC+};
+geben.v bringen.v kaufen.v:
+(((Sp- or ({CO-} & SIp+)) & {J*d+} & O+ & {@MV+} & W-) or
+({@MVI-} & {B-} & {JB-} & ((Spt- & (C- or RO-)) or RSpt-))) & {SC+};
+geben.i bringen.i kaufen.i:
+{ZU-} & {@MVI-} & {B-} & {JB-} & ((Xd- & Xc+ & SCz-) or I- or IIt+);
+gaben.v brachten.v kauften.v:
+(((Sp- or ({CO-} & SIp+)) & {J*d+} & O+ & {@MV+} & {SC+} & W-) or
+({@MVI-} & {B-} & {JB-} & ((Spt- & (C- or RO-)) or RSpt-))) & {SC+};
+gegeben.v gebracht.v gekauft.v: {@MVI-} & (PV- or PVI+ or (B- & {JB-} & PP-) or
+({B-} & {JB-} & PPIt+));
+
+glaube.v sage.v glaubte.i sagte.i:
+(((Sic- or ({CO-} & SIic+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & B- & Sic- & (C- or RO-))) & {SC+};
+glaubst.v sagst.v glaubtest.v sagtest.v:
+(((Sdc- or ({CO-} & SIdc+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & Sdc- & (C- or RO-))) & {SC+};
+glaubt.v sagt.v glaubte.s sagte.v:
+(((Ssc- or Src- or ({CO-} & (SIsc+ or SIrc+))) & {O+} & {@MV+} &
+W-) or ({@MVI-} & {B-} & (((Ssc- or Src-) & (C- or RO-)) or RSs-))) & {SC+};
+glaubtet.v sagtet.v:
+(((Src- or ({CO-} & SIrc-)) & {O+} & {@MV+} &
+W-) or ({@MVI-} & {B-} & Src- & (C- or RO-))) & {SC+};
+glauben.v sagen.v:
+(((Spc- or ({CO-} & SIpc+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & ((Spc- & (C- or RO-)) or RSp-))) & {SC+};
+glauben.i sagen.i:
+{ZU-} & {@MVI-} & {B-} & (Ic- or IIc+);
+glaubten.v sagten.v:
+(((Spc- or ({CO-} & SIpc+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & ((Spc- & (C- or RO-)) or RSp-))) & {SC+};
+geglaubt.v gesagt.v:
+{@MVI-} & {B-} & (PPc- or PPIc+);
+
+versuche.v versuchte.i:
+(((Siz- or ({CO-} & SIiz+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & Siz- & (C- or RO-))) & {SC+};
+versuchst.v versuchtest.v:
+(((Sdz- or ({CO-} & SIdz+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & Sdz- & (C- or RO-))) & {SC+};
+versucht.v versuchte.s:
+(((Ssz- or Srz- or ({CO-} & (SIsz+ or SIrz+))) & {O+} & {@MV+} & W-)
+or ({@MVI-} & {B-} & (((Ssz- or Srz-) & (C- or RO-)) or RSs-)))
+& {SC+};
+versuchtet.v:
+(((Srz- or ({CO-} & SIrz-)) & {O+} & {@MV+} & W-)
+or ({@MVI-} & {B-} & Srz- & (C- or RO-))) & {SC+};
+versuchen.i:
+((Spz- or ({CO-} & SIpz+)) & {O+} & {@MV+} & {SC+} & W-) or
+({@MVI-} & {B-} & (I- or II+ or ((Spz- & (C- or RO-)) or RSp-)));
+versuchten.v:
+(((Spz- or ({CO-} & SIpz+)) & {O+} & {@MV+} & W-) or
+({@MVI-} & {B-} & ((Spz- & (C- or RO-)) or RSp-))) & {SC+};
+versuchen.p:
+{@MVI-} & {B-} & (PPz- or PPIz+);
+
+helfe.v half.i:
+((Si- or ({CO-} & SIi+)) & J+ & {@MV+} & {SC+} & W-) or
+({@MVI-} & B- & Si- & (C- or RO-));
+hilfst.v halfst.v:
+((Sd- or ({CO-} & SId+)) & J+ & {@MV+} & {SC+} & W-) or
+({@MVI-} & B- & Sd- & (C- or RO-));
+hilft.v half.s:
+((Ss- or Sr- or ({CO-} & (SIs+ or SIr+)))
+& J+ & {@MV+} & {SC+} & W-) or ({@MVI-} & B- & (((Ss- or Sr-) &
+(C- or RO-)) or RSs-));
+halft.v:
+((Sr- or ({CO-} & SIr+))
+& J+ & {@MV+} & {SC+} & W-) or ({@MVI-} & B- & Sr- & (C- or RO-));
+helfen.v:
+((Sp- or ({CO-} & SIp+)) & J+ & {@MV+} & {SC+} & W-) or
+({@MVI-} & B- & (I- or IIt+ or ((Sp- & (C- or RO-)) or RSp-)));
+halfen.v:
+((Sp- or ({CO-} & SIp+)) & J+ & {@MV+} & {SC+} & W-) or
+({@MVI-} & B- & ((Sp- & (C- or RO-)) or RSp-));
+geholfen.v:
+{@MVI-} & B- & (PP- or PPI+);
+
+% CONJUNCTIONS, ADVERBS, PREPOSITIONS
+
+jetzt.e heute.e morgen.e gestern.e: MV- or MVI+ or CO+;
+
+bis durch fuer gegen ohne: J*a+ & (M- or MV- or MVI+ or Pp- or PIp+ or
+({Xc+} & CO+));
+aus bei mit nach: J*d+ & (M- or MV- or MVI+ or Pp- or PIp+ or ({Xc+} &
+CO+));
+in ueber unter: J*d+ & (M- or MV- or MVI+ or Pp- or PIp+ or ({Xc+} &
+CO+));
+an auf: (J*d+ & (M- or MV- or MVI+ or Pp- or PIp+ or ({Xc+} &
+CO+))) or K- or KI+;
+als wenn weil: C+ & ((Xc+ & CO+) or ({Xd- & Xc+} & SC-));
+
+zu: (J*d+ & (M- or MV- or MVI+ or Pp- or PIp+ or ({Xc+} &
+CO+))) or ZU+;
+
+dass: C+ & Xd- & SCc- & Xc+;
+
+wann: Wq- & W+; % Post-processing needed here to enforce s-v inversion
+
+aber denn: {Xd-} & SC- & W+; % und?
+
+% ADJECTIVES
+
+gross.a klein.a alt.a jung.a rot.a blau.a gelb.a gruen.a schwarz.a weiss.a billig.a teuer.a
+kurz.a lang.a gut.a schlecht.a gescheit.a dumm.a froh.a erstaunt.a besorgt.a schoen.a:
+{FP-} & {EA-} & (Pa- or PIa+ or (FSe+ & Ae+) or (FSn+ & An+) or (FSr+ & Ar+) or (FSs+ & As+) or
+(FSm+ & Am+));
+
+e: FSe-;
+en: FSn-;
+er.f: FSr-;
+es.f: FSs-;
+em: FSm-;
+
+%grosse.a kleine.a alte.a junge.a rote.a blaue.a gelbe.a gruene.a schwarze.a weisse.a
+%billige.a teuere.a lange.a kurze.a gute.a schlechte.a gescheite.a dumme.a frohe.a
+%erstaunte.a besorgte.a schoene.a: {EA-} & Ae+;
+
+%grossen.a kleinen.a alten.a jungen.a roten.a blauen.a gelben.a gruenen.a schwarzen.a
+%weissen.a billigen.a teuren.a kurzen.a langen.a guten.a schlechten.a gescheiten.a
+%dummen.a frohen.a erstaunten.a besorgten.a boesen.a schoenen.a: {EA-} & An+;
+
+boese.a: {EA-} & (Pa- or PIa+ or Ae+);
+
+ex: FP+;
+
+%grosser.a kleiner.a alter.a junger.a roter.a blauer.a gelber.a gruener.a schwarzer.a
+%weisser.a billiger.a teurer.a kurzer.a langer.a guter.a schlechter.a gescheiter.a dummer.a
+%froher.a erstaunter.a besorgter.a boeser.a schoener.a: {EA-} & Ar+;
+
+%grosses.a kleines.a altes.a junges.a rotes.a blaues.a gelbes.a gruenes.a schwarzes.a
+%weisses.a billiges.a teures.a kurzes.a langes.a gutes.a schlechtes.a gescheites.a dummes.a
+%frohes.a erstauntes.a besorgtes.a boeses.a schoenes.a: {EA-} & As+;
+
+%grossem.a kleinem.a altem.a jungem.a rotem.a blauem.a gelbem.a gruenem.a schwarzem.a
+%weissem.a billigem.a teurem.a kurzem.a langem.a gutem.a schlechtem.a gescheitem.a dummem.a
+%frohem.a erstauntem.a besorgtem.a boesem.a schoenem.a: {EA-} & Am+;
+
+sehr.e ziemlich.e: EA+ or EE+;
+
+schnell.e: {EE-} & (MV- or MVI+);
+
+und: {@XL-} & XR+ &
+(({GE+} & {D-} & (S+ or SI- or O- or B+ or J- or GE- or (Xd- & Xc+ & MX-))) or
+({EA-} & (A+ or ({@MV-} & (P- or PI+)))) or ({@MVI-} & (I- or II+)) or
+(J+ & (MV- or MVI+)) or
+W- or
+((((S- or ({CO-} & SI+)) & {@MV+} & W-) or ({@MVI-} & S- & C-)) & {SC+}));
+
+",": Xc- or Xd+;
+
+".": {Xc-} & Xp- & RW+;
+"!": {Xc-} & Xp- & RW+;
+"?": {Xc-} & Xp- & RW+;
+
+CAPITALIZED-WORDS NAME: {G-} & (({@MX+} &
+(Ss+ or SIs- or O- or B+ or J- or G+ or (Xd- & Xc+ & MX-))) or YS+);
+
+LEFT-WALL: W+ & {Xp+ or RW+};
+RIGHT-WALL: RW- or (Xc- & {@Xc-});
+POSTPROCESS: BOGUS+;
+
+% These need to be implemented. See english for example.
+HMS-TIME: BZZT+;
+DECADE-TIME: BZZT+;
+DAY-ORDINALS: BZZT+;
+ORDINALS: BZZT+;
+NUMBERS: BZZT+;
+FRACTION: BZZT+;
+ROMAN-NUMERAL-WORDS: BZZT+;
+INITIALS: BZZT+;
+GREEK-LETTER-AND-NUMBER: BZZT+;
+PL-GREEK-LETTER-AND-NUMBER: BZZT+;
+UNITS: BZZT+;
+PL-CAPITALIZED-WORDS: BZZT+;
+
+% With the following line in the dictionary, the parser will simply skip over (null-link)
+% unknown words. If you remove it, the parser will output an error for any unknown words.
+UNKNOWN-WORD: NO+;
+
diff --git a/grammar/link-grammar-4.7.9/data/de/4.0.knowledge b/grammar/link-grammar-4.7.9/data/de/4.0.knowledge
new file mode 100644
index 0000000..9925b8c
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/de/4.0.knowledge
@@ -0,0 +1,29 @@
+; Post-processing knowledge file
+; 6/96
+
+; ----------------------------------------------------------------------------
+; This file contains the knowledge related to post-processing, in the
+; form of lists and rules. This file is read by post-process.c at run-time.
+; Syntax of file:
+; line starting with ";" is a comment
+; commas are field delimiters
+; any token beginning with the character @ is expanded to the set
+; of symbols it defined. e.g. one could write
+; FOO: blah1 blah2 blah3
+; thus defining a set FOO containing three strings. Then one could later write
+; BAR: blah5 @FOO blah8
+; which defines a set BAR containing 5 strings.
+;
+; Capitalized tokens are *required*, though if you feel like providing an
+; empty list afterwards, that's your right.
+; ----------------------------------------------------------------------------
+
+; ----------------------------------------------------------------------
+; ---------------------- LINK TYPE TABLE-------------------------------
+; ----------------------------------------------------------------------
+; The following table associates a domain type with each possible
+; starting link. It contains pairs: the first of each pair is a link
+; type, and the second is the domain to which that link type belongs.
+
+STARTING_LINK_TYPE_TABLE:
+ W e
diff --git a/grammar/link-grammar-4.7.9/data/de/4.0.regex b/grammar/link-grammar-4.7.9/data/de/4.0.regex
new file mode 100644
index 0000000..5874fb1
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/de/4.0.regex
@@ -0,0 +1,117 @@
+ %***************************************************************************%
+ % %
+ % Copyright (C) 2005, 2006 Sampo Pyysalo, Sophie Aubin %
+ % See file "LICENSE" for information about commercial use of this system %
+ % %
+ %***************************************************************************%
+
+% This file contains regular expressions that are used to match
+% tokens not found in the dictionary. Each regex is given a name which
+% determines the disjuncts assigned when the regex matches; this name
+% must be defined in the dictionary along with the appropriate disjuncts.
+% Note that the order of the regular expressions matters: matches will
+% be attempted in the order in which the regexs appear in this file,
+% and only the first match will be used.
+
+% Numbers.
+% XXX, we need to add utf8 U+00A0 "no-break space"
+%
+% Allows at most two colons in hour-muinute-second HH:MM:SS expressions
+% Allows at most two digits between colons
+HMS-TIME: /^[0-9][0-9]?(:[0-9][0-9]?(:[0-9][0-9]?)?)?(AM|PM|am|pm)?$/
+
+% e.g. 1950's leading number can be higher, for science fiction.
+% Must be four digits, or possible three. Must end in s, 's ’s
+DECADE-TIME: /^([1-4][0-9][0-9]|[1-9][0-9])0(s|'s|’s)$/
+
+% Day-of-month names; this regex will match before the one below.
+DAY-ORDINALS: /^(1st|2nd|3rd|[4-9]th|1[0-9]th|2(0th|1st|2nd|3rd|[4-9]th)|30th|31st)$/
+
+% Ordinal numbers; everything except 1st through 13th
+% is handled by regex.
+ORDINALS: /^[1-9][0-9]*(0th|1st|2nd|3rd|[4-9]th)$/
+
+% Allows any number of commas or periods
+% Be careful not match the period at the end of a sentence;
+% for example: "It happened in 1942."
+NUMBERS: /^[0-9,.]*[0-9]$/
+% This parses signed numbers and ranges, e.g. "-5" and "5-10" and "9+/-6.5"
+NUMBERS: /^[0-9.,-]*[0-9](\+\/-[0-9.,-]*[0-9])?$/
+% Parses simple fractions e.g. "1/60" with no decimal points or anything fancy
+FRACTION: /^[0-9]+\/[0-9]+$/
+% "10(3)" exponent (used in PubMed)
+NUMBERS: /^[0-9.,-]*[0-9][0-9.,-]*\([0-9:.,-]*[0-9][0-9.,-]*\)$/
+
+% Roman numerals
+% The first expr has the potential(?) problem that it matches an empty
+% string. Thus, the next three rules specify that at least one section
+% is non-empty.
+ROMAN-NUMERAL-WORDS: /^M*(CM|D?C{0,3}|CD)(XC|L?X{0,3}|XL)(IX|V?I{0,3}|IV)$/
+% ROMAN-NUMERAL-WORDS: /^M*(CM|D?C{0,3}|CD){1}(XC|L?X{0,3}|XL)(IX|V?I{0,3}|IV)$/
+% ROMAN-NUMERAL-WORDS: /^M*(CM|D?C{0,3}|CD)(XC|L?X{0,3}|XL){1}(IX|V?I{0,3}|IV)$/
+% ROMAN-NUMERAL-WORDS: /^M*(CM|D?C{0,3}|CD)(XC|L?X{0,3}|XL)(IX|V?I{0,3}|IV){1}$/
+
+% Strings of initials. e.g "Dr. J.G.D. Smith lives on Main St."
+INITIALS: /^([A-Z]\.)+$/
+
+% Greek letters with numbers
+GREEK-LETTER-AND-NUMBER: /^(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\-?[0-9]+$/
+PL-GREEK-LETTER-AND-NUMBER: /^(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)s\-?[0-9]+$/
+
+% Some "safe" derived units. Simple units are in dictionary.
+% The idea here is for the regex to match something that is almost
+% certainly part of a derived unit, and allow the rest to be
+% anything; this way we can capture difficult derived units such
+% as "mg/kg/day" and even oddities such as "micrograms/mouse/day"
+% without listing them explicitly.
+% TODO: add more.
+% Some (real) misses from these:
+% micrograms.kg-1.h-1 microM-1 J/cm2 %/day mN/m cm/yr
+% m/s days/week ml/s degrees/sec cm/sec cm/s mm/s N/mm (is that a unit?)
+% cuts/minute clicks/s beats/minute x/week W/kg/W %/patient-year
+% microIU/ml degrees/s counts/mm2 cells/mm3 tumors/mouse
+% mm/sec ml/hr mJ/cm(2) m2/g amol/mm2 animals/group
+% h-1 min-1 day-1 cm-1 mg-1 kg-1 mg.m-2.min-1 ms.cm-1 g-1
+% sec-1 ms-1 ml.min.-1kg-1 ml.hr-1
+% also, both kilometer and kilometers seem to be absent(!)
+% remember "mm"!
+
+UNITS: /^([npmk]|nano|pico|milli|micro|kilo)?(g|grams?)\// % grams/anything
+UNITS: /^([fnmp]|femto|nano|micro|pico|mu)?mol(es)?\// % mol/anything
+UNITS: /^[a-zA-Z\/.]+\/((m|micro)?[lLg]|kg|mol|min|day|h)$/ % common endings
+% common endings, except in the style "mg.kg-1" instead of "mg/kg".
+UNITS: /^[a-zA-Z\/.1-]+\.((m|micro)?[lLg]|kg|mol|min|day|h)(-1|\(-1\))$/
+
+% combinations of numbers and units, e.g. "50-kDa", "1-2h"
+% TODO: Clean up and check that these are up-to-date wrt the
+% dictionary-recognized units; this is quite a mess currently.
+% TODO: Extend the "number" part of the regex to allow anything
+% that the NUMBER regex matches.
+% One problem here is a failure to split up the expression ...
+% e.g. "2hr" becomes 2 - ND - hr with the ND link. But 2-hr is treated
+% as a single word ('I is a 2-hr wait')
+% NUMBER-AND-UNIT: /^[0-9.,-]+(msec|s|min|hour|h|hr|day|week|wk|month|year|yr|kDa|kilodalton|base|kilobase|base-pair|kD|kd|kDa|bp|nt|kb|mm|mg|cm|nm|g|Hz|ms|kg|ml|mL|km|microm|\%)$/
+% Comment out above, it screws up handling of unit suffixes, for
+% example: "Zangbert stock fell 30% to $2.50 yesterday."
+
+
+% Plural proper nouns.
+% Make sure that apostrophe-s is split out correctly.
+PL-CAPITALIZED-WORDS: /^[[:upper:]].*[^iuoys'’]s$/
+
+% Other proper nouns.
+% We demand that these end with an alphanumeric, i.e. explicitly
+% reject punctuation. We don't want this regex to "swallow" any trailing
+% commas, colons, or periods/question-marks at the end of sentences.
+% In addition, this must not swallow words ending in 's 'll etc.
+% (... any affix, for that matter ...) and so no embedded apostrophe
+CAPITALIZED-WORDS: /^[[:upper:]][^'’]*[^[:punct:]]$/
+
+% Sequence of punctuation marks. If some mark appears in the affix table
+% such as a period, comma, dash or underscore, and there's a sequence of
+% these, then treat it as a "fill-in-the-blank" placeholder.
+% This matters only for punc. appearing in the affix table, since the
+% tokenizer explicitly mangles based on these punctution marks.
+%
+% Look for at least four in a row.
+UNKNOWN-WORD: /^[.,-]{4}[.,-]*$/
diff --git a/grammar/link-grammar-4.7.9/data/de/Makefile.am b/grammar/link-grammar-4.7.9/data/de/Makefile.am
new file mode 100644
index 0000000..2ed9a0a
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/de/Makefile.am
@@ -0,0 +1,12 @@
+
+DICTS= \
+ 4.0.affix \
+ 4.0.constituent-knowledge \
+ 4.0.dict \
+ 4.0.knowledge \
+ 4.0.regex
+
+dictdir=$(pkgdatadir)/de
+dict_DATA = $(DICTS)
+
+EXTRA_DIST = $(DICTS)
diff --git a/grammar/link-grammar-4.7.9/data/en/4.0.affix b/grammar/link-grammar-4.7.9/data/en/4.0.affix
new file mode 100644
index 0000000..b03b609
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/en/4.0.affix
@@ -0,0 +1,26 @@
+%
+% Affixes get stripped off the left and right side of words
+% i.e. spaces are inserted between the affix and the word itself.
+%
+% Some of the funky UTF-8 parenthesis are used in Asian texts.
+% In order to allow single straight quote ' and double straight quote ''
+% to be stripped off from both the left and the right, they are
+% distinguished by the suffix .x and .y (as as Mr.x Mrs.x or Jr.y Sr.y)
+%
+% 。is an end-of-sentence marker used in Japanese texts.
+
+")" "}" "]" ">" » 〉 〕 》 】 』 "’’" "’" ''.y '.y
+"%" "," "." 。 ":" ";" "?" "!" ….y ....y "”" "–" "‐"
+'s 're 've 'd 'll 'm ’s ’re ’ve ’d ’ll ’m
+¢ ™: RPUNC+;
+
+"(" "{" "[" "<" « 〈 〔 《 【 『 `` „ “ ‘ ''.x '.x ….x ....x
+"$" US$ USD C$ £ ₤ € ₳ ฿ ₵ ₡ ₢ ₫ ₣ ₴ ₭ ℳ ₥ ₦ ₧ ₰ ₨ ₪ ৳ ₮ ₩ ¥ 호점
+† †† ‡ § ¶ © № "#": LPUNC+;
+
+/en/words/units.1: UNITS+;
+/en/words/units.1.dot: UNITS+;
+/en/words/units.3: UNITS+;
+/en/words/units.4: UNITS+;
+/en/words/units.4.dot: UNITS+;
+
diff --git a/grammar/link-grammar-4.7.9/data/en/4.0.batch b/grammar/link-grammar-4.7.9/data/en/4.0.batch
new file mode 100644
index 0000000..49e577c
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/en/4.0.batch
@@ -0,0 +1,1028 @@
+
+!verbosity=1
+!echo
+!limit=1000
+!batch
+!short=20
+!constituents=1
+!spell=0
+!use-fat=0
+
+%NOUNS
+
+The fact that he smiled at me gives me hope
+*The event that he smiled at me gives me hope
+But my efforts to win his heart have failed
+*But my presents to win his heart have failed
+Failure to comply may result in dismissal
+*Absence to comply may result in dismissal
+The question is who we should invite
+*The party is who we should invite
+The big question on everybody's mind is who killed OJ
+*The big mind on everybody's question is who killed OJ
+Do it the way you've always done it
+I really like the way you do your hair
+*I really like the fashion you do your hair
+He made a request that there be an investigation
+*He stated the fact that there be an investigation
+He is the kind of person who would do that
+*He is the character of person who would do that
+An income tax increase may be necessary
+*A tax on income increase may be necessary
+Last week I saw a great movie
+
+% currently finds a parse with roman numeral I
+% i.e. "Last Dog the First saw a great movie"
+*Last dog I saw a great movie
+The party that night was a big success
+*The party that dog was a big success
+John Stuart Mill is an important author
+The Richard Milhous Nixon Library has been a big success
+The mystery of the Nixon tapes was never solved
+High income taxes are important
+Oil company stock prices rose in heavy trading today
+Metals futures prices rose in heavy trading today
+U.S. economic indicators fell sharply last month
+Columbia medical and administrative workers continued their strike today
+Janet, who is an expert on dogs, helped me choose one
+*Janet who is an expert on dogs helped me choose one
+The dog that we eventually bought was very expensive
+*The dog, that we eventually bought, was very expensive
+*The dog, we eventually bought, was very expensive
+Have you ever seen the Pacific
+The new David Letterman is a happy, relaxed David Letterman
+Actress Whoopi Goldberg and singer Michael Jackson attended the ceremony
+We are from the planet Gorpon
+This is my friend Bob
+John's family is renovating their kitchen
+*A man I know's family is renovating their kitchen
+The boys' bedrooms will be enlarged
+*The boys's bedrooms will be enlarged
+My uncle's mother's cousin is visiting us
+*Emily's my cousin is visiting us
+We ate at Joe's Diner last week
+The buy-out caused a free-for-all in the mid-afternoon
+Joan Smith is president of the company
+*Joan Smith is tourist
+Alfred Baird, formerly vice president of Beevil Corp., has been appointed as president
+*Alfred Baird, man I know, has been described as good gardener
+A bunch of dogs are in the yard
+*A picture of dogs are in the yard
+
+%DETERMINERS & PRONOUNS
+
+Many people were angered by the hearings
+*Many person were angered by the hearings
+Many were angered by the hearings
+My many female friends were angered by the hearings
+
+% "My" is in the dictionary as a female given name. Thus, the below parses
+% just like "John, some female friends were angered..." with the missing
+% comma allowed, but at high cost (allowed because people get sloppy with
+% their punctuation, and we want to understand people even if they're
+% sloppy.
+*My some female friends were angered by the hearings
+Many who initially supported Thomas later changed their minds
+The stupidity of the senators annoyed all my friends
+*The stupidity of the senators annoyed many my friends
+
+% The below is hard to get right. So, although we have
+% "*I want a gift inexpensive" it is OK with a definite determiner:
+% "I want the gift [to be] inexpensive." The phantom [to be] makes
+% the attachment of adjectives difficult to deal with.
+% See 4.0.fixes.batch, "I want it green" for more examples.
+I need to buy a present, but I want something inexpensive
+*I need to buy a present, but I want a gift inexpensive
+
+Anyone who thinks this will work is crazy
+Their program is better than ours
+Those that want to come can come
+I read everything I could about the subject
+I read whatever I could about the subjetc
+*I read several books I could about the subject
+the best costumes got prizes
+*a best costume got prizes
+*some best costumes got prizes
+the best five costumes got prizes
+the five best costumes got prizes
+*the five best five costumes got prizes
+*the hundreds of best costumes got prizes
+*five best costumes got prizes
+*best costumes got prizes
+*best five costumes got prizes
+five other costumes got prizes
+the other five costumes got prizes
+*other five costumes got prizes
+the other candy was really disgusting
+*the five other candy was really disgusting
+other candy is really disgusting
+*other piece of candy was really bad
+other costumes were really bad
+some other costumes were really bad
+
+%NUMBERS
+
+2 million attended
+2863764 attended
+2 million people attended
+*2 million person attended
+a million attended
+a million people attended
+about 2 million people attended
+about 2 million attended
+*about people attended
+a million such people attended
+*a million such attended
+5 million of the people attended
+5 thousand invited by Bob attended
+The 5 thousand invited by Bob attended
+The thousands of people who attended enjoyed it
+The 5 thousand people invited by Bob attended
+The nearly 5 million people who attended enjoyed it
+a few attended
+a few million people attended
+a few people attended
+few attended
+*few million people attended
+millions attended
+*5 millions attended
+millions of people attended
+hundreds of millions of people attended
+5 million years ago, the earth was covered with ice
+millions of years ago, the earth was covered with ice
+*dogs of years ago, the earth was covered with ice
+*the five million years ago, the earth was covered with ice
+*the other five million years ago, the earth was covered with ice
+*5 million ago, the earth was covered with ice
+The city of New York contains over one hundred million billion brain cells
+Almost one third of the people in the country have no health insurance
+Of all the people in this country, almost one third have no health insurance
+Three quarters of a million people in this city have no health insurance
+The price of the stock rose three tenths of one point
+*The price of the stock rose three tenths of one dog
+The nearest drug store is about three quarters of a mile away
+The nearest drug store is about 3/4 of a mile away
+Every morning I walk 3 1/2 miles
+*Every morning I walk 1/2 3 miles
+Nearly 1/2 million people work here every day
+Nearly 1 1/4 million people work here every day
+*Nearly 1 million 1/4 people work here every day
+Between 500 and 1000 people pass through here every minute
+They are the Number 3 auto maker and a Fortune 500 company
+I live at 805 West Indiana Street
+
+%TIME EXPRESSIONS
+
+We're thinking about going to a movie this evening
+*We're thinking about going to a movie this theater
+I've been grading these stupid exams all day
+*I've been grading these stupid days all exam
+We're having a big party Tuesday
+*We're having a big party our house
+
+% January is in the dictionary as a female given name. Thus, "important
+% meeting January" is a name with two adjectival modifiers, and thus can
+% be the object of "There is going to be..."
+*There is going to be an important meeting January
+There is going to be an important meeting in January
+There is going to be an important meeting next January
+The party last week was a big success
+John last week threw a great party
+Until recently, these fossils were believed to belong to different species
+*Until initially, these fossils were believed to belong to different species
+*Until for many years, these fossils were believed to belong to different species
+Until last week, these fossils were believed to belong to different species
+*Until last meeting, these fossils were believed to belong to different species
+I'm quite excited about next week
+Monday sounds good for the meeting
+Tomorrow might be a good time for the meeting
+Last Tuesday was really fun
+*Three days ago was really fun
+Almost three years after our first date, I saw Ruth again
+Almost three years after I first met her, I saw Ruth again
+*Almost three years, I saw Ruth again
+Almost three years later, I saw Ruth again
+*Almost three years for our first date, I saw Ruth again
+I saw her again a year and a half later
+*I saw her again a year and a dog later
+He left here a quarter of an hour ago
+*He left here a quarter of a dog ago
+*He left here a picture of an hour ago
+I still remember the day I kissed him
+
+% I appears in the dictionary as roman numeral I, so this parses as "room
+% the first", and since "I remember the room kissed him" parses, the below
+% will also.
+*I still remember the room I kissed him
+I'm going to Europe the day I graduate
+Clinton is expected to return to Washington Thursday morning
+*Clinton is expected to return to Thursday Washington office
+Clinton is expected to return to Washington on Thursday morning
+Clinton is expected to return to Washington late Thursday morning
+Clinton is expected to return to Washington next Thursday morning
+She walked out of the room the minute I saw her
+*She walked out of the room two minutes I saw her
+I was crazy about him the first time I saw him
+*I was crazy about him the first party I saw him
+In January 1990, a historic new law was passed
+*In Washington 1990, a historic new law was passed
+On January 15, 1990, a historic new law was passed
+*On January 320, 1990, a historic new law was passed
+He was convicted under an obscure 1990 law
+
+% '50 law' parses, because '57 Chevy' has to parse.
+*He was convicted under an obscure 50 law
+I wish I could see him 100 times a day
+*I wish I could see him 3 meals a day
+*I wish I could see him 100 times a dog
+*I wish I could see him 100 times 2 days
+It's good to eat three big meals a day
+Someone is mugged in New York every five minutes
+Her career lasted almost thirty years
+*Her career lasted almost thirty books
+Every morning at 5 a.m., Ken gets up and runs for five miles
+At 4:52 p.m., on Monday, December 26, 1997, nothing happened
+
+%QUESTIONS AND RELATIVE CLAUSES
+
+Which dog did you chase
+*Which dog you chased
+Which dog did you say you chased
+*Which dog you said you chased
+*Which dog did you say did you chase
+I wonder which dog he said you chased
+*I wonder which dog did he say you chased
+*I wonder which dog did he say did you chase
+What did John say he thought you should do
+*What did John say did he think you should do
+*What John said he thought you should do
+What Alice did really annoyed me
+*Who Alice did really annoyed me
+Whoever designed this program didn't know what they were doing
+*Who designed this program didn't know what they were doing
+Invite John and whoever else you want to invite
+The dog which Chris bought is really ugly
+*The dog what Chris bought is really ugly
+I wonder whether we should go
+*Whether should we go
+We can't decide whether to go to the party
+*We can't decide who to go the party
+*We can't decide whether to go the the party with
+I am wondering who to go to the party with
+I am wondering who to invite to the party
+*I am wondering whether to invite to the party
+*I am wondering the people to invite to the party
+*Whether to go to the party
+*Who to invite to the party
+Do you think we should go to the party
+*What do you think we should go to the party
+How do you operate this machine
+How fast is the program
+How certain are you that John is coming
+*How tired are you that John is coming
+How likely is it that he will come
+*How likely is John that he will come
+How certain does he seem to be that John is coming
+How efficient a program is it
+*Efficient a program is it
+*How fast programs are they
+*How fast the program is it
+How fast a program does he think it is
+*How fast a program he thinks it is
+*How fast programs does he think they are
+*How big a dog chased you
+I wonder how fast a program he thinks it is
+*I wonder how fast a program does he think it is
+How much money did you earn
+*How much money you earn
+I wonder how much money you earned
+*I wonder how much money have you earned
+How much oil spilled
+How much do you swim
+*How much you swim
+I wonder how much you swim
+*I wonder how much do you swim
+*I don't have how much money
+I don't have very much money
+I don't have much money
+How much did you read
+*How much of the book you read
+How much of the book did you read
+I wonder how much of the book you read
+How many people died
+How many people did you see
+*How many people you saw
+I wonder how many people you saw
+I wonder how many of the people you saw were students
+How did John do it
+I wonder how John did it
+How long will it last
+*How big will it last
+How many years did it take to do it
+How big is the department
+*How big the department is
+*I wonder how big is the department
+I wonder how big the department is
+*I wonder how big departments they are
+*I wonder how a department it is
+I wonder how big a department it is
+How important is it to turn the computer off
+I wonder how important it is to turn off the computer
+*I wonder how important is it to turn off the computer
+How quickly did Joe run
+*How quickly Joe ran
+I know how quickly you ran
+*I know how quickly did you run
+*He ran I know how quickly
+*Quickly did Joe run
+*Very quickly did Joe run
+*I know very quickly did Joe run
+*I know quickly did John run
+How much more quickly did you run
+*How much more quickly you run
+*I wonder how much more quickly did he run
+I wonder how much more quickly he ran
+How much more quickly did he run than Joe
+How much more should we work on this
+How much further do you think we should drive tonight
+I don't know how much longer I can tolerate this
+How much bigger is the dog
+*How much bigger dogs are they
+*How much bigger dogs ran
+*How big dogs run
+How much further did you run
+How much more oil spilled
+How much more spilled
+How much more oil did they spill
+How much more did they spill
+*How much more they spilled
+I wonder how much oil spilled
+I wonder how much oil they spilled
+*How much more efficient programs are available
+How many dogs ran
+How many ran
+How many dogs did you see
+How many more people did you see
+How many more people do you think will come
+I wonder how many more people he thinks will come
+*I wonder how many more people does he think will come
+How many times did you do it
+*How many times you did it
+I wonder how many times you did it
+*How many more stupid times did you do it
+How many years ago did you do it
+*Many years ago did you do it
+*How many years did you do it
+I wonder how many years ago you did it
+*How many years ago you did it
+I'll show you the house where I met your mother
+*I'll show you the house which I met your mother
+This is the man whose dog I bought
+*This is the man which dog I bought
+I wonder where John is
+*I wonder where John hit
+The dogs, some of which were very large, ran after the man
+The dogs, some of which I had seen before, ran after the man
+*The dogs some of which were very large ran after the man
+The box contained many books, some of which were badly damaged
+*Some of which were badly damaged
+*The box contained many books, some were badly damaged
+*The box contained many books, some of the books were badly damaged
+The dogs, some of them very large, ran after the man
+*The dogs, some of the dogs very large, ran after the man
+*Some of them very large ran after the man
+The man was chased by dogs, some of them very large
+I believe it was John who stole the priceless documents
+*I believe Fred was John who stole the priceless documents
+It seems to have been Einstein who first came up with the idea
+*There seems to have been Einstein who first came up with the idea
+*It hopes to have been Einstein who first came up with the idea
+*The book discussed Einstein who first came up with the idea
+*Stravinsky was in Paris that Debussy first heard Balinese music
+It was in Paris that Debussy first heard Balinese music
+It must have been there that he realized his destiny
+*It tried to have been there that he realized his destiny
+*He composed some good music that he realized his destiny
+*It was quickly that he wrote his first symphony
+Wasn't it in 1955 that Sally first met Joe
+Whatever the outcome, I'm sure he'll still be popular
+*Whatever an outcome, I'm sure he'll still be popular
+Whatever the outcome is, I'm sure he'll still be popular
+*What the outcome is, I'm sure he'll still be popular
+
+%CONJUNCTIONS
+
+The man we saw when we went to Paris is here
+*The man we saw but we went to Paris is here
+You should see a play while in London
+*You should see a play after in London
+I left the party after seeing Ann there
+*I left the party because seeing Ann there
+*I left the party despite I saw Ann there
+Because I didn't see Ann, I left
+*Therefore I didn't see Ann, I left
+I left, therefore I didn't see Ann
+But I really wanted to see her
+*After I really wanted to see her
+As I suspected, he had already left
+*Because I suspected, he had already left
+*I suspected, he had already left
+*I suspected
+Some grammars are better than others, as we have proved
+As had been expected, the party was a big success
+*As had been green, the party was a big success
+*As had wanted to be expected, the party was a big success
+*As had expected the party to be a success, it was a success
+In the event that the case goes to trial, I'm sure Clinton will be acquitted
+*In the scandal that the case goes to trial, I'm sure Clinton will be acquitted
+He should be acquitted, on the grounds that there's no evidence
+The public seem to love him, no matter what he does
+*The public seem to love him, no matter the stupid things he does
+
+%VERBS
+
+Abrams does like programming
+*Abrams does be a good programmer
+He is being hired by another company
+He is looking for another job
+Fred has had five years of experience as a programmer
+*Fred has had been a programmer for five years
+I gave my mother the present I bought for her
+I gave her the present I bought for her
+*I gave my mother it
+We picked out some beautiful flowers for her
+We picked some beautiful flowers out for her
+We picked them out for her
+*We picked out them for her
+Did you put the milk in the refrigerator
+*Did you put the milk
+Where did you put the milk
+I hope he comes to the party tomorrow
+I hope that he comes to the party tomorrow
+*I hope him to come to the party tomorrow
+I expect him to come to the party tomorrow
+I expect to go to the party tomorrow
+*I expect
+*I expected who would come to the party
+I knew who would come to the party
+*I expected he go to the party
+I suggested he go to the party
+*He knew me how to use the program
+He asked me how to use the program
+*He disputed our program was superior
+He disputed that our program was superior
+Anne told me I would almost certainly be hired
+*Anne expected me I would almost certainly be hired
+*We argued adding new features to the program
+We discussed adding new features to the program
+*I thought terrible after our discussion
+I felt terrible after our discussion
+I made him make some changes in the program
+*I encouraged him make some changes in the program
+I helped him make some changes in the program
+I helped make some changes in the program
+*I saw make some changes in the program
+*I made him telling her about the party
+I saw him telling her about the party
+Phil gave me a sweater which he bought in Paris
+*Phil chose me a sweater which he bought in Paris
+Alan bet me five dollars Clinton would lose the election
+*Alan offered me five dollars Clinton would lose the election
+She said she didn't approve of my behavior
+*She said she didn't like of my behavior
+The results are in, the game is up and the truth is out
+*The in results show the out truth about the up game
+*The results became in and the truth seemed out
+He sold for five dollars the ring his mother had given him
+Clinton announced on Tuesday a bold new proposal
+*Clinton announced on Tuesday it
+I gave my brother an expensive present
+I gave him an expensive present
+I gave an expensive present
+I gave it
+*I gave my brother it
+I gave him for his birthday a very expensive present
+*I gave him for his birthday it
+I gave for his birthday an expensive present
+*I gave for his birthday it
+The President announced on Monday that several more bases would be closed
+He had attempted for years to make a career as a concert pianist
+*He had attempted for years
+I asked him when I saw him at the party yesterday what he was working on
+*I talked to him when I saw him at the party yesterday what he was working on
+I wondered for a long time why everyone liked her so much
+*I thought for a long time why everyone liked her so much
+I told Margaret that I thought she would probably be hired
+*I told on Tuesday Margaret that I thought she would probably be hired
+I told Margaret on Tuesday that I thought she would probably be hired
+We discussed at the meeting hiring a new secretary
+*We discussed at the meeting
+We informed the new employees that no salary increase would be possible
+We informed at the meeting the new employees
+*We informed at the meeting the new employees that no salary increase would be possible
+They were asked that he be allowed to go
+If his calculations were correct, Copernicus reasoned, the earth must revolve around the sun
+The earth, Copernicus reasoned, must revolve around the sun
+The earth must revolve around the sun, Copernicus reasoned
+*The earth must revolve around the sun, Copernicus was happy
+*The earth must revolve around the sun, Copernicus destroyed
+*The earth, the pope cringed when Copernicus reasoned, revolves around the sun
+Abortion was legal until the third month, the court ruled
+If the pregnancy was within the first three months, the court ruled, abortion was legal
+Nobody, it seems, wants to be a liberal
+*Nobody, John seems, wants to be a liberal
+Business is booming, Joe Smith, a car dealer, says
+Business is booming, says Joe Smith, a car dealer
+You can do anything you want, I told her
+In the last few years, it seems, nobody wants to be a liberal
+Also invited to the meeting were several prominent scientists
+*Also invited to the meeting invited several prominent scientists
+Also awarded the prize was Jean Smith, a prominent computer scientist
+Chosen to lead the commission was Fred Schultz, a former Federal judge
+*Chosen to lead the commission seemed likely to be Fred Schultz, a former Federal judge
+*Chooses to lead the investigation Fred Schultz
+*Choose to lead the investigation did Fred Schultz
+Also recommended in the report was a new initiative to combat crime
+*Also chosen the leader for the commission was Fred Schultz
+Included in our paper is a summary of the features of our program
+Also performing in the concert were members of the Budapest Quartet
+*Were performing in the concert members of the Budapest Quartet
+Voting in favor of the bill were 36 Republicans and 4 moderate Democrats
+Glaring coldly at Sarah, he walked out of the room
+He walked out of the room, glaring coldly at Sarah
+*Glaring coldly at Sarah, walking out of the room
+Finding that it was impossible to get work as a waiter, he worked as a janitor
+He had hoped to get work as a waiter, but, finding this was impossible, he worked as a janitor
+*He said that, finding that it was impossible to get work as a waiter, he would work as a janitor
+Used by some of the finest pianists in the country, Baldwin pianos are technical marvels
+Using specially designed parts, Baldwin pianos are technical marvels
+*Used specially designed parts, Baldwin pianos are technical marvels
+Sending a message of discontent to Washington, voters overwhelmingly rejected the Clinton administration
+She's a really good player
+John's coming to the party tonight
+He's usually gone to Boston for Thanksgiving
+*Do you know where John's
+Who's afraid of the big bad wolf
+That's just the kind of person he is
+*That's just the kind of person he's
+There's no reason to get so upset about it
+I didn't think he would do it, but he did
+*I didn't think he would invite her, but he invited
+If you don't want to do it, you should find someone who will
+If you don't want to do it, you should find someone who does
+Find someone who does
+*Find someone who wants to do
+I don't like programming, and someone who does may be difficult to find
+The price of the stock more than doubled in two days
+*The price of the stock more than increased in two days
+I finally figured out why this program is so slow
+*I finally flipped out why this program is so slow
+It turns out that Clinton didn't actually kiss Monica
+If you go around doing that, you're going to end up making people mad
+The lawyer pointed out that Clinton didn't actually kiss Monica
+A party is taking place, so if you'd like to show up, you should do so
+
+%PREPOSITIONS
+
+I have doubts about inviting him
+*I have doubts during inviting him
+I prevented her from doing it by praising her for not doing it
+From your description, I don't think I would enjoy it
+We had an argument over whether it was a good movie
+*We had an argument at whether it was a good movie
+Because of the rain, we decided to stay home
+They're having a party in front of the building
+The man with whom I play tennis is here
+The man I play tennis with is here
+*The man whom I play tennis is here
+*The man with whom I play tennis with is here
+With whom did you play tennis
+Who did you play tennis with
+The data on file will be used for the project at hand, which is already under way
+*The data on project will be used for the file at program
+The project was finished on schedule, as usual
+*The project as usual and the report on schedule were finished
+I told him by telephone that I was coming by car
+From in back of the shed, I heard a scream that seemed to come from on top of the garage
+The university spends $5 per student
+*The university spends $5 per the student
+They're building a gigantic mall five miles from here
+*They're building a gigantic mall five mistakes from here
+The 7-11 is half a mile up the road, but the supermarket is a long way away
+I'm sure things will get done with Janet running the company
+*I'm sure things will get done by Janet running the company
+*I'm sure things will get done because Janet running the company
+With Janet in charge, I'm sure things will get done
+
+%ADJECTIVES
+
+You are lucky that there is no exam today
+*You are stupid that there is no exam today
+You are lucky I am here
+*You are right I am here
+This is something we should be happy about
+*This is something we should be happy
+*The happy about it man kissed his wife
+Is he sure how to find the house
+*Is he correct how to find the house
+You should be proud of your achievement
+*You should be happy of your achievement
+He is the smartest man I know
+*They are some smartest men I know
+I've seen a lot of programs, but ours is the fastest
+Ours is the fastest of the programs we have seen
+I've seen a lot of programs, but ours runs the most quickly
+*This is our the fastest program
+Voters angry about the economy will probably vote for Clinton
+*Voters angry will probably vote for Clinton
+Many Democrats unhappy about the economy but doubtful that Clinton can be elected probably won't vote at all
+*Many Democrats unhappy but doubtful probably won't vote at all
+*Many Democrats likely that Bush will be reelected probably won't vote
+Hundreds of young men, furious about the verdict in the Rodney King case, looted stores in Los Angeles today
+*Hundreds of young men, furious, looted stores in Los Angeles today
+We need a programmer knowledgeable about Lisp
+*We need a programmer knowledgeable
+Any program as good as ours should be useful
+*Any program good should be useful
+Let us know if you have a program capable of parsing this sentence
+*Let us know if you have a program capable
+It is believed that even the troops loyal to Hussein will soon be forced to surrender
+*It is believed that even the troops loyal will soon be forced to surrender
+Republican policies only benefit the rich and powerful
+Republican policies only benefit the rich and the powerful
+*Republican policies only benefit a rich and a powerful
+*Republican policies only benefit some rich and some powerful
+The meek will inherit the earth, and the best is the enemy of the good
+They're building a skyscraper over 1000 feet tall
+*They're building a skyscraper tall
+The river is half a mile wide here and 300 feet deep
+*The river is half a mile beautiful and 300 feet dangerous
+Mr. John Smith, 66 years old, will succeed him as president
+*Mr. John Smith, old, will succeed him as president
+A big black ugly dog chased me
+A big, black, ugly dog chased me
+The former astronaut was alone and afraid
+*The alone astronaut was former
+
+%ADVERBS
+
+He is apparently an expert on dogs
+*He knows apparently an expert on dogs
+Mary quickly walked out of the room
+Mary just walked out of the room
+Quickly, Mary walked out of the room
+Mary walked out of the room quickly
+*Mary walked out of the room just
+He told them about the accident immediately
+*He told them about the accident presumably
+He told them about the accident, presumably
+She is very careful about her work
+She works very carefully
+*She very works carefully
+Is the piece easy enough for you
+Is the piece too easy for you
+*Is the piece enough easy for you
+She is apparently an excellent pianist
+*She married apparently an excellent pianist
+Only after the movie did he realize his mistake
+*After the movie did he realize his mistake
+I may have taken cocaine a few times, but at no time did I inhale
+*A few times may I have taken cocaine, but I inhaled at no time
+Never have I seen such a grotesque display of incompetence
+*Often have I seen such a grotesque display of incompetence
+We like to eat at restaurants, particularly on weekends
+We like to eat at restaurants, usually on weekends
+*We like to eat at restaurants, fortunately on weekends
+Such flowers are found mainly in Europe
+*Such flowers are found apparently in Europe
+*Such flowers are found mainly particularly in Europe
+*Such flowers are found mainly
+Many people, particularly doctors, believe there is no health care crisis
+*Many people, strongly doctors, believe there is no health care crisis
+I found a house that even John thinks we should buy
+He told me that even his mother likes me
+*He told me that even, his mother likes me
+We put the pie straight in the oven
+*We put the pie quickly in the oven
+We put the pie straight in
+*We put the pie straight
+He lives high in the mountains
+He lives over by the lake
+*He lives over by
+The apparently angry man walked out of the room
+The often underpaid administrators resent the invariably rude students and the understandably impatient professors
+The delicately lyrical tone of the cello contrasted with the fiercely percussive piano chords
+The always delicately lyrical tone was really beautiful
+*The delicately always lyrical tone was really beautiful
+*The delicately very lyrical tone was really beautiful
+Biochemically, I think the experiment has a lot of problems
+I think the experiment has a lot of problems biochemically
+It is biochemically an interesting experiment
+I'm not sure the results are biochemically valid
+
+%IT-THERE-THIS
+
+There is a dog in the park
+*There is chasing dogs
+*There are a dog in the park
+Does there seem to be a dog in the park?
+*Does there want to be a dog in the park?
+There seems to appear to have been likely to be a problem
+*There seems to appear to have been likely to be problems
+*There seems to appear to have been likely to be stupid
+There was an attempt to kill Rod
+The man there was an attempt to kill died
+There was a problem, but we solved it
+It is likely that Rod died
+*Joe is likely that Rod died
+It is clear who killed Rod
+*Joe is clear who killed Rod
+It may not be possible to fix the problem
+Grace may not be possible to fix the problem
+It is important that women be ready when they make these choices
+*It is clear that women be ready when they make these choices
+*Joe is important that women be ready when they make these choices
+flowers are red to attract bees
+I made it clear that I was angry
+*I made Anne clear that I was angry
+Dick is easy to hit
+*Dick is big to hit
+It is important to fix the problem
+Dick is important to fix the problem
+The man it is likely that John hit died
+*The man Joe is likely that Dick hit died
+Does it seem likely that Ann will come
+Does Ann act glad that Joe came
+*Does it act likely that Joe came
+It doesn't matter what Ted does
+*Joe doesn't matter what Ted does
+I want it to be possible to use the program
+I want Joe to be possible to use the program
+I want it to be clear that it was my idea
+*I asked it to be clear that it was my idea
+I want it to be obvious how to use the program
+*I want Emily to be obvious how to use the program
+I want Joe to be easy to hit
+It is likely they will come
+*Joe is likely they will come
+This is because he is extremely famous
+The trial is because he is extremely famous
+The excitement over the trial is because he is extremely famous
+This seems to have been because he is extremely famous
+
+%COMPARATIVES
+
+Our program works more elegantly than yours
+Ours works more elegantly than yours does
+Ours works more elegantly than yours works
+*Ours works more elegant than yours
+*Ours is more elegant than yours works
+Our program works more elegantly than efficiently
+Our program is more elegant than efficient
+Our program works better than yours
+We do this more for pleasure than for money
+He is more likely to go than to stay
+*He is more likely than to stay
+*He is more black to go than to stay
+He is more likely to go than he is to stay
+He is more likely to go than John is
+It is more likely that Joe died than that Fred died
+It is more likely that Joe died than it is that Fred died
+*John is more likely that Joe died than it is that Fred died
+*It is more likely that Joe died than John is that Fred died
+It is easier to ignore the problem than to solve it
+It is easier to ignore the problem than it is to solve it
+*Greg is easier to ignore the problem than to solve it
+Our program is easier to use than to understand
+*Our program is easier to use it than to understand
+I am more happy now than I was in college
+*I am more happy now than I earned in college
+He is more a teacher than a scholar
+I make more money in a month than John makes in a year
+I make more money in a month than John dies in a year
+I hit more the dog than the cat
+I have more money than John has time
+I have more dogs than John has five cats
+I have more money than John has a dog
+She interviewed more programmers than were hired
+*She interviewed more programmers than was hired
+I am as intelligent as John
+I earn as much money as John does
+I am as intelligent as John does
+I earn as much money in a month as John earns in a year
+*I earn as much money in a month than John earns in a year
+Our program was better than had been expected
+*Our program was better than had been argued
+*Our program was better than had been responded
+Our program was better than was expected
+*Our program was better than were expected
+More people came to the party than were expected
+More people came to the party than was expected
+Our program did not run as quickly as expected
+*Our program did not run as quickly as said
+How much faster is our program than theirs
+*How much faster our program is than theirs
+The more quickly we write the program, the more money we will earn
+*The more people like the program
+*The people like the program, the more money we will earn
+The better the program is, the more people will like it
+The better the program, the more people will like it
+*The better a program, the more people will like it
+The less likely it is that we can parse this, the easier it is to understand
+
+% "SO THAT", "SUCH...THAT"
+
+The shuttle is so big that it has to be carried on the back of a jet
+*The shuttle is big that it has to be carried on the back of a jet
+So many people attended that they spilled over into several neighboring fields
+*Many people attended that they spilled over into several neighboring fields
+The program has so many problems that you should probably just rewrite it
+*The program has many problems that you should probably just rewrite it
+I love her so much that I can't let her go
+*I love her very much that I can't let her go
+He ran home so quickly that his mother could hardly believe he had called from school
+*He ran home quickly that his mother could hardly believe he had called from school
+She presented her case with such eloquence that we could only admire her
+*She presented her case with eloquence that we could only admire her
+
+%"AND", ETC.
+
+I went to the store and got a gallon of milk
+*I got and went a gallon of milk
+I got a gallon of milk and some eggs
+I went to the store, got a gallon of milk, and returned the eggs
+
+% Sentence belwo was marked bad, but this seems arguable to me .. !?
+% *I went to the store, got a gallon of milk, and some eggs
+Mary, Joe and Louise are coming to the party
+Neither Mary nor Louise are coming to the party
+I am ready and eager to go to the party
+She handled it skillfully and with compassion
+I told him that I hated him and that I never wanted to see him again
+He told me why he was here and what he was doing
+*He told me why he was here and that he hated me
+Although he likes me and he respects me, he says he needs some privacy
+Your house and garden are very attractive
+I am in New York and I would like to see you
+This is not the man we know and love
+*This is not the man we know and love him
+The coverage on TV and on the radio has been terrible
+*The coverage on TV and I have seen has been terrible
+The sky is blue, so it is likely that Joe will come
+*It is blue and likely that Joe will come
+That is the man for whom and with whom Joe works
+*That is the man for whom and with Janet Joe works
+*When did Joe and John did leave the party
+
+% Huh ??? what's the correct parse/meaning of this sentence?
+% "my dog's freind came" is one of the parses !!?? wtf ..
+% My dog, cat, and cousin's friend came
+*My dog, cat, horse, mouse, and his cow left
+My dog, cat, horse, and mouse, and his cow left
+you should not only ask for your money back, but demand it
+I was both angry and sad at the same time
+
+%PLURALIZATION IN CONJUNCTIONS
+
+There is neither a dog nor a cat here
+*There are neither a dog nor a cat here
+There is a dog or a cat here
+*There are a dog or a cat here
+*There are a dog and a cat here
+There is a dog and a cat here
+He and I are friends
+neither I nor my friend knows what happened
+neither I nor my friend know what happened
+Either I or my friend knows what happened
+Either I or my friend know what happened
+The dog and cats know what happened
+*The dog and cats knows what happened
+Are a dog and a cat here
+*Is a dog and a cat here
+*Is John and I invited
+Are John and I invited
+Is John or I invited
+Are John or I invited
+Is neither John nor I invited
+Are neither John nor I invited
+
+%GERUNDS
+
+Playing the piano bothers John
+Releasing the program at this point would annoy our competitors
+The playing of the piano really bothers John
+*The playing the piano really bothers John
+Telling Joe about the party would create a real problem
+*The telling Joe about the party could create a real problem
+Your telling Joe about the party could create a real problem
+Telling Joe that Sue was coming to the party would create a real problem
+Telling would create a real problem
+I want her to know about it, but the telling won't be easy
+*The telling her won't be easy
+*Some children like to tease
+Teasing can be very cruel
+Your telling John to leave may have destroyed your relationship
+The graduating of Fred changes the situation
+The sleeping of students is becoming a big problem
+The sleeping of students can ruin a lecture
+Buying of shares was brisk on Wall Street today
+The sleeping in class is becoming a big problem
+*The telling John to leave was stupid
+*The inviting your mother was stupid
+*The showing how to use the program seemed to interest people
+*The attempting to go to the party angered Joe
+The showing of the program seemed to impress people
+The sleeping of students described by Fred is a big problem
+The sleeping of students I told you about is a big problem
+The frequent sleeping of students is a big problem
+His hitting of the dog didn't help matters
+Some hitting of dogs will solve the problem
+the drug running here has become a massive problem
+He made a mistake in inviting John
+He made a mistake in the inviting of John
+I should have talked to you before inviting John
+I should have talked to you before the inviting of John
+
+%SPECIAL SUBJECTS: INFINITIVES, CLAUSES, AND INDIRECT QUESTIONS
+
+To pretend that our program is usable in its current form would be silly
+*To pretend that our program is usable in its current form would be happy
+That our program will be immediately accepted is hardly likely
+*That our program will be immediately accepted wrote the program
+*Is that our program will be accepted likely
+*That our program will be accepted seems likely that our program will be accepted
+Whether we should go to the party is the important question
+*Whether we should go to the party annoys me
+
+%LONGER CONSTRUCTIONS, PUNCTUATION, AND CAPITALIZATION
+
+Using the conventional Minuet form, Beethoven produced a piece of great originality
+Written in 1820, the symphony shows a new level of maturity for the composer
+Abandoned by his friends, he left Vienna three years later
+In Vienna, Beethoven met someone who would later be greatly influenced by him: Franz Schubert
+*In Vienna, Beethoven met someone who would later be greatly influenced by him; Franz Schubert
+Today I did something very important: I bought a dog
+*The store where I did something very important: I bought a dog was closed today
+It has been said that Schubert ran out of the room when he met Beethoven; but we now know this is untrue
+An important question remains: did Beethoven know about Schubert's music
+She just wanted one thing: to be a professional skater
+She knew one thing: that she would be a professional skater
+I agree that, in some ways, your program is better
+I agree that in some ways, your program is better
+*I agree that, in some ways your program is better
+That is the man who, in Joe's opinion, we should hire
+*That is the man, in Joe's opinion, we should hire
+*That is the man who, in Joe's opinion we should hire
+I know you hate Bill, but why did you send him that nasty note
+*I know you hate Bill, because why did you send him that nasty note
+But why did you send him that nasty note
+If John was with Lisa last night, who went to the movie with Diane
+*Although John was with Lisa last night, who went to the movie with Diane
+We need a President who understands us
+We need a president who understands us
+*We need a Melvin who understand us
+The Zongle of Bongle Dongle resigned today
+% A Zongle with a bad haircut resigned today -- is valid.
+% A Zongle with a Mercedes Benz resigned today -- is valid.
+% *A Zongle with a Bongle Dongle resigned today
+The National Association of Linguists is meeting here
+
+% "An" appears in the dictionary as a female given name, thus allowing the
+% below to parse in a rather awkward manner.
+*An Association that many Linguists belong to is meeting here
+An association that many linguists belong to is meeting here
+If you were a middle-class American without a job, who would you vote for
+Many Croats who had fled their homes are now returning to them
+*Many Croat who had fled their homes are now returning to them
+Chinese is a wonderful language, Chinese food is nice, and the Chinese are nice people
+*Armenian is a wonderful language, Armenian food is great, and the Armenian are nice people
+Armenian is a wonderful language, Armenian food is great, and the Armenians are nice people
+Danish is a wonderful language, Danish food is great, and the Danish are nice people
+The Danes are nice people
+Dr Jane Smith lives on Main St
+Dr. Jane Smith lives on Main St.
+*Dr. Jane. Smith. lives on Main. St.
+Dr. J.G.D. Smith lives on Main St.
+*A Dr. lives on this St
+Mr. Smith (a lawyer for Kodak) refused to comment
+Mr. Smith -- a lawyer for Kodak -- refused to comment
+We left (carrying the dog) and Fred followed
+I have $50, but I want a $50000 car
+10% of the employees here do 90% of the work
+Zangbert stock fell 30% to $2.50 yesterday, but jumped 10% today in heavy trading
+*Zangbert stock fell %, but jumped to $ today
+With a 5% raise, I can get a $50000 car
+"What are you doing?" she asked.
+"This is what I'm going to do," he replied.
+"This is what I'm going to do!" he replied.
+*"This is what I'm going to do." he replied.
+*"This is what I'm doing to do" he replied.
+"On second thought," he said, "this is what I'm going to do".
+"Quotation marks" are simply "ignored" by our "program"
+Sometimes, people do this: They follow the colon with a capital letter.
+*However, they never do this; They don't follow a semi-colon with a capital letter.
+John said: "This is another use of colons one sometimes sees".
+Formerly, he had worked for Brody, McGill & Demson
+*He was unhappy & underpaid
+The rally, at 6:00 last night, was attended by 1.1 million people
+
diff --git a/grammar/link-grammar-4.7.9/data/en/4.0.biolg.batch b/grammar/link-grammar-4.7.9/data/en/4.0.biolg.batch
new file mode 100644
index 0000000..7cb48d4
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/en/4.0.biolg.batch
@@ -0,0 +1,411 @@
+!verbosity=1
+!echo
+!limit=1000
+!batch
+!short=20
+!constituents=1
+!spell=0
+
+%UNITS
+
+% Some basic cases
+The 50 kDa protein is examined
+The protein ( 50 kDa ) is examined
+The mass is 50 kDa
+A protein of 50 kDa is examined
+The rate is 10 nm per msec
+The rate is 10 nm per one msec of time
+The last 195 bp of the DNA are examined
+
+% These should work also if the tokens are "merges" of number and unit
+The 50-kDa protein is examined
+The 50kDa protein is examined
+The mass is 50kDa
+A protein of 50kDa is examined
+The rate is 10nm per msec
+The rate is 10nm per 1msec of time
+The last 195bp of the DNA are examined
+
+% A number derived units are also recognized
+The rate is 10 mg/sec
+The rate is 10 mol/day
+The rate is 10 micrograms/mouse/day
+
+% Units previously in the dictionary have not been modified, and are
+% not allowed all the necessary roles.
+The 10 foot distance is examined
+
+% The following dont work yet, and would require special ".p" definitions
+% of the units, similar to, for example, feet.p and seconds.p.
+% This would require an OD- connectors (see feet.p)
+It fell 10 nm
+% This would require an OT- connector (see seconds.p)
+It lasted 10 msec
+% This would require Yd+ (see feet.p)
+It happened 10 nm away
+% This would require Yt+ (see seconds.p)
+It happened 10 msec later
+% This would require EC+ to have the intended parse (compare feet.p)
+The 10 bp longer sequence is examined
+
+% This one doesn't work because of "leftmost"
+The leftmost 195 bp of the DNA are examined
+
+% NUMERIC RANGES
+
+The 50 to 100 kDa protein is examined
+Exons 40 to 50 were examined
+It was submitted in the period 1990 to 1995
+The range is 0 to 1
+The range is nine to twenty
+% ambiguities are mainly due to the bracketed part
+The production is low in rich media ( 50 to 300 LrpC molecules per cell )
+The enzyme has a weight of 125,000 to 130,000
+The domain ( residues 73 to 90 ) was shown
+The analysis revealed a transcript after 6 to 7.5 h
+CSF reached 50 to 100 nM
+A shift from 37 to 20 degrees C resulted in an increase
+An operon showed at 310 to 320 kb
+The sequence shows 28.2 to 34.6 % identities
+In the past 4 to 5 years results have advanced
+One is the region 1911 to 1917
+% unnecessary (?) ambiguity with the range linking to "are"
+The segment includes the pacL from which genes 1 to 7 are transcribed
+The gene 1 to 7 mRNA synthesis was reduced
+There are deviations of 2 to 3 A
+% the range should link to the verb with MVp (~ "north"): to much ambiguous ?
+These transcripts are located 5 to 3
+These transcripts are located 5' to 3'
+
+% Ranges with hyphens
+
+The 50 - 100 kDa protein is examined
+Exons 40 -- 50 were examined
+It was submitted in the period 1990 --- 1995
+
+% Cases with "from" (e.g. "from 10 to 20") (TODO):
+% shifts
+The number of repeats was increased from 7 to 11 .
+Experiments revealed an increase from 0 to 5 min postinduction
+The transfer of cells from 37 to 50 degrees C repressed synthesis .
+The concentration increased from 125 to 325 microgram per assay .
+% ranges
+We inserted sequences from 5 to 21 bp in length
+The start point ranged from 17 to 18 base pairs
+The promoter contained a sequence near the region ( from 60 to 73 % )
+A region extending from 183 to 118 base pairs was required
+
+% Cases with "between"
+Transcription sets in ( between 8 and 16 h of culture ) .
+The pH optimum is between 5 and 7
+concentrations were measured between 0 and 3 h after the beginning
+it shows activity at a temperature between 60 and 70 degrees C
+The activity is stable between pH 6 and 12
+
+% Numeric ranges with "merged" units (or "fold") also occur
+An 80 to 100-fold increase was observed
+Antigens ranged 82 to 90%
+
+% FOLD-WORDS
+
+This included an up to threefold increase
+There were increases in proteins, including actin (twofold to threefold)
+The association rate constant is also increased about 2-fold
+The affinity is approximately 30-fold weaker
+Leaves display a 2-fold accumulation
+This was about 10-fold higher
+% correct parse ranked second
+sigmaF was some twofold higher than sigmaE
+% does not parse
+It was two to threefold more abundant
+I found an at least twofold reduction
+It showed a fivefold anaerobic induction
+loci increased more than twofold
+% correct parse ranked fourth
+It corresponds to one- , two- and threefold phosphorilated proteins
+The structure shows a fold consisting of a beta-sheet
+
+% EQUATIONS ETC.
+
+non-denaturing gradient gel electrophoresis (r = 0.859) was used
+preparations of 5 x 10(8) cfu/ml are made
+phosphorylation was observed (P = 0.06)
+bacteria with low G + C DNA content contain genes
+the strength was in the order of gerE > cotD > yfhP P2 > yfhP P1
+delta binds RNAP with an affinity of 2.5 x 10(6) M-1
+
+% "x" between numbers denoting multiplication
+A single cell inside a pool of 5 x 10000 lymphocytes could be quantified
+A single cell inside a pool of 5 x 10(4) could be quantified
+
+% "Arrows"
+We consider the MPO --> PAG pathway
+Codon 311 (Cys --> Ser) polymorphism is associated with apolipoprotein E4
+
+% GREEK LETTERS
+minicells revealed the expression of both lambda and SPP1 genes
+We cloned a new gene encoding an alternative sigma factor
+The sigma factor sigma 35 of B. thuringiensis is homologous
+Each polymerase had a subunit composition analogous to beta beta2 alpha sigma delta omega 1 omega 2
+
+% SOME ADVERB CASES
+% compare
+patients are treated, therefore, even if they are negative
+patients are treated, however, even if they are negative
+% related?
+the results indicated, therefore, that it is required
+
+they prefer studies that are, however, open
+more importantly , they are open
+
+% i.e., e.g. and related
+they were not side-by-side (i.e., stacked)
+antagonists (e.g. WEB-2086) were examined
+receptors, e.g. GluR5 and GluR, have been examined
+there is genetic heterogeneity, i.e. there are several genes
+
+% UPSTREAM, DOWNSTREAM, 3', 5'
+The soil from the river banks is washed downstream.
+He was making his way upstream.
+The view is upstream and the discharge is about 5.0 m3/s.
+It will require more information from upstream.
+The inverted repeat is found upstream of the promoter.
+The promoter is located immediately upstream of ftsY.
+The cryIAb gene was located 3 kb upstream of its initiator codon.
+mphR is located downstream from mrx.
+These transcripts are oriented 5' to 3'
+
+% MISCELLANIA (commented out not to confuse)
+% the patient tested negative
+
+% "MADE OF" VARIANTS
+the protein films have a microstructure formed of woven sheaves
+The sheaves are composed of well-defined whisker crystallites
+Different conjugates, composed of a peptide carrier and a cytotoxic moiety, have been investigated
+A study was made of the stability
+a protein made of the luminal domain fused to the tail
+the intracellular pool of enzyme is formed of newly synthesized molecules
+
+% "DESIGNATED" ETC.
+Mice that express epitope tagged SF-1 are being used
+The method labelled FAXS is rapid
+
+% ATTACH TO
+Isolated eosinophils from healthy donors rapidly attach to ASMC
+Dystrophin can attach to the cytoskeleton
+
+% INVESTIGATED, EXAMINED WHETHER
+this study examined whether AQP1 is present in HPMC
+
+
+
+% from PASBio
+
+% abolish.01
+% MEDLINE No.1
+This mutation abolishes splicing
+% EMBO No.1 (passive)
+Transcription is completely abolished
+
+% alter.01
+% MEDLINE No.1
+Mutations alter splice sites
+% EMBO No.3
+Phosphorylation was not altered by treating the cells
+
+% begin.01 ("start existing")
+% EMBO No.1
+The density begins between amino acids 136 and 140
+
+% begin.02 ("start doing")
+% EMBO No.1
+The levels begin to return
+
+% block.01
+% MEDLINE No.1 ('the' was manually added to "step")
+Mutations block the step II
+% EMBO No.3 (passive)
+Labeling is blocked by pre-incubation
+
+% catalyse.01, ("catalyze") is unknown
+% EMBO No.2
+enzymes catalyze the unwinding
+% MEDLINE No.1 (passive)
+The metabolism is most likely catalysed by P450
+
+% confer.01
+% MEDLINE No.2
+The variant does not confer a risk
+% EMBO No.1 (passive)
+The phenotype can be conferred by replacing the C-terminus with Stat5
+
+% decrease.01
+% MEDLINE No.1
+Treatment decreased synthesis
+% EMBO No.2 (passive)
+The protection is decreased
+
+% delete.01
+% MEDLINE No.1
+Transcripts delete exons
+% EMBO No.4 (passive)
+the binding was deleted
+
+% develop.01
+% MEDLINE No.1 ('a' was manually added to "deficiency")
+The son developed a deficiency
+
+% disrupt.01
+% MEDLINE No.1
+A mutation disrupted a sequence
+
+% eliminate.01
+% MEDLINE No.1
+Deletion would eliminate a residue within a domain
+% EMBO No.4 (passive)
+All three sites are eliminated
+
+% encode.01
+% MEDLINE No.1
+Supt4h2 encodes a protein
+% EMBO No.1
+SBP2 may be encoded by three transcripts
+
+% express.01
+% MEDLINE No.1 (passive) ('the' was manually added to "brain")
+The enzyme was expressed exclusively in the brain
+% MEDLINE No.7
+Retroelements express Pol
+
+% generate.01
+% MEDLINE No.1
+Prnd generates transcripts
+% MEDLINE No.7
+Molecules are generated by an alternative splicing
+
+% inhibit.01 MEDLINE No.1
+This peptide inhibited binding
+% inhibit.01 MEDLINE No.2 (passive)
+Isoforms are inhibited by rolipram
+
+% initiate.01 MEDLINE No.1 (?)
+Tumours had altered mRNAs , initiated within intron 1
+% initiate.01 MEDLINE No.2
+Cells initiate transcription at multiple sites
+% initiate.01 MEDLINE No.3 (intransitive)
+Translation initiates from an internal codon
+
+% lead.01 MEDLINE No.1
+A mutation leads to ligation
+% lead.01 ? (passive)
+
+% lose.01 MEDLINE No.1
+A variant which lost a site has been characterized
+% lose.01 EMBO No.3 (passive)
+Anchoring ability was lost
+
+% modify.01 MEDLINE No.1 (passive)
+Genes were modified
+% modify.01 EMBO No.2
+Factors that can modify the binding may regulate binding
+
+% mutate.01 MEDLINE No.1 (adj?)
+% [there may be a problem here with "deficiency"]
+The mutated allele resulted in deficiency
+% mutate.01 MEDLINE No.2 (passive participle postmodifier)
+The gene mutated in mice encodes a protein
+% mutate.01 EMBO No.4
+The fragments were mutated by the sequence
+% mutate.01 ? (active)
+
+% proliferate.01 MEDLINE No.1
+Cells are characterized by an ability to proliferate
+% proliferate.01 MEDLINE No.2
+Cells proliferate
+% proliferate.01 ? (passive)
+
+% recognize.01 MEDLINE No.1 (passive participle postmodifier)
+The protein would lack epitopes recognized by the serum
+% recognize.01 MEDLINE No.3
+A number recognized by cells have been isolated
+% recognize.01 MEDLINE No.5
+Antibodies recognize specifically a polypeptide
+
+% result.01 MEDLINE No.1
+We report the existence of isoforms which result from splicing
+% result.01 MEDLINE No.2
+Both mutations result in high proportions of mRNAs
+% result.01 ? (passive)
+
+% skip.01 MEDLINE No.1
+sequencing revealed a mutation, which skipped exon 3
+% skip.01 MEDLINE No.2
+An exon can be skipped by splicing
+
+% splice.01 MEDLINE No.1
+exon 30 is spliced together with the intron
+% splice.01 PNAS No.4
+3I spliced 20% as efficiently as 3F
+% splice.01 PNAS No.4 (oversimplified?)
+3I spliced
+
+% splice.02 MEDLINE No.1
+CD1c has a form that is thought to be spliced out
+% splice.02 MEDLINE No.2
+One exon is spliced out of the transcript
+% splice.02 MEDLINE No.9
+Exon 16 can be spliced out
+
+% transcribe.01 MEDLINE No.1
+The gene is transcribed
+% transcribe.01 MEDLINE No.2
+KLK41 transcribes two alternative transcripts
+
+% transform.01 MEDLINE No.1
+FGF8b can transform the midbrain into a cerebellum fate
+% transform.01 MEDLINE No.3
+Phospholipase D is known to transform cells into tumorigenic forms
+
+% transform.02 MEDLINE No.1
+The DNA was used to transform E. coli
+
+% translate.01 MEDLINE No.1
+Splicing results in a transcript which would be translated into a protein
+% translate.01 EMBO No.1
+Stat1 was translated
+% translate.01 EMBO No.2 (oversimplified? slightly modified)
+Stat1 translated can become a dimer
+
+% translate.02 MEDLINE No.1
+This review examines technologies that can be used to translate information
+% translate.02 MEDLINE No.3
+Acj6 translates information into specificity
+
+% translate.03 MEDLINE No.1
+The functions translate into modulations
+
+% truncate.01 MEDLINE No.1
+Changes were predicted to truncate the protein
+% truncate.01 MEDLINE No.2
+The domains were truncated
+
+% verbs taking particles
+The recombinant plasmid was screened out
+The adenine bulge is looped out
+A monomer is built up of strands
+
+% "in gel"
+% should have been in-gel to be grammatical -- could a spell cheker guess this?
+They were measured by in gel kinase assays
+
+
+% IMPORTANT: CAPITALIZED-WORDS SHOULD ALLOW "that" ETC. (<noun-sub-s> missing)
+it encodes a GPCR that is homologous to the chemokine
+% compare
+it encodes a gPCR that is homologous to the chemokine
+
+% "ORDERED" as an adjective
+The complex plays a role in the construction of ordered multicellular structures
+
+% CONCENTRATED as an adjective
+the genes were most concentrated in the cell
diff --git a/grammar/link-grammar-4.7.9/data/en/4.0.constituent-knowledge b/grammar/link-grammar-4.7.9/data/en/4.0.constituent-knowledge
new file mode 100644
index 0000000..b0b5f30
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/en/4.0.constituent-knowledge
@@ -0,0 +1,127 @@
+DOMAIN_STARTER_LINKS: S##* S##i SF SX Ce* Cet RS O OX Js Jp J* MVp Mp R* Rn Pa TH Pg Pv I PP Cr
+Cs MX#* Wc Wd Wi
+TI BIt MVs TO Mv Mg* MVa OF ON IN QI Ma CP* CPi CPx MVt S##w MX#r Pp MVi MVg Mgp MVx SI MX#p Cc
+S##t S##h S##b S##q L MX#a MG JG MX#x U S##d JT MVh Mr B#w B#d MVb COq Mj OD CX S##g PF Zc MX#d Bc
+K NIax
+
+DOMAIN_CONTAINS_LINKS:
+
+URFL_ONLY_DOMAIN_STARTER_LINKS:
+
+LEFT_DOMAIN_STARTER_LINKS: A EA E CO#s CO* COd* YS YP Yt Yd GN DTie CO#n COp D##n ND
+
+STARTING_LINK_TYPE_TABLE:
+S##* v
+S##i v
+S##t v
+S##h v
+S##b v
+S##q v
+S##d z
+S##g v
+SF v
+SX v
+Wd s
+Wc s
+Wi z
+Ce* s
+Cet s
+TH b
+RS z
+O n
+OX n
+Js n
+Jp n
+J* n
+MVp p
+Mp p
+R* b
+Rn s
+Pa a
+A u
+Pg v
+Pv v
+I v
+PP v
+Cr s
+Cs s
+MX#* n
+TI n
+BIt n
+MVs b
+EA e
+E e
+TO t
+MVi t
+Mv v
+Mg* v
+CO#s f
+CO* g
+COd* g
+CO#n g
+MVa i
+MVb i
+OF p
+YS y
+YP y
+IN n
+ON n
+QI b
+Ma a
+CP* s
+CPi s
+CPx q
+MVt p
+MX#r b
+S##w z
+Pp p
+MVg z
+Mgp z
+MVx p
+SI n
+MX#p v
+Cc s
+L a
+MX#a a
+Yt y
+Yd y
+MG p
+JG n
+GN y
+MX#x p
+U n
+JT n
+MVh b
+Mr b
+MX#d b
+B#w s
+B#d s
+DTie e
+COq s
+Mj b
+OD n
+CX s
+COp c
+PF v
+Zc s
+Bc s
+K k
+D##n d
+ND d
+NIax h
+
+; ----------------------------------------------------------------------
+; These links are not put in the word/link graph. They also cannot be the
+; starter links for a domain.
+
+IGNORE_THESE_LINKS: Xca HA
+
+
+
+; ----------------------------------------------------------------------
+; these links are not traced further if they point back before the root word
+
+RESTRICTED_LINKS:
+ B#* D##w B#w B#d AFh MVt Xx HL SFsic AFd Bc CX EAh
+ H HA PFc B#j Wd PF Z BW
+
diff --git a/grammar/link-grammar-4.7.9/data/en/4.0.dict b/grammar/link-grammar-4.7.9/data/en/4.0.dict
new file mode 100644
index 0000000..0032414
--- /dev/null
+++ b/grammar/link-grammar-4.7.9/data/en/4.0.dict
@@ -0,0 +1,9995 @@
+
+ %***************************************************************************%
+ % %
+ % Copyright (C) 1991-1998 Daniel Sleator and Davy Temperley %
+ % Copyright (c) 2003 Peter Szolovits and MIT. %
+ % Copyright (c) 2008-2012 Linas Vepstas %
+ % %
+ % See file "README" for information about commercial use of this system %
+ % %
+ %***************************************************************************%
+
+% Dictionary version number is 4.7.9 (formatted as V4v7v9+)
+<dictionary-version-number>: V4v7v9+;
+
+ % _ORGANIZATION OF THE DICTIONARY_
+ %
+ % I. NOUNS
+ % II. PRONOUNS
+ % III. DETERMINERS
+ % IV. NUMERICAL EXPRESSIONS
+ % V. VERBS
+ % A. Auxiliaries; B. Common verb types; C. complex intransitive verbs;
+ % D. complex intransitive verbs; E. complex verbs taking [obj] +
+ % [complement]; F. idiomatic verbs
+ % VI. PREPOSITIONS
+ % VII. TIME AND PLACE EXPRESSIONS
+ % VIII. QUESTION-WORDS AND CONJUNCTIONS
+ % IX. ADJECTIVES
+ % X. COMPARATIVES AND SUPERLATIVES
+ % XI. ADVERBS
+ % A. Mainly adjectival; B. Mainly post-verbal; C. Post-verbal/pre-verbal;
+ % D. Post-verbal/pre-verbal/openers; E. Post-verbal/openers;
+ % F. Pre-verbal/openers
+ % XII. MISCELLANEOUS WORDS AND PUNCTUATION
+ %
+ %
+ % TODO:
+ % To-do: many verb simple past-tense forms include ({@E-} & A+) to
+ % make them adjective-like. Strictly speaking, these should probably
+ % copied into words.adj.1 and treated like common adjectives, right?
+ %
+ % Many nouns in words.n.4 are treated as "mass or count". The side
+ % effect is that mass nouns are inconsistently treated as sometimes
+ % singular, sometimes plural. e.g. words.n.3 gets <noun-sub-s> &
+ % <noun-main-m>. This is a kind-of ugly tangle, it should really
+ % be sorted out so that links are properly marks as s, p or m.
+ % This is mostly fixed, except that some uses of <noun-main-m>
+ % remain, below.
+
+% Null links. These are used to drop the requirement for certain words
+% to appear during parsing. Basically, if a parse fails at a given cost,
+% it is retried at a higher cost (by raising the disjunct_cost).
+% Currently, two different nulls are defined: a regular null, and a
+% costly null. The regular null is used to make determiners optional;
+% this allows for the parsing of newspaper headlines and clipped
+% technical speech (e.g. medical, engineering, where determiners are
+% often dropped). The costly-null is used during panic parsing.
+% Currently, both have the same cost: using a less cotly null results
+% in too many sentences being parsed incorrectly.
+
+<null>: [[[()]]];
+<costly-null>: [[[()]]];
+
+% NOUNS
+
+% The marker-entity is used to identify identity names.
+% The marker-common-entity is used to identify all common nouns
+% and adjectives that might appear in entity names:
+% e.g. "Great Southern Federal Bank and Railroad" or "Aluminum Bahrain"
+% These markers are used in the Java interfaces, to help identify entities.
+<marker-entity>: XXXENTITY+;
+<marker-common-entity>: XXXGIVEN+;
+
+% The RJ links connect to "and"; the l,r prevent cross-linking
+<clause-conjoin>: RJrc- or RJlc+;
+
+<CLAUSE>: {({@COd-} & (C- or <clause-conjoin>)) or ({@CO-} & (Wd- & {CC+})) or [Rn-]};
+
+<S-CLAUSE>: {({@COd-} & (C- or <clause-conjoin>)) or ({@CO-} & (Wd- & {CC+}))};
+
+<CLAUSE-E>: {({@COd-} & (C- or <clause-conjoin>)) or ({@CO-} & (Wd- or {CC+})) or Re-};
+
+% Post-nominal qualifiers, complete with commas, etc.
+<post-nominal-x>:
+ ({[B*j+]} & Xd- & (Xc+ or <costly-null>) & MX-);
+
+<post-nominal-s>:
+ ({[Bsj+]} & Xd- & (Xc+ or <costly-null>) & MX-);
+
+<post-nominal-p>:
+ ({[Bpj+]} & Xd- & (Xc+ or <costly-null>) & MX-);
+
+<post-nominal-u>:
+ ({[Buj+]} & Xd- & (Xc+ or <costly-null>) & MX-);
+
+% noun-main-x -- singular or plural or mass.
+<noun-main-x>:
+ (S+ & <CLAUSE>) or SI- or J- or O- or
+ <post-nominal-x> or
+ <costly-null>;
+
+% noun-main-s -- singular
+<noun-main-s>:
+ (Ss+ & <CLAUSE>) or SIs- or Js- or Os- or
+ <post-nominal-s> or
+ <costly-null>;
+
+% noun-main-p -- plural
+<noun-main-p>:
+ (Sp+ & <CLAUSE>) or SIp- or Jp-
+ or Op-
+ or <post-nominal-p>
+ or <costly-null>;
+
+% noun-main-u -- u == uncountable
+% TODO: alter this to use Su+, SIu- someday. likewise Buj+
+% Doing this requires adding Su- links to many entries
+<noun-main-u>:
+ (Ss+ & <CLAUSE>) or SIs- or Ju- or Ou- or
+ <post-nominal-s> or
+ <costly-null>;
+
+% noun-main-m -- m == mass
+% TODO: get rid of this someday.
+% To get rid of this, any noun that uses this needs to be split into
+% two: the countable form, which will used <noun-main-s> and the
+% uncountable form, which will use <noun-main-u>
+<noun-main-m>:
+ (Ss+ & <CLAUSE>) or SIs- or Jp- or Os- or
+ <post-nominal-s> or
+ <costly-null>;
+
+% used only for this, that.
+% (Jd- & Dmu- & Os-): they have plenty of this
+% (Jd- & Dmu- & {Wd-} & Ss+): "not enough of this was used"
+% XXX -- is Js- ever really needed?
+<noun-main-h>:
+ (Jd- & Dmu- & Os-)
+ or (Jd- & Dmu- & {Wd-} & Ss*b+)
+ or (Ss*b+ & <CLAUSE>) or SIs*b- or [[Js-]] or [Os-]
+ or <post-nominal-x>
+ or <costly-null>;
+
+<noun-main2-x>:
+ J- or O- or
+ <post-nominal-x> or
+ <costly-null>;
+
+<noun-main2-s>:
+ Js- or Os- or
+ <post-nominal-s> or
+ <costly-null>;
+
+% Xd- or [[()]] allows parsing of "I have no idea what that is."
+% without requiring comma after "idea"
+<noun-main2-s-no-punc>:
+ Js- or Os- or
+ ({[Bsj+]} & (Xd- or [[()]]) & (Xc+ or <costly-null>) & MX-) or
+ <costly-null>;
+
+<noun-main2-p>:
+ Jp- or Op- or
+ <post-nominal-p> or
+ <costly-null>;
+
+<noun-main2-m>:
+ Jp- or Os- or
+ <post-nominal-s> or
+ <costly-null>;
+
+% @M+: "The disability of John means he is slow"
+<noun-sub-x>: {@M+} & {R+ & B+ & {[[@M+]]}} & {@MX+};
+<noun-sub-s>: {@M+} & {R+ & Bs+ & {[[@M+]]}} & {@MXs+};
+<noun-sub-p>: {@M+} & {R+ & Bp+ & {[[@M+]]}} & {@MXp+};
+
+<noun-modifiers>: {@AN-} & {@A- & {[[@AN-]]}};
+
+% conjoined nouns or noun-phrases.
+% The l and r prevent two nouns from hooking up directly, they
+% must hook up to a conjunction (and, or) in the middle.
+% SJl == connect to left
+% SJr == connect to right
+% SJn == Neither ... nor pass-through
+% SJ*s == singular
+% SJ*p == plural
+% SJ*u == mass
+%
+% M+: "gloom of night and heat will not stop me"
+% The "of night" can connect to the left noun, but rarely to the right noun
+% because it should then connect to the "and", not the right noun.
+% but then: "neither heat nor gloom of night shall stop me"
+% Looks like only a proper semantic decision can determine the correct parse here ...
+%
+% Add cost to M+, so that "a number of recommendations and suggestions"
+% gts priority in modifying the and.j-n
+<noun-and-s>: ({@M+} & SJls+) or ({[@M+]} & SJrs-) or (Dn- & SJn+);
+<noun-and-p>: ({[@M+]} & SJlp+) or ({[[@M+]]} & SJrp-) or (Dn- & SJn+);
+<noun-and-u>: ({[@M+]} & SJlu+) or ({[[@M+]]} & SJru-) or (Dn- & SJn+);
+<noun-and-x>: ({[@M+]} & SJl+) or ({[[@M+]]} & SJr-) or (Dn- & SJn+);
+<noun-and-p,u>:
+ ({[@M+]} & SJlp+) or ({[[@M+]]} & SJrp-) or
+ ({[@M+]} & SJlu+) or ({[[@M+]]} & SJru-) or (Dn- & SJn+);
+
+<rel-clause-x>: {Rw+} & B*m+;
+<rel-clause-s>: {Rw+} & Bsm+;
+<rel-clause-p>: {Rw+} & Bpm+;
+
+% The use of COa here needs to be carefully rexamined; it is used much too freely.
+<directive-opener>:
+ {[[Wi-]]} &
+ ((Xc+ & Ic+) or
+ ({Xd-} & (Xc+ or [[()]]) & [[COa+]]));
+
+% Just pure singular entities, no mass nouns
+% The CAPITALIZED-WORDS rule is triggered by regex matching, and
+% applies to all capitalized words that are not otherwise found in
+% the dictionary.
+% ({[[@MX+]]} & AN+) comes from postposed modifiers:
+% "Codon 311 (Cys --> Ser) polymorphism"
+%
+% We do NOT tag these with <marker-entity>, a this messes up first-word
+% processing in tokenize.c. So for example, we do *not* want "There"
+% in "There they are" tagged as an entity, just because its capitalized.
+% We really do want to force the lower-case usage, because the lower case
+% is in the dict, and its the right word to use. (The only entities that
+% should be tagged as such are those that are in the dicts, in thier
+% capitalized form, e.g. "Sue.f" female given name as opposed to "sue.v"
+% verb in the sentence "Sue went to the store.")
+%
+% To help discourage capitalized use when the lower-case is in the dict,
+% we give a slight cost to [<noun-sub-s> & (JG- or <noun-main-s>)] to
+% discourage use as a common noun, so that the lower-case version can
+% play this role.
+%
+% MX+ & <noun-main-s>: country names: "...went to Paris, France"
+%
+CAPITALIZED-WORDS INITIALS NAME <entity-singular>:
+ ({NM+} & ({G-} & {[MG+]} &
+ (({DG- or [[GN-]] or [[@A- & @AN-]] or [[{@A-} & {D-}]] or ({@A-} & Jd- & Dmc-)} &
+ ([<noun-sub-s> & (JG- or <noun-main-s>)] or
+ <noun-and-s> or
+ YS+)) or
+ ({[[@MX+]]} & AN+) or G+))) or
+ (MXs+ & (<noun-main-s> or <noun-and-s>)) or
+ <directive-opener>;
+
+% Capitalized words that seem to be plural (by ending with an s, etc)
+% -- But not all words that end with an 's' are plural:
+% e.g. Cornwallis ... and some of these can take a singular determiner:
+% "a Starbucks"
+PL-CAPITALIZED-WORDS:
+ ({NM+} & {G-} & {[MG+]} &
+ (({DG- or [[GN-]] or [[{@A-} & ({Dmc-} or {Ds-})]] or ({@A-} & Jd- & Dmc-) } &
+ ([<noun-sub-x> & (JG- or <noun-main-x>)] or
+ <noun-and-x> or
+ YS+ or
+ YP+)) or
+ AN+ or
+ G+)) or
+ <directive-opener>;
+
+% capitalized words ending in s
+% -- hmm .. proper names not used anywhere right now, has slot for plural ... !!??
+<proper-names>:
+({G-} & {[MG+]} & (({DG- or [[GN-]] or [[{@A-} & {D-}]]} &
+(({@MX+} & (JG- or <noun-main-s>)) or (YS+ or YP+))) or AN+ or G+));
+
+% "Tom" is a given name, but can also be a proper name, so e.g.
+% "The late Mr. Tom will be missed." which needs A-, D- links
+<given-names>:
+ {G-} & {[MG+]} &
+ (({DG- or [[GN-]] or [[{@A-} & {D-}]]} &
+ (({@MX+} & {NMr+} & (JG- or <noun-main-s> or <noun-and-s>)) or
+ YS+ or YP+)) or
+ AN+ or
+ G+);
+
+% Whole, entire entities, cannot participate in G links
+% because the entire entity has already been identified.
+<entity-entire>:
+ ({DG- or [[GN-]] or [[{@A-} & {D-}]]} &
+ (({@MX+} & <noun-main-s>) or <noun-and-s> or YS+)) or
+ AN+;
+
+personID0 personID1 personID2 personID3 personID4 personID5 personID6 personID7 personID8 personID9
+personID10 personID11 personID12 personID13 personID14 personID15 personID16 personID17 personID18 personID19
+personID20 personID21 personID22 personID23 personID24 personID25 personID26 personID27 personID28 personID29
+personID30 personID31 personID32 personID33 personID34 personID35 personID36 personID37 personID38 personID39
+personID40 personID41 personID42 personID43 personID44 personID45 personID46 personID47 personID48 personID49
+personID50 personID51 personID52 personID53 personID54 personID55 personID56 personID57 personID58 personID59
+personID60: <marker-entity> or <entity-entire>;
+
+organizationID0 organizationID1 organizationID2 organizationID3 organizationID4 organizationID5 organizationID6 organizationID7 organizationID8 organizationID9
+organizationID10 organizationID11 organizationID12 organizationID13 organizationID14 organizationID15 organizationID16 organizationID17 organizationID18 organizationID19
+organizationID20 organizationID21 organizationID22 organizationID23 organizationID24 organizationID25 organizationID26 organizationID27 organizationID28 organizationID29
+organizationID30 organizationID31 organizationID32 organizationID33 organizationID34 organizationID35 organizationID36 organizationID37 organizationID38 organizationID39
+organizationID40 organizationID41 organizationID42 organizationID43 organizationID44 organizationID45 organizationID46 organizationID47 organizationID48 organizationID49
+organizationID50 organizationID51 organizationID52 organizationID53 organizationID54 organizationID55 organizationID56 organizationID57 organizationID58 organizationID59
+organizationID60: <marker-entity> or <entity-entire>;
+
+locationID0 locationID1 locationID2 locationID3 locationID4 locationID5 locationID6 locationID7 locationID8 locationID9
+locationID10 locationID11 locationID12 locationID13 locationID14 locationID15 locationID16 locationID17 locationID18 locationID19
+locationID20 locationID21 locationID22 locationID23 locationID24 locationID25 locationID26 locationID27 locationID28 locationID29
+locationID30 locationID31 locationID32 locationID33 locationID34 locationID35 locationID36 locationID37 locationID38 locationID39
+locationID40 locationID41 locationID42 locationID43 locationID44 locationID45 locationID46 locationID47 locationID48 locationID49
+locationID50 locationID51 locationID52 locationID53 locationID54 locationID55 locationID56 locationID57 locationID58 locationID59
+locationID60: <marker-entity> or <entity-entire>;
+
+% Words that are also given names
+% Cannot take A or D links.
+% Art Bell Bill Bob Buck Bud
+%
+% The bisex dict includes names that can be given to both
+% men and women.
+/en/words/entities.given-bisex.sing
+/en/words/entities.given-female.sing
+/en/words/entities.given-male.sing:
+ <marker-entity> or <given-names> or <directive-opener>;
+
+% Special handling for certain given names. These are words that have a
+% lower-case analog in the dictionary, and are also used in upper-case
+% form in an "idiomatic name" e.g. Vatican_City. Without the below,
+% this use of "City" would prevent it from being recognized in other
+% (non-idiomatic) proper name constructions, e.g. New York City.
+/en/words/entities.organizations.sing:
+ <marker-entity> or <entity-singular>;
+
+/en/words/entities.locations.sing:
+ <marker-entity> or <entity-singular>;
+
+%
+% entity IDs (mirror Capitalized-words - a mix of plural and singular)
+<entity-id>:
+ ({DG- or [[GN-]] or [[{@A-} & {D-}]]} &
+ (({@MX+} & <noun-main-x>) or <noun-and-x> or YS+ or YP+)) or AN+;
+
+entityID0 entityID1 entityID2 entityID3 entityID4 entityID5 entityID6 entityID7 entityID8 entityID9
+entityID10 entityID11 entityID12 entityID13 entityID14 entityID15 entityID16 entityID17 entityID18 entityID19
+entityID20 entityID21 entityID22 entityID23 entityID24 entityID25 entityID26 entityID27 entityID28 entityID29
+entityID30 entityID31 entityID32 entityID33 entityID34 entityID35 entityID36 entityID37 entityID38 entityID39
+entityID40 entityID41 entityID42 entityID43 entityID44 entityID45 entityID46 entityID47 entityID48 entityID49
+entityID50 entityID51 entityID52 entityID53 entityID54 entityID55 entityID56 entityID57 entityID58 entityID59
+entityID60: <marker-entity> or <entity-id>;
+
+% words.n.4: nouns that can be mass or countable
+% allocation.n allotment.n alloy.n allure.n alteration.n alternation.n
+% piano.n flute.n belong here, because of "He plays piano"
+%
+% This class has now been eliminated: nouns are either singular, plural
+% or mass. If they can be more than one, then they are listed separately
+% in each class e.g. words.n.1 and/or words.n.2 and/or words.n.3, etc.
+% (Only a few screwball exceptions below; should be fixed ...)
+<noun-mass-count>:
+ <noun-modifiers> &
+ (({NM+} & AN+)
+ or ({NM+ or ({Jd-} & D*u-)} & <noun-sub-s> & (<noun-main-m> or <rel-clause-s>))
+ or ({NM+ or ({Jd-} & D*u-)} & <noun-and-p,u>)
+ or (YS+ & {D*u-})
+ or (GN+ & (DD- or [()]))
+ or Us-);
+
+GREEK-LETTER-AND-NUMBER pH.i x.n: <noun-mass-count>;
+
+% Same as pattern used in words.n.4 -- mass nouns or countable nouns
+<generic-singular-id>: <noun-mass-count>;
+
+% Pattern used for words.n.2.s
+% Similar to <common-noun>, but with different determiners for number
+% agreement.
+% ({{Dmc-} & Jd-} & Dmc-) : "I gave him a number of the cookies"
+% want "Dmc-" on both to avoid "this cookies"
+
+<generic-plural-id>:
+ <noun-modifiers> &
+ ([[AN+]]
+ or ({NM+ or ({{Dmc-} & Jd-} & Dmc-)} &
+ <noun-sub-p> & (<noun-main-p> or <rel-clause-p>))
+ or ({NM+ or Dmc-} & <noun-and-p>)
+ or SJrp-
+ or (YP+ & {Dmc-})
+ or (GN+ & (DD- or [()]))
+ or Up-);
+
+genericID0 genericID1 genericID2 genericID3 genericID4 genericID5 genericID6 genericID7 genericID8 genericID9
+genericID10 genericID11 genericID12 genericID13 genericID14 genericID15 genericID16 genericID17 genericID18 genericID19
+genericID20 genericID21 genericID22 genericID23 genericID24 genericID25 genericID26 genericID27 genericID28 genericID29
+genericID30 genericID31 genericID32 genericID33 genericID34 genericID35 genericID36 genericID37 genericID38 genericID39
+genericID40 genericID41 genericID42 genericID43 genericID44 genericID45 genericID46 genericID47 genericID48 genericID49
+genericID50 genericID51 genericID52 genericID53 genericID54 genericID55 genericID56 genericID57 genericID58 genericID59
+genericID60: <marker-entity> or <generic-singular-id> or <generic-plural-id>;
+
+%from words.y year numbers
+<date-id>:
+ NMd-
+ or ({EN-} & (NIfn+ or NItn-))
+ or NN+
+ or AN+
+ or ((Xd- & TY- & Xc+) or TY-)
+ or ({EN- or NIc-}
+ & (ND+
+ or OD-
+ or ({{@L+} & DD-}
+ & ([[Dmcn+]]
+ or ((<noun-sub-x> or TA-) & (JT- or IN- or [[<noun-main-x>]]))))));
+
+dateID0 dateID1 dateID2 dateID3 dateID4 dateID5 dateID6 dateID7 dateID8 dateID9
+dateID10 dateID11 dateID12 dateID13 dateID14 dateID15 dateID16 dateID17 dateID18 dateID19
+dateID20 dateID21 dateID22 dateID23 dateID24 dateID25 dateID26 dateID27 dateID28 dateID29
+dateID30 dateID31 dateID32 dateID33 dateID34 dateID35 dateID36 dateID37 dateID38 dateID39
+dateID40 dateID41 dateID42 dateID43 dateID44 dateID45 dateID46 dateID47 dateID48 dateID49
+dateID50 dateID51 dateID52 dateID53 dateID54 dateID55 dateID56 dateID57 dateID58 dateID59
+dateID60: <date-id>;
+
+% Number abbreviations: no.x No.x
+No.x No..x no.x no..x Num.x Num..x num.x num..x:
+ (Xi+ or [[()]]) & AN+;
+
+% Explicitly include the period at the end of the abbreviation.
+Ms..x Mrs..x Mr..x Messrs..x Rev..x Dr..x Prof..x Atty..x
+Gov..x Sen..x Rep..x
+Gen..x Brig..x Col..x Capt..x Lieut..x Lt..x Maj..x Sgt..x Pvt..x Cmdr..x
+Adm..x Corp..x St..x Mt..x Ft..x Cie..x HMS..x:
+ G+;
+
+% Period is missing in the abbreviation! Accept, but with a cost.
+Ms.x Mrs.x Mr.x Messrs.x Rev.x Sir.x Dr.x Prof.x Atty.x
+Gov.x Sen.x Rep.x
+Gen.x Brig.x Col.x Capt.x Lieut.x Lt.x Maj.x Sgt.x Pvt.x Cmdr.x
+Adm.x Corp.x St.x Mt.x Ft.x Cie.x HMS.x:
+ [[G+]];
+
+St.y St..y Ave.y Ave..y Av.y Av..y Pl.y Pl..y Ct.y Ct..y Dr.y Dr..y
+Gr.y Gr..y Rd.y Rd..y Blvd.y Blvd..y Pkwy.y Pkwy..y Hwy.y Hwy..y
+AG.y Assn.y Assn..y
+Corp.y Corp..y Co.y Co..y Inc.y Inc..y PLC.y
+Pty.y Pty..y Ltd.y Ltd..y LTD.y Bldg.y Bldg..y and_Co GmBH.y:
+ ({[X-]} & G-) & {Xi+} & {[MG+]} &
+ (({DG- or [[GN-]] or [[{@A-} & {D-}]]} &
+ (({@MX+} & (JG- or <noun-main-s>)) or
+ <noun-and-s> or
+ YS+ or
+ YP+)) or
+ AN+ or
+ G+);
+
+
+% e.g. Joe Blow, Esq. or Dr. Smarty Pants, Ph.D.
+% Gack. See absurdely large collection at:
+% http://en.wikipedia.org/wiki/List_of_post-nominal_letters
+Jr.y Jr..y Sr.y Sr..y Esq.y Esq..y
+AB.y A.B..y AIA.y A.I.A..y
+BA.y B.A..y BFA.y B.F.A..y BS.y B.S..y BSc.y B.Sc..y
+CEng.y CEng..y CFA.y CPA.y CPL.y CSV.y
+DD.y D.D..y DDS.y D.D.S..y DO.y D.O..y D.Phil..y D.P.T..y
+Eng.D..y
+JD.y J.D..y KBE.y K.B.E..y LLD.y LL.D..y
+MA.y M.A..y MBA.y M.B.A..y MD.y M.D.y MFA.y M.F.A..y
+MS.y M.S..y MSc.y M.Sc..y
+OFM.y
+PE.y P.E..y Pfc.y Pharm.D..y
+PhD.y Ph.D.y Ph.D..y
+RA.y R.A..y RIBA.y R.I.B.A..y RN.y R.N..y Sgt.y
+USMC.y USN.y:
+ {Xi+} & {Xd- & {Xc+}} & G- & {[MG+]} &
+ (({DG- or [[GN-]] or [[{@A-} & {D-}]]} &
+ (({@MX+} & (JG- or <noun-main-s>)) or
+ <noun-and-s> or
+ YS+ or
+ YP+)) or
+ AN+ or
+ G+);
+
+% The generic category for strings containing a hyphen
+HYPHENATED-WORDS.n:
+ [[({@AN-} & {@A-} &
+ (({NM+ or D-} &
+ ((<noun-sub-x> & (<noun-main-x> or <rel-clause-x>)) or
+ <noun-and-x>)) or
+ U-)) or
+ ((YS+ or YP+) & {@AN-} & {@A-} & {D-})]];
+
+% NOUNS --------------------------------------------------------
+% Nouns typically take determiners (a, the). The minor flags are:
+% D link: determiners: D1234
+% position 1 can be s, m for singular, mass
+% position 2 can be c for count, u for uncountable
+% position 3 can be k,m,y for comparatives, w for questions.
+
+% words.n.1: Common nouns
+% activist.n actor.n actress.n actuary.n ad.n adage.n adagio.n adapter.n
+% The naked SJr- allows article to be skipped in conjunction (and,or)
+% constructions ("the hammer and sickle")
+<common-noun>:
+ <noun-modifiers> &
+ (AN+
+ or ((NM+ or ({[NM+]} & (Ds- or <null>)))
+ & ((<noun-sub-s> & (<noun-main-s> or <rel-clause-s>))
+ or <noun-and-s>))
+ or SJrs-
+ or (YS+ & Ds-)
+ or (GN+ & (DD- or [()]))
+ or Us-);
+
+/en/words/words.n.1
+/en/words/words.n.1.wiki :
+ <marker-common-entity> or <common-noun>;
+
+% Common plural nouns ending in "s"
+% allocations.n allotments.n allowances.n alloys.n allures.n allusions.n
+/en/words/words.n.2.s
+/en/words/words.n.2.s.wiki :
+ <marker-common-entity> or <generic-plural-id>;
+
+/en/words/words.n.2.s.biolg: <generic-plural-id>;
+PL-GREEK-LETTER-AND-NUMBER: <generic-plural-id>;
+
+% plural nouns not ending in "s"
+% almost exactly identical to <generic-plural-id> except that there is
+% a YS+ instead of a YP+, uses a <noun-and-s> instead of <noun-and-p>
+%
+% {Jd-}: allows a "a flock of birds" to act as determiner.
+%
+% aircraft.p bacteria.p bellmen.n buffalo.p businessmen.n chairmen.n
+/en/words/words.n.2.x
+/en/words/words.n.2.x.wiki :
+ <marker-common-entity> or
+ (<noun-modifiers> &
+ ([[AN+]]
+ or ({NM+ or ({Jd-} & Dmc-)} &
+ ((<noun-sub-p> & (<noun-main-p> or <rel-clause-p>)) or <noun-and-s>))
+ or (YS+ & {Dmc-})
+ or (GN+ & (DD- or [()]))
+ or Up-));
+
+% XXX should probably eliminate <noun-and-p,u> and replace by <noun-and-u>
+% but this requires other spread-out changes
+%
+% ({{Dmu-} & Jd-} & Dmu-): "Drink a pint of this beer"
+% XXX: perhaps the above belongs on <noun-main-u> ??? If so,
+% then we should also fix up similar connectors on "these", "those", "it",
+% "them" etc; see below, search for Jd-
+<mass-noun>:
+ <noun-modifiers> &
+ (AN+
+ or ({NM+ or ({{Dmu-} & Jd-} & Dmu-)}
+ & ((<noun-sub-s> & (<noun-main-u> or <rel-clause-s>)) or <noun-and-p,u>))
+ or (YS+ & {Dmu-})
+ or (GN+ & (DD- or [()]))
+ or Up-);
+
+% nouns that are mass only
+% absolutism.n absorption.n abstinence.n abundance.n academia.n
+/en/words/words.n.3: <marker-common-entity> or <mass-noun>;
+
+% Gonna treat these as mass nouns, not sure if this is correct.
+% "She wished me goodnight" "She wishes you well"
+adieu.n-u bye.n-u farewell.n-u fare-thee-well good-bye.n-u goodbye.n-u
+good-night.n-u goodnight.n-u welcome.n-u well.n-u:
+ <mass-noun>;
+
+% Want to cost this so that it doesn't interfere with given name "Tom".
+tom.n-u: [<marker-common-entity> or <mass-noun>];
+
+% Nouns that are also adjectives (e.g. red.n) and so we don't want to
+% allow these to take AN+ links. We need these as nouns, so as to
+% parse 'she prefers red'. However, assign a cost, so that 'her shoes
+% are red' gets red.a perfered over red.n.
+% [[Ds-]] to allow: "The house was painted a fading yellow"
+%
+% Doesn't seem to need a noun-and-x to make this work ...
+% In other respects, these are kind-of-like mass nouns...
+auburn.n black.n blue.n brown.n green.n gray.n pink.n purple.n red.n
+tawny.n ultramarine.n yellow.n:
+ <marker-common-entity> or
+ (<noun-modifiers> &
+ ((({Dmu- or [[Ds-]]}) & <noun-sub-s> & ([<noun-main-m> or <rel-clause-s>])) or
+ (YS+ & {Dmu-}) or
+ (GN+ & (DD- or [()])) or
+ Up-));
+
+% US state names and abbreviations
+% NM N.M. NY N.Y. NC N.C. ND N.D. Ohio Okla.
+/en/words/entities.us-states.sing:
+ <marker-entity> or
+ ({G-} & {DG- or [[GN-]] or [[{@A-} & {D-}]]} &
+ (({MG+} & {@MX+} & (JG- or <noun-main-s> or <noun-and-s>)) or
+ G+ or
+ ({[[MG+]]} & (AN+ or YS+ or YP+)))) or
+ (Xc+ & Xd- & G- & AN+);
+
+% SINGULAR ENTITIES FOR ENTITY EXTRACTION
+% This must appear after other categories so it doesnt interfere with those.
+/en/words/entities.national.sing:
+<marker-entity> or <entity-singular>;
+
+% Enable parsing of "Mother likes her"
+aunt.f auntie.f brother.m dad.m daddy.m father.m grandmother.f granny.f
+granddad.m grandfather.m grandpa.f grandpop.m mom.f mommy.f mother.f
+pop.m papa.m poppy.m pops.m sis.f sister.f uncle.m:
+ <entity-singular>;
+
+alter_ego au_pair mise_en_scene faux_pas non_sequitur fait_accompli
+modus_vivendi head_of_state tour_de_force:
+ (<noun-modifiers> &
+ ((Ds- & <noun-sub-s> & (<noun-main-s> or <rel-clause-s>)) or
+ ({Ds-} & <noun-and-s>) or
+ Us- or
+ (YS+ & Ds-) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+kung_fu joie_de_vivre op_art noblesse_oblige lese_majesty a_must
+time_of_day time_of_year force_majeure top_dollar year_end skim_milk
+breach_of_contract sleight_of_hand power_of_attorney word_of_mouth
+carte_blanche:
+ (<noun-modifiers> &
+ (({Dmu-} & <noun-sub-s> & (<noun-main-m> or <rel-clause-s>)) or
+ ({Dmu-} & <noun-and-u>) or
+ Um- or
+ (YS+ & {Dmu-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+% title nouns (president, chairman)
+% auditor.t bailiff.t broker.t buyer.t candidate.t captain.t cardinal.t
+% Ou-: "He was made knight by the crown"
+/en/words/words.n.t:
+ <noun-modifiers> & {@M+}
+ & (BIt- or (Xd- & (Xc+ or <costly-null>) & MX-) or Ou- or TI-);
+
+% Almost identical to below.
+% Ds- & {NM+} & <noun-sub-x> &.. "the number 12 is a lucky number"
+% above has cost to give "a number of" priority.
+number.n:
+ (<noun-modifiers> & (
+ [Ds- & {NM+} & <noun-sub-x> & (<noun-main-x> or B*x+)]
+ or ({Ds-} & {NM+} & <noun-and-x>)
+ ))
+ or AN+;
+
+% Almost identical to above.
+% Differing in strange ways from <common-noun>
+majority.n minority.n bunch.n batch.n bulk.n handful.n group.n:
+ (<noun-modifiers> & (
+ [Ds- & <noun-sub-x> & (<noun-main-x> or B*x+)]
+ or ({Ds-} & <noun-and-x>)
+ ))
+ or AN+;
+
+% Identical to <common-noun>, except that D- costs extra
+<costly-common-noun>:
+ <noun-modifiers> &
+ (AN+
+ or ((NM+ or [[{[NM+]} & (Ds- or <null>) ]] )
+ & ((<noun-sub-s> & (<noun-main-s> or <rel-clause-s>))
+ or <noun-and-s>))
+ or SJrs-
+ or (YS+ & Ds-)
+ or (GN+ & (DD- or [()]))
+ or Us-);
+
+% determiner constructions, with a dangling of: "a number of", "a lot of"
+% "I have a number of cookies"
+% "a pride of lions" "a litter of kittens" all take determiners
+% Some of these commonly modify count nouns, other mass nouns.
+% {A-}: "a vast expanse" "a large flock"
+% All of these "measure" nouns can also act as common nouns, but
+% we want to give these a cost, so that they don't get the first choice.
+/en/words/measures.1:
+ (OFd+ & Dm+ & {A-} & D-)
+ or <marker-common-entity>
+ or <costly-common-noun>;
+
+% determiner constructions, with a dangling of:
+% "I have bags of money"
+% NIn+ needed for money amounts
+% {Dmcn-}: "two kilograms of ..."
+% The [<generic-plural-id>] is from words.n.2.s
+/en/words/measures.2:
+ (OFd+ & (NIn+ or Dm+) & {A-} & {Dmcn-})
+ or <marker-common-entity>
+ or [<generic-plural-id>];
+
+% This gets a cost, so that the {Jd-} link for measures.1 is prefered.
+kind_of:
+ [({{@AN-} & @A-} & U+ &
+ ((Ds- & <noun-sub-s> & (<noun-main-s> or <rel-clause-s>))
+ or ({Ds-} & <noun-and-s>)
+ or Us-))]
+ or EA+
+ or EE+;
+
+% This gets a cost, so that the {Jd-} link for measures.1 is prefered.
+type_of sort_of breed_of:
+ [{{@AN-} & @A-} & U+ &
+ ((Ds- & <noun-sub-s> & (<noun-main-s> or <rel-clause-s>))
+ or ({Ds-} & <noun-and-s>)
+ or Us-)];
+
+% This gets a cost, so that the {Jd-} link for measures.2 is prefered.
+kinds_of types_of sorts_of breeds_of:
+ [{{@AN-} & @A-} & U+ &
+ (({Dmc-} & <noun-sub-p> & (<noun-main-p> or <rel-clause-p>))
+ or ({Dmc-} & <noun-and-p>)
+ or Up-)];
+
+percent.u:
+ (<noun-modifiers> &
+ ((ND- & {DD-} & <noun-sub-x> & (<noun-main-x> or B*x+)) or
+ (ND- & {DD-} & <noun-and-x>) or
+ U-)) or
+ (ND- & (OD- or AN+ or YS+));
+
+% This set of disjuncts should probably be split up and refined.
+% "shame.n", "crux.n" are here because they need the Ss*t connector
+% to pick up "that" in "The crux of it is that we must act first."
+% However, report.n and sign.n and remark.n, etc. do not seem to
+% need this connector ...
+argument.n report.n sign.n impression.n conclusion.n complaint.n
+allegation.n announcement.n position.n restriction.n notion.n
+remark.n assertion.n proclamation.n reassurance.n saying.n
+accusation.n possibility.n idea.n problem.n claim.n result.n
+statement.n hunch.n assumption.n concept.n hypothesis.n implication.n
+message.n premonition.n prerequisite.n indication.n truism.n fallacy.n
+proposition.n prospect.n presupposition.n inkling.n supposition.n
+finding.n amount.n answer.n crux.n shame.n thing.n bet.n:
+ <noun-modifiers> & (
+ AN+
+ or (Ds- & {@M+} & {(TH+ or (R+ & Bs+)) & {[[@M+]]}} & {@MXs+} &
+ (<noun-main2-s> or
+ (Ss*t+ & <CLAUSE>) or
+ SIs*t- or
+ <rel-clause-s>))
+ or ({Ds-} & <noun-and-s>)
+ or SJrs-
+ or (YS+ & Ds-)
+ or (GN+ & (DD- or [()]))
+ or Us-);
+
+proof.n doubt.n suspicion.n hope.n knowledge.n relief.n
+disclosure.n fear.n acknowledgment.n acknowledgement.n principle.n
+concern.n philosophy.n risk.n threat.n understanding.n conviction.n theory.n
+assurance.n speculation.n awareness.n news.n opinion.n belief.n
+contention.n thought.n myth.n discovery.n rumor.n probability.n fact.n
+explanation.n feeling.n comment.n expectation.n perception.n sense.n
+realization.n view.n insistence.n consensus.n notification.n rule.n
+danger.n warning.n suggestion.n:
+ (<noun-modifiers> &
+ (({D*u-} & {@M+} & {(TH+ or (R+ & Bs+)) & {[[@M+]]}} & {@MXs+} &
+ (<noun-main2-m> or
+ (Ss*t+ & <CLAUSE>) or
+ SIs*t- or
+ <rel-clause-s>)) or
+ ({D*u-} & <noun-and-u>) or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+evidence.n reasoning.n likelihood:
+ (<noun-modifiers> &
+ (({Dmu-} & {@M+} & {(TH+ or (R+ & Bs+)) & {[[@M+]]}} & {@MXs+} &
+ (<noun-main2-m> or
+ (Ss*t+ & <CLAUSE>) or
+ SIs*t- or
+ <rel-clause-s>)) or
+ ({Dmu-} & <noun-and-u>) or
+ Up- or
+ (YS+ & {Dmu-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+ideas.n opinions.n statements.n beliefs.n facts.n arguments.n
+principles.n theories.n philosophies.n signs.n impressions.n
+conclusions.n contentions.n complaints.n proofs.n doubts.n
+suspicions.n allegations.n reports.n claims.n announcements.n
+positions.n risks.n hopes.n explanations.n restrictions.n threats.n
+thoughts.n myths.n feelings.n discoveries.n rumors.n comments.n
+realizations.n probabilities.n remarks.n notions.n convictions.n
+hunches.n assumptions.n concepts.n hypotheses.n assertions.n
+expectations.n implications.n perceptions.n proclamations.n
+reassurances.n fears.n sayings.n senses.n messages.n disclosures.n
+accusations.n views.n concerns.n understandings.n acknowledgments.n
+acknowledgements.n possibilities.n premonitions.n prerequisites.n
+provisos.n truisms.n fallacies.n assurances.n speculations.n
+propositions.n prospects.n presuppositions.n inklings.n suppositions.n
+findings.n amounts.n rules.n dangers.n warnings.n indications.n
+answers.n suggestions.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {(TH+ or (R+ & Bp+)) & {[[@M+]]}} & {@MXp+} &
+ (<noun-main2-p> or
+ (Sp*t+ & <CLAUSE>) or
+ SIp*t- or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]];
+
+request.n requirement.n condition.n recommendation.n provision.n stipulation.n:
+ (<noun-modifiers> &
+ (({D*u-} & {@M+} & {(TH+ or TS+ or (R+ & Bs+)) & {[[@M+]]}} & {@MXs+} &
+ (<noun-main2-m> or
+ (Ss*t+ & <CLAUSE>) or
+ SIs*t- or
+ <rel-clause-s>)) or
+ ({D*u-} & <noun-and-u>) or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+% {Jd-} : "a number of conditions"
+requests.n requirements.n conditions.n recommendations.n provisions.n
+stipulations.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {(TH+ or TS+ or (R+ & Bp+)) & {[[@M+]]}} & {@MXp+} &
+ (<noun-main2-p> or
+ (Sp*t+ & <CLAUSE>) or
+ SIp*t- or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]];
+
+excuse.n decision.n proposal.n attempt.n plan.n plot.n pledge.n urge.n
+mission.n right.n desire.n mandate.n promise.n option.n campaign.n
+offer.n vow.n permit.n impetus.n proclivity.n propensity.n move.n
+vote.n bill.n:
+ (<noun-modifiers> &
+ ((Ds- & {@M+} & {(TOn+ or (R+ & Bs+)) & {[[@M+]]}} & {@MXs+} &
+ (<noun-main-s> or
+ <rel-clause-s>)) or
+ ({Ds-} & <noun-and-s>) or
+ Us- or
+ (YS+ & Ds-) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+% <noun-sub-uto>: somewhat like <noun-sub-s> but with more stuff.
+% {Jd-}: "a large amount of effort"
+<noun-sub-uto>:
+ {{Jd-} & D*u-} & {@M+} & {(TOn+ or (R+ & Bs+)) & {[[@M+]]}} & {@MXs+};
+
+% Like other generic noun types, but can take "to"
+% "He took the effort to make amends"
+<noun-to>:
+ <noun-modifiers> &
+ (AN+
+ or ((<noun-sub-uto> & (<noun-main-m> or <rel-clause-s>)) or <noun-and-p,u>)
+ or ({D*u-} & <noun-and-u>)
+ or (YS+ & {D*u-})
+ or (GN+ & (DD- or [()]))
+ or Us-
+ );
+
+failure.n haste.n refusal.n reluctance.n pressure.n willingness.n
+responsibility.n intent.n temptation.n readiness.n effort.n
+determination.n capacity.n unwillingness.n need.n will.n eagerness.n
+opportunity.n commitment.n ambition.n ability.n order.n obligation.n
+incentive.n panache.n balls.n-u cojones.n-u:
+ <noun-to>;
+
+% Regex-based guessing of unknown words, ending in -ity -acy -ance
+NOUN-TO-WORDS.n:
+ <noun-to>;
+
+% Nouns formerly classified as mass nouns (words.n.3) but can take "to"
+% Unlike mass nouns, cannot take numeric modifiers.
+% TO+: "The inability to laugh signifies trouble"
+% "He had the honesty to come clean"
+% "He had the impudence to laugh"
+% "The solution had the acidity to eat through walls"
+/en/words/words.n.3.y: <noun-to>;
+
+% {Jd-}: "tons of offers"
+excuses.n decisions.n proposals.n failures.n efforts.n attempts.n
+refusals.n pledges.n urges.n missions.n rights.n desires.n needs.n
+ambitions.n capacities.n mandates.n promises.n abilities.n options.n
+commitments.n intents.n opportunities.n plans.n plots.n
+responsibilities.n chances.n campaigns.n offers.n pressures.n obligations orders.n
+temptations.n vows.n permits.n impetuses.n proclivities.n propensities.n moves.n
+votes.n bills.n incentives.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {(TOn+ or (R+ & Bp+)) & {[[@M+]]}} & {@MXp+} &
+ (<noun-main-p> or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]];
+
+% WTF, the next batch below are like above, but with assorted exceptions ...
+chance.n:
+ (<noun-modifiers> &
+ (({D*u-} & {@M+} & {(TOn+ or TH+ or (R+ & Bs+)) & {[[@M+]]}} & {@MXs+} &
+ (<noun-main-s> or
+ <rel-clause-s>)) or
+ ({D*u-} & <noun-and-s>) or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+question.n issue.n:
+ (<noun-modifiers> &
+ ((Ds- & {@M+} & {R+ & Bs+ & {[[@M+]]}} & {@MXs+} &
+ (<noun-main2-s> or
+ (Ss*q+ & <CLAUSE>) or
+ SIs*q- or
+ <rel-clause-s>)) or
+ ({Ds-} & <noun-and-s>) or
+ Us- or
+ (YS+ & Ds-) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+questions.n issues.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {R+ & Bp+ & {[[@M+]]}} & {@MXp+} &
+ (<noun-main2-p> or
+ (Sp*q+ & <CLAUSE>) or
+ SIp*q- or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+reason.n:
+ (<noun-modifiers> &
+ (({D*u-} & {@M+} & {TH+ or Ce+ or TOn+ or WY+ or (R+ & Bs+)} & {@MXs+} &
+ (<noun-main2-s> or
+ (Ss*t+ & <CLAUSE>) or
+ SIs*t- or
+ <rel-clause-s>)) or
+ ({D*u-} & <noun-and-s>) or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+reasons.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {TH+ or Ce+ or TOn+ or WY+ or (R+ & Bp+)} & {@MXp+} &
+ (<noun-main-p> or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]];
+
+way.n:
+ (<noun-modifiers> &
+ ((Ds- & {@M+} & {TOn+ or TH+ or Ce+ or (R+ & Bs+)} & {@MXs+} &
+ (MVa- or
+ <noun-main-s> or
+ <rel-clause-s>)) or
+ ({Ds-} & <noun-and-s>) or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+place.n:
+ (<noun-modifiers> &
+ ((Ds- & {@M+} & {TOn+ or TH+ or Ce+ or (R+ & Bs+)} & {@MXs+} &
+ ([[MVa-]] or
+ <noun-main-s> or
+ <rel-clause-s>)) or
+ ({Ds-} & <noun-and-s>) or
+ <noun-main-m> or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+time.n:
+ (<noun-modifiers> &
+ (({D*u-} & {@M+} & {TOn+ or WN+ or TH+ or Ce+ or (R+ & Bs+)} & {@MXs+} &
+ ([[MVa-]] or
+ <noun-main-m> or
+ <rel-clause-s>)) or
+ ({D*u-} & <noun-and-x>) or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+;
+
+ways.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {TOn+ or TH+ or Ce+ or (R+ & Bp+)} & {@MXp+} &
+ (MVa- or
+ <noun-main-p> or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]];
+
+places.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {TOn+ or TH+ or Ce+ or (R+ & Bp+)} & {@MXp+} &
+ ([[MVa-]] or
+ <noun-main-p> or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]];
+
+times.n:
+ (<noun-modifiers> &
+ (({{Jd-} & Dmc-} & {@M+} & {TOn+ or WN+ or TH+ or Ce+ or (R+ & Bp+)} & {@MXp+} &
+ ([[MVa-]] or
+ <noun-main-p> or
+ <rel-clause-p>)) or
+ ({Dmc-} & <noun-and-p>) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]];
+
+% ====================================================================
+%PRONOUNS
+
+she he:
+ {[[R+ & Bs+]]} & ((Ss+ & <CLAUSE>) or SIs- or SJls+ or (Dn- & SJn+));
+
+% The E- is for "It's either us or them" ... not ideal, but OK
+me him:
+ J- or Ox- or ({[[E-]]} & SJl+) or SJr-;
+
+% DD+: "... how us two should work together"
+us:
+ J- or Ox- or ({[[E-]]} & SJl+) or SJr- or DD+;
+
+% Jd- & Dmc-: "I have a lot of them" and J- is cost so that this comes first.
+% (Jd- & Dmc- & Sp+): "Many of them could be saved"
+them:
+ [J-]
+ or ({Jd- & Dmc-} & Ox-)
+ or (Jd- & Dmc- & {Wd-} & Sp+)
+ or ({[[E-]]} & SJl+)
+ or SJr-;
+
+myself yourself himself herself itself themselves
+ourselves yourselves thyself oneself one's one’s:
+ J- or O- or E+ or MVa-;
+
+each_other: J- or O- or YS+;
+her.d: ({AL-} & {@L+} & (D+ or DD+)) or DP+;
+her.p: J- or Ox-;
+its my your their our: ({AL-} & {@L+} & (D+ or DD+)) or DP+;
+his: DP+ or ({AL-} & {@L+} & (D+ or DD+)) or
+[<noun-main-x>];
+you: J- or Ox- or (Sp+ & <CLAUSE>) or SIp- or SJlp+ or (Dn- & SJn+);
+
+% Ox-: "leave it alone" "make it rain"
+% Errr. what's the difference between Ox- and Os- ??
+% (Jd- & Dmu- & Sp+): "much of it could be saved"
+% (Jd- & Dmu- & {Wd-} & S+): "all of it was saved"
+% (Jd- & Dmu- & Os-): "there was enough of it"
+% (Os- & {@M+}): "Do you have it ready?"
+it:
+ [J-]
+ or (Os- & {@M+})
+ or (Jd- & Dmu- & Os-)
+ or (Jd- & Dmu- & {Wd-} & S+)
+ or ((Ss+ or SFsi+) & <CLAUSE>)
+ or SIs- or SFIsi- or OXi- or Vp-
+ or SJls+ or SJrs- or (Dn- & SJn+);
+
+% O*c: "we will go faster than they"
+they:
+ ({[[R+ & Bp+]]} & ((Sp+ & <CLAUSE>) or SIp-)) or
+ Ox- or
+ SJlp+ or SJrp- or (Dn- & SJn+);
+
+% DD+: "... how we two should work together"
+we:
+ (Sp+ & <CLAUSE>)
+ or Ox-
+ or DD+
+ or SIp- or SJlp+ or SJrp- or (Dn- & SJn+);
+
+% XXX why is this marked plural (Sp, SIp) ?? a cheap hack to make I've work?
+% We use <marker-entity> here to prevent lower-case magnling by
+% the tokenizer.
+% SJrp-: allows only "...and I", disallows "I and ..."
+% Ds- & SJl+: "Either I or ..."
+% Dn- & SJn+: "Neither I not ..."
+I.p:
+ <marker-entity> or
+ ((Sp*i+ or SX+) & <CLAUSE>) or
+ SIp*i- or
+ SJr- or
+ (Ds- & SJl+) or
+ (Dn- & SJn+) or
+ SXI-;
+
+them_all us_all you_all: Ox- or J-;
+% it_all gets a cost when used as direct object (Ox) to avoid
+% inappropriate parse "Please paint it all white"
+it_all: [[Ox-]] or J-;
+
+%we're they're I'm you're:
+%(({@EBm+} & (((O*t+ or K+ or BI+ or OF+ or Pp+) & {@MV+}) or TO+ or Pa+)) or
+%({N+} & (Pg+ or Pv+))) & <CLAUSE>;
+
+’m 'm: SX- & (({@EBm+} & (((O*t+ or K+ or BI+ or OF+ or Pp+) & {@MV+}) or TO+ or Pa+)) or
+({N+} & (Pg+ or Pv+)));
+’re 're: Spx- & (({@EBm+} & (((O*t+ or K+ or BI+ or OF+ or Pp+) & {@MV+}) or TO+ or Pa+)) or
+({N+} & (Pg+ or Pv+)));
+
+%I've they've you've we've: PP+ & <CLAUSE>;
+
+’ve 've: Sp- & PP+;
+
+%we'd they'd I'd he'd she'd you'd: (PP+ or ({Vw+} & I+)) & <CLAUSE>;
+%I'll he'll she'll we'll they'll you'll it'll: I+ & <CLAUSE>;
+
+’d 'd: S- & (PP+ or I+);
+’ll 'll: S- & I+;
+
+something someone somebody:
+{EL+} & (({Pa+} & <noun-sub-s> & {@MXs+} & <noun-main-s>) or <noun-and-s> or YS+);
+nothing no_one nobody:
+{EN-} & {EL+} & (({Pa+} & <noun-sub-s> & {@MXs+} &
+<noun-main-s>) or <noun-and-s> or YS+);
+everything everyone anyone everybody anybody anything:
+{EN-} & {EL+} & (((({Pa+} & <noun-sub-s>) or CX+) & {@MXs+} &
+<noun-main-s>) or <noun-and-s> or YS+);
+
+% EL-: "what the fuck happened?" "what else happened?"
+% Amazing how profanity works this way...
+else the_fuck the_shit the_piss
+the_bleep
+in_heck in_the_heck the_heck
+in_hell in_the_hell the_hell
+in_goddamn_hell in_the_godammn in_goddamned_hell in_the_godammned
+in_bleeping_hell
+goddamn goddamned
+for_christ_sake for_christs_sake for_Christ_sake for_Christs_sake
+for_christ's_sake for_Christ's_sake
+in_Jesus in_Jesus_name in_Jesus'_name in_God's_name in_Lord's_name
+in_Lords_name in_the_Lord's_name the_bejesus
+the_almighty almighty_lord the_almighty_lord
+the_piss_Christ in_piss_Christ:
+ EL-;
+
+% Like above, but more polite, and with commas:
+% "What, exactly, do you want?"
+exactly.ee precisely.ee:
+ {Xc+ & {Xd-}} & EL-;
+
+% E+: "Why didn't you fucking say so?"
+fucking.e bleeping.e flat_out:
+ EL- or E+;
+
+others:
+ {{Jd-} & Dmc-} & ((<noun-sub-p> & <noun-main-p>) or <noun-and-p>);
+
+mine.p yours theirs hers ours:
+ <noun-main-x> or SJl+ or SJr- or (Dn- & SJn+);
+
+
+% ====================================================================
+% DETERMINERS
+
+% (L+ & (AJld+ or AJrd-)): "the biggest and the baddest ..."
+the:
+ ({AL-} & {@L+} & (D+ or DD+)) or
+ DG+ or
+ (TR- & U+) or
+ (L+ & (AJld+ or AJrd-));
+
+% this as a pronoun
+this.p:
+ <noun-main-h>
+ or <noun-and-s>;
+
+% this as a determiner
+this.d: ({AL-} & D*u+) or DTn+;
+
+% [[<noun-main-p>]] costs so that ditranstive verbs don't suffer:
+% "I taught these mice to jump", taught is ditransitive, we don't want
+% "these" to be the object. See also "those"
+% (Jd- & Dmu- & Op-): "I gave him a number of these"
+% (Jd- & Dmu- & {Wd-} & Sp+): "a number of these were found"
+these:
+ ({AL-} & (Dmc+ or DD+))
+ or (Jd- & Dmu- & Op-)
+ or (Jd- & Dmu- & {Wd-} & Sp+)
+ or [[<noun-main-p>]]
+ or <noun-and-p>;
+
+% [[<noun-main-p>]] costs so that ditranstive verbs don't suffer,
+% and get the D+ link instead of the O- link.
+% See also "these"
+those:
+ ({AL-} & (Dmc+ or DD+))
+ or (Jd- & Dmu- & Op-)
+ or (Jd- & Dmu- & {Wd-} & Sp+)
+ or (<noun-sub-p> & ([[<noun-main-p>]] or RJlr+ or RJrr-))
+ or <noun-and-p>;
+
+% "Them there beans ought to be picked"
+them_there:
+ Dm+;
+
+both.d:
+ Dmc+ or
+ E+ or
+ ({M+ or (ALx+ & Jp+)} & <noun-main-p>) or
+ <noun-and-p>;
+
+both.a: Paf- or AJra-;
+
+% half: prefer NJ+ over noun-main-x, because half is almost surely
+% modifying something, instead of being a direct object, subject, etc.
+half: {EN-} &
+ (NJ+ or
+ [(({DD-} & {@Mp+ or (R+ & B+)}) or (AL+ & J+)) & <noun-main-x>]);
+
+% "How many years" -- prefer TQ+ over Dmc+
+% OFd+ & Dmc+: "I drank many of the beers"
+many:
+ (H- & ([[Dmc+]] or ND+ or NIn+ or TQ+))
+ or (AM- & (Dmcy+ or Oy- or Jy-))
+ or ({EE-} & (ND+ or NIn+))
+ or ({DD-} & {EAx-} & Dmc+)
+ or (OFd+ & Dmc+)
+ or ((({EAx-} & {DD-}) or H-) & <noun-sub-p> & ([<noun-main-p>] or <rel-clause-p>));
+
+% A naked <noun-main2-x> costs more than one with other links,
+% so that ditransitive verbs don't get spurious links to all.a
+% XXX can this be tighetend up??
+% <noun-main2-x> costs no mater what, so that Ofd+ is prefered.
+all.a:
+ ({EN-} & (
+ E+
+ or Dm+
+ or NIc+
+ or (
+ (@M+ or (ALx+ & (Jp+ or Ju+)) or (R+ & B+) or EL+)
+ & [<noun-main2-x>])
+ or (
+ {@M+ or (ALx+ & (Jp+ or Ju+)) or (R+ & B+) or EL+}
+ & (
+ [[<noun-main2-x>]]
+ or (S**t+ & <CLAUSE>)
+ or SI**t-))
+ or <noun-and-x>))
+ or DTa+;
+
+all_that: EA+ or EE+ or (<noun-sub-s> & <noun-main-s>);
+all_this: (<noun-sub-s> & <noun-main-s>) or <noun-and-s>;
+
+all_those all_these: [[<noun-sub-p> & <noun-main-p>]] or <noun-and-p>;
+
+one:
+ NA+ or
+ NMw- or
+ NN+ or
+ ({EN-} & NIfn+) or
+ ({NA-} & {EN-} & (({DD-} & Ds+) or ({{@A- & {[[@AN-]]}} & Ds-} &
+ (YS+ or
+ (<noun-sub-s> & (<noun-main-s> or <rel-clause-s>)) or
+ <noun-and-s>)))) or
+ NIm+ or
+ NSn+ or
+ (NA- & ND+) or
+ DTi+ or
+ (NA- & Xd- & TY- & Xc+);
+
+ones:
+ {@A- & {[[@AN-]]}} & {Dmc-} &
+ (YP+ or
+ (<noun-sub-p> & <noun-main-p>) or
+ <noun-and-p>);
+
+any:
+ ({EN-} &
+ (D+ or
+ DD+ or
+ (<noun-sub-x> & <noun-main-x>) or
+ <noun-and-x>)) or
+ EC+;
+
+% XXX why doesn't this clash with a.eq ??
+a an: ({(AA- & HA-) or ALa- or [[Lf+]]} & Ds+) or NN+ or NSa+ or NIm+;
+such: (ND- & Dmc+) or Dm*k+;
+such_a such_an: Ds*k+;
+
+
+% "all of the time". These are all temporal modifiers: use MVw ("when")
+% and use OFw to force linkage only to time exprs.
+<adv-of>: MVw- & OFw+;
+
+a_lot:
+ [[<noun-and-p>]]
+% or [[(<noun-sub-p> & <noun-main-p>)]]
+ or EC+ or MVa- or <adv-of>;
+
+% OFd+ & Dmc+: "I ate a few of the cookies."
+few:
+ (OFd+ & Dmc+ & {A-} & (D- or EA-))
+ or ({EA- or EF+ or ({EA-} & DD-)} &
+ (Dmc+ or [<noun-sub-p> & <noun-main-p>] or <noun-and-p>));
+
+a_couple:
+% [[<noun-sub-p> & <noun-main-p>]] or
+ <noun-and-p>;
+
+% NNumeric modifier: "a couple of thousand dollars"
+a_couple_of:
+ NN+ or ND+ or NIn+;
+
+% ECa+: "I had a few too many"
+a_few:
+ NN+
+ or ND+
+ or NIn+
+ or ECa+
+ or ({EN-} &
+ (Dmc+
+ or ND+
+ or NIn+
+ or [[<noun-sub-p> & <noun-main-p>]]));
+
+% OFd+ & Dm+: "I ate some of the cookies"; cost to <nou>, <adv-of> so
+% that this comes first.
+% <adv-of>: "I saw him some of the time"
+some:
+ D+
+ or (OFd+ & Dm+ & {EC-})
+ or EN+
+ or MF+
+ or [<noun-sub-x> & <noun-main-x>]
+ or <noun-and-x>
+ or [[<adv-of>]];
+
+little.i:
+ ({EE-} & (MVa- or Ca+ or Qe+))
+ or (OFd+ & Dm+ & {A-} & D-)
+ or ({EEx- or H-}
+ & (Dmu+
+ or [<noun-sub-s> & (<noun-main-s> or <rel-clause-s>)]
+ or <noun-and-s>))
+ or (AM- & (Dmuy+ or MVy- or Oy- or Jy-))
+ or [[{Ds-} & <adv-of>]];
+
+% "he likes you most" has no determiner, just uses MVa-.
+% {OFd+}: "most of them"
+most:
+ ({OFd+} & Dm+)
+ or EA+
+ or MF+
+ or [EE+]
+ or [<noun-sub-x> & <noun-main-x>]
+ or <noun-and-x>
+ or [<adv-of>]
+ or [{DD-} & MVa- & {Mp+}];
+
+the_most:
+ ({OFd+} & Dm+)
+ or EE+
+ or [<noun-sub-x> & <noun-main-x>]
+ or MVa-;
+
+% "a part.n" should cover most cases. Perhaps [[OF+ & <noun-main-s>]] should be
+% reomved?? Anyway, its costed to give OFd+ priority. Likewise, should probably
+% retire <adv-of> as well, right?
+part.i:
+ (OFd+ & Dm+)
+ or [[OF+ & <noun-main-s>]]
+ or <noun-and-s>
+ or [[{Ds-} & <adv-of>]];
+
+all.e:
+ (OFd+ & Dm+)
+ or [[<adv-of>]];
+
+% "he likes you least of all" has no determiner, just uses MVa-.
+least.a: EA+;
+least.e: {DD-} & MVa- & {Mp+};
+
+none:
+ (OFd+ & Dm+)
+ or [<noun-sub-x> & <noun-main-x>]
+ or <noun-and-x>
+ or [[<adv-of>]];
+
+% costly <adv-of> so that OFd+ is prefered.
+rest.i:
+ [[DD- & <adv-of>]];
+
+plenty:
+ (OFd+ & Dm+)
+ or ({@M+} & ([<noun-main-x>] or <noun-and-x>))
+ or [[<adv-of>]]
+ or [MVa-];
+
+other:
+ Dmu+ or
+ ({ND-} & {DD-} & Dmc+) or
+ (DD- & (Ds+ or DD+ or <noun-main-s> or <noun-and-s>));
+
+one_other every_other: <noun-main-s> or <noun-and-s> or Ds+;
+any_other no_other: <noun-main-s> or <noun-and-s> or D+;
+all_other: Dm+;
+most_other: Dmc+;
+quite_a quite_an one_such not_every: Ds+;
+some_other no_such: D+;
+every.d: {EN-} & (Ds+ or DTn+ or [[NIc+]]);
+
+another:
+ (OFd+ & Dm+)
+ or Ds+
+ or NIc+
+ or [<noun-sub-s> & <noun-main-s>]
+ or <noun-and-s>
+ or YS+;
+
+one_another: (<noun-sub-s> & <noun-main-s>) or <noun-and-s> or YS+;
+
+each:
+ (OFd+ & Dm+)
+ or Ds+
+ or [<noun-sub-s> & <noun-main-s>]
+ or <noun-and-s>
+ or DTn+
+ or E+
+ or MVa-;
+
+no.misc-d: ({EN-} & D+) or EC+;
+
+a_little:
+ [<noun-sub-s> & <noun-main-s>]
+ or <noun-and-s>
+ or EA+ or EC+ or EE+ or MVa-;
+
+a_great_deal:
+ EC+
+ or MVa-
+ or (OFd+ & Dmu+)
+ or [<noun-sub-s> & <noun-main-s>]
+ or <noun-and-s>;
+
+many_more a_few_more a_couple_more plenty_more a_lot_more:
+ Dmcc+
+ or (OFd+ & Dm+)
+ or [<noun-sub-p> & <noun-main-p>]
+ or <noun-and-p>;
+
+some_more:
+ MVa-
+ or Dm+
+ or (OFd+ & Dmu+)
+ or [<noun-sub-x> & <noun-main-x>]
+ or <noun-and-x>;
+
+one_more:
+ Ds+ or (<noun-sub-s> & <noun-main-s>) or <noun-and-s>;
+
+not_many:
+ ({OFd+} & Dmc+)
+ or [<noun-sub-p> & <noun-main-p>];
+
+not_much:
+ ({OFd+} & Dmu+)
+ or [<noun-sub-x> & <noun-main-u>];
+
+not_all not_everything:
+ ({OFd+} & Dm+)
+ or (((ALx+ & Jp+) or <noun-sub-x>) & [S+] & <CLAUSE>);
+
+not_one:
+ Ds+
+ or (OFd+ & Dm+)
+ or (<noun-sub-s> & [Ss+] & <CLAUSE>);
+
+enough.n:
+ (OFd+ & Dmu+)
+ or [{OF+} & <noun-main-s>]
+ or <noun-and-s>;
+
+% EF-: "He is good enough" but *He is very good enough
+enough.r: EF-;
+
+enough.a: ({@E-} & Pa- & {Pg+ or Os+ or @MV+}) or ({@E-} & Dm+);
+
+% Wi-: "Enough rough-housing! Enough!"
+enough.ij: Wi- & {Pg+};
+
+not_enough:
+ (OFd+ & Dm+)
+ or [{OF+} & <noun-main-s>]
+ or <noun-and-s>;
+
+% =================================================================
+% NUMERICAL EXPRESSIONS
+% Numeric ranges, e.g. "15 to 20". The "to" (or hyphen) acts as a
+% number in a range, and the requirements should match NUMBER.
+% The NIf connectors (second subscript position is "n" for number
+% and "u" for unit) allow "15 to 20", "15 to 20 kDa" and
+% "15 kDa to 20 kDa", but not "15 kDa to 20".
+% Allowing EC+ for "two to threefold more abundant". This allows also the
+% nonsense "two to three more abundant", but this is likely harmless.
+-.j-ru --.j-ru ---.j-ru or.j-ru to.j-ru ->.j-ru -->.j-ru:
+(NIfn- & {NIr-} & NItn+ & (NM- or EC+ or
+(NN+ or [[NF+]] or ({EN- or NIc-} & (ND+ or OD- or
+({{@L+} & DD-} & (Dmcn+ or (<noun-sub-p> & [<noun-main-p>])))))))) or
+(NIfu- & {NIr-} & NItu+ &
+(((<noun-sub-x> & (<noun-main-x> or Bsm+)) or (Us- & {Mp+})) or AN+ or Yd+ or Ya+)) or
+(NIfp- & {NIr-} & NItp+ & (NM- or AN+ or ({Xc+ & Xd-} & Ma-) or (Wq- & PF+)
+or MVp- or Pp- or FM- or (Xc+ & Xd- & (MVx- or MX-))));
+
+and.j-ru:
+(NIfn- & {NIr-} & NItn+ & (NM- or
+(NN+ or [[NF+]] or ({EN- or NIc-} & (ND+ or OD- or
+({{@L+} & DD-} & (Dmcn+ or (<noun-sub-p> & [<noun-main-p>])))))))) or
+(NIfu- & {NIr-} & NItu+ &
+(((<noun-sub-x> & (<noun-main-x> or Bsm+)) or (Us- & {Mp+})) or AN+ or Yd+ or Ya+));
+
+% and.j-sum is used in numerical sums: "It's a hundred and two in the shade."
+% It's a hundred 'n two in the shade."
+and.j-sum 'n.j-sum: NA- & NA+;
+
+% For number, cost is added to the <noun-main-*> roles to prioritize
+% postmodifier and numeric determiner roles.
+
+two three four five six seven eight nine ten eleven twelve thirteen
+fourteen fifteen sixteen seventeen eighteen nineteen
+twenty twenty-one twenty-two twenty-three twenty-four
+twenty-five twenty-six twenty-seven twenty-eight twenty-nine
+thirty thirty-one thirty-two thirty-three thirty-four
+thirty-five thirty-six thirty-seven thirty-eight thirty-nine
+forty forty-one forty-two forty-three forty-four
+forty-five forty-six forty-seven forty-eight forty-nine
+fifty fifty-one fifty-two fifty-three fifty-four
+fifty-five fifty-six fifty-seven fifty-eight fifty-nine
+sixty sixty-one sixty-two sixty-three sixty-four
+sixty-five sixty-six sixty-seven sixty-eight sixty-nine
+seventy seventy-one seventy-two seventy-three seventy-four
+seventy-five seventy-six seventy-seven seventy-eight seventy-nine
+eighty eighty-one eighty-two eighty-three eighty-four
+eighty-five eighty-six eighty-seven eighty-eight eighty-nine
+ninety ninety-one ninety-two ninety-three ninety-four
+ninety-five ninety-six ninety-seven ninety-eight ninety-nine
+oh-one oh-two oh-three oh-four oh-five oh-six oh-seven oh-eight oh-nine
+o-one o-two o-three o-four o-five o-six o-seven o-eight o-nine
+zero-one zero-two zero-three zero-four zero-five zero-six zero-seven zero-eight zero-nine
+several:
+ NA+ or
+ NMw- or
+ ({EN-} & (NIfn+ or NItn-)) or
+ NN+ or
+ NW+ or
+ ({EN- or NIc- or NA-} & (ND+ or NIn+ or
+ ({{@L+} & DD-} & (Dmcn+ or (<noun-sub-p> & [<noun-main-p>]))))) or
+ (NA- & {<noun-sub-p> & <noun-main-p>}) or
+ (NA- & Xd- & TY- & Xc+);
+
+oh.zero: (NA- & NA+);
+zero.n: (NA- & NA+) or NN+ or Ds+ or (<noun-sub-s> & <noun-main-s>);
+
+% the generic "number" category
+% AN+ is needed for date-ranges
+% FRACTIONS are simple fractions
+% Ditto for fractions ...
+% Not clear why we use Dmcn+ here, instead of allowing nouns to take ND-
+% as effectively Dmcn and ND are the "same thing" more or less.
+NUMBERS FRACTION:
+ NMn- or
+ ({EN-} & (NIfn+ or NItn-)) or
+ NN+ or
+ [[NF+]] or
+ [[AN+]] or
+ ({EN- or NIc-} & (ND+ or NIn+ or OD- or
+ ({{@L+} & DD-} & (Dmcn+ or (<noun-sub-p> & [<noun-main-p>]))))) or
+ EQt+ or
+ EQt-;
+
+% HMS-TIME consists of HH:MM:SS(AM|PM) type expressions
+% and should probably have a narrower set of parse patterns than numbers in
+% general. e.g. should not have EQ links XXX todo -- fix this.
+HMS-TIME: NUMBERS & {TZ+};
+
+% Allowing postposed roman numerals only for now.
+% e.g "Pope Pious XII"
+ROMAN-NUMERAL-WORDS.rn: NMr-;
+
+% nouns that look like roman numerals. Limited requirements to avoid
+% excessive ambiguity.
+ROMAN-NUMERAL-WORDS.n: {@MX+} & (<noun-main-s>);
+
+% Allow post-posed letter moifiers: e.g. "Vitamin A"
+A.id B.id C.id D.id E.id F.id G.id H.id J.id K.id L.id M.id N.id
+O.id P.id Q.id R.id S.id T.id U.id V.id W.id X.id Y.id Z.id: NMa-;
+
+% Avoid having I.id interfere with pronoun I.
+I.id: [[NMa-]];
+
+% Days of month
+% Note, however, this over-rides generic numbers in this range
+% and so is a superset of the generic numbers disjuncts
+% The following should match NUMBERS with the addition of "or TM-".
+2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
+29 30 31:
+NUMBERS or TM- or [[G+]];
+
+% Ordinals - day-of-month expressions.
+% Used only in espressions such as "December 2nd"
+% Must use regex here as well, to avoid conflict with other regexes
+first.ti second.ti third.ti fourth.ti fifth.ti sixth.ti seventh.ti eighth.ti
+ninth.ti tenth.ti eleventh.ti twelfth.ti thirteenth.ti fourteenth.ti fifteenth.ti
+sixteenth.ti seventeenth.ti eighteenth.ti nineteenth.ti twentieth.ti
+twenty-first.ti twenty-second.ti twenty-third.ti twenty-fourth.ti twenty-fifth.ti
+twenty-sixth.ti twenty-seventh.ti twenty-eighth.ti twenty-ninth.ti thirtieth.ti
+thirty-first.ti DAY-ORDINALS.ti: TM-;
+
+% Years w/o apostrophe: e.g. 47 Ford Fairlane or 57 Chevy
+01 02 03 040 05 06 07 08 09: <date-id> or [[G+]];
+32 33 34 35 36 37 38 39
+40 41 42 43 44 45 46 47 48 49
+50 51 52 53 54 55 56 57 58 59
+60 61 62 63 64 65 66 67 68 69
+70 71 72 73 74 75 76 77 78 79
+80 81 82 83 84 85 86 87 88 89
+90 91 92 93 94 95 96 97 98 99:
+ NUMBERS or <date-id> or [[G+]];
+
+% the DECADE-TIME regex matches 1950s 1950's 1950’s etc.
+% A+: It's an old 50's love song
+DECADE-TIME
+'00s '10s '20s '30s '40s '50s '60s '70s '80s '90s
+‘00s ‘10s ‘20s ‘30s ‘40s ‘50s ‘60s ‘70s ‘80s ‘90s
+00's 10's 20's 30's 40's 50's 60's 70's 80's 90's:
+ ({TA-} & DG- & (IN- or [[<noun-main-x>]]))
+ or A+;
+
+% year numbers
+% 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919
+/en/words/words.y: <date-id> or [[G+]];
+
+% Years: e.g. '47 Ford Fairlane or '57 Chevy
+'00 '01 '02 '03 '04 '05 '06 '07 '08 '09
+'10 '11 '12 '13 '14 '15 '16 '17 '18 '19
+'20 '21 '22 '23 '24 '25 '26 '27 '28 '29
+'30 '31 '32 '33 '34 '35 '36 '37 '38 '39
+'40 '41 '42 '43 '44 '45 '46 '47 '48 '49
+'50 '51 '52 '53 '54 '55 '56 '57 '58 '59
+'60 '61 '62 '63 '64 '65 '66 '67 '68 '69
+'70 '71 '72 '73 '74 '75 '76 '77 '78 '79
+'80 '81 '82 '83 '84 '85 '86 '87 '88 '89
+'90 '91 '92 '93 '94 '95 '96 '97 '98 '99: <date-id> or [[G+]];
+
+
+1:
+ NMn- or ({EN-} & (NIfn+ or NItn-)) or
+ NN+ or [[NF+]] or
+ ({EN- or NIc-} & (ND+ or NIm+ or OD- or
+ ({{@L+} & DD-} & (D**n+ or (<noun-sub-x> & [<noun-main-x>]))))) or
+ TM- or NSn+ or
+ EQt+ or EQt-;
+%%%%% or [[G- & (({MXs+} & <noun-main-s>) or G+ or AN+ or YS+)]]
+
+0:
+ NMn- or ({EN-} & (NIfn+ or NItn-)) or
+ NN+ or [[NF+]] or
+ ({EN- or NIc-} & (ND+ or NIn+ or OD- or
+ ({{@L+} & DD-} & (Dmcn+ or [[Ds+]] or (<noun-sub-p> & [<noun-main-p>])))))
+ or NSn+;
+%%%%% or [[G- & (({MXs+} & <noun-main-s>) or G+ or AN+ or YS+)]]
+
+% TODO: no numers or related expressions below this point take the new NM
+% connector, although e.g. "point 1/2" would appear reasonable. Go through
+% these and add NM- analogously to other numbers as applicable.
+
+twenties thirties, forties fifties sixties seventies eighties nineties
+hundreds.cnt:
+ {NA-} & {TA-} & DG- & (IN- or [[<noun-main-x>]]);
+
+% teens could be above or teenagers (words.n.2)
+teens: ({TA-} & DG- & (IN- or <noun-main-x>)) or <generic-plural-id>;
+
+hundred thousand half-thousand million half-million quarter-million
+billion half-billion quarter-billion trillion half-trillion
+quarter-trillion dozen half-dozen
+bajillion bazillion gadzillion gagillion gajillion gazillion godzillion
+jillion.a jizillion kabillion kajillion katrillion killion umptillion
+zillion.n:
+ NN- & (
+ NNy+
+ or NMw-
+ or NA+
+ or ({EN- or NIc-} & (
+ ND+
+ or NIn+
+ or OD-
+ or ({{@L+} & DD-} & (Dmcn+ or (<noun-sub-p> & <noun-main-p>))))));
+
+half_a_dozen half_a_million:
+({EN- or NIc-} & (ND+ or NIn+ or OD- or ({{@L+} & DD-} &
+(Dmcn+ or (<noun-sub-p> & <noun-main-p>)))));
+
+dozens scores.a hundreds.a thousands millions billions trillions
+bajillions bazillions gadzillions gagillions gajillions gazillions
+godzillions jillions jizillions kabillions kajillions katrillions
+killions umptillions zillions.a:
+ [{DD- or Dmc-} & <noun-sub-p> & <noun-main-p>]
+ or (OFd+ & (ND+ or NIn+ or Dm+));
+
+tens: {DD-} & OF+ & <noun-main-p>;
+
+1/2 3/4 2/3 1/3 1/4 1/8 3/8 5/8 7/8 ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞:
+({NNx-} & NNy+) or NF+ or NIe+
+or ({NNx-} & {EN- or NIc-} & (ND+ or NIn+ or OD- or ({DD-} &
+([[Ds+]] or Dmcn+ or (<noun-sub-x> & <noun-main-x>)))));
+
+and_a_half: (NW- or NSn-) &
+(NNy+ or ({EN- or NIc-} & (ND+ or NIn+ or ({DD-} &
+(Dmcn+ or (<noun-sub-p> & <noun-main-p>))))));
+
+quarter.i:
+NS- & {EN-} & (NF+ or (<noun-sub-x> & <noun-main-x>));
+thirds.m fourths.m quarters.m fifths.m sixths.m sevenths.m eighths.m
+ninths.m tenths.m:
+NW- & {EN-} & (NF+ or (<noun-sub-x> & <noun-main-x>));
+
+first.a: L- or Pa- or E+ or MVa- or ({Xc+ & {Xd-}} & CO+) or A+ or [Jp-] or
+TT+ or ((DD- or [[NSa-]]) & <noun-sub-x> & {TOn+} & <noun-main-x>);
+
+last.a dead_last dead_fucking_last DFL:
+ L-
+ or Pa-
+ or MVa-
+ or ({Xc+ & {Xd-}} & CO+)
+ or DTi+
+ or TT+
+ or (DD- & <noun-sub-x> & {TOn+} & <noun-main-x>)
+ or A+
+ or [Jp-];
+
+second.a: L- or Pa- or MVa- or ({Xc+ & {Xd-}} & CO+) or
+(DD- & <noun-sub-x> & {TOn+} & <noun-main-x>) or NR+ or A+;
+
+% This uses the L link for superlatives, but leads to strange parses:
+% "We celebrated their eleventh anniversary" parses differently
+% than "tenth anniversary". XXX this should be fixed, I suppose ...
+
+% A+: "fifteenth century Italy"
+% Jp-: "Mike finished in first place, and John in third."
+third.a fourth.a fifth.a sixth.a seventh.a eighth.a ninth.a tenth.a :
+L- or Pa- or MVa- or ({Xc+ & {Xd-}} & CO+) or
+(NS- & {EN-} & NF+) or (((NS- & <noun-sub-x> & {EN-}) or
+(DD- & <noun-sub-x> & {TOn+})) & <noun-main-x>) or NR+ or A+ or Jp-;
+
+% NS-: "I gave him a third of the loot."
+eleventh.a twelfth.a thirteenth.a fourteenth.a fifteenth.a
+sixteenth.a seventeenth.a eighteenth.a nineteenth.a
+twentieth.a
+twenty-first.a twenty-second.a twenty-third.a
+twenty-fourth.a twenty-fifth.a twenty-sixth.a
+twenty-seventh.a twenty-eighth.a twenty-ninth.a
+thirtieth.a
+thirty-first.a thirty-second.a thirty-third.a
+thirty-fourth.a thirty-fifth.a thirty-sixth.a
+thirty-seventh.a thirty-eighth.a thirty-ninth.a
+fourtieth.a
+fourty-first.a fourty-second.a fourty-third.a
+fourty-fourth.a fourty-fifth.a fourty-sixth.a
+fourty-seventh.a fourty-eighth.a fourty-ninth.a
+fiftieth.a
+fifty-first.a fifty-second.a fifty-third.a
+fifty-fourth.a fifty-fifth.a fifty-sixth.a
+fifty-seventh.a fifty-eighth.a fifty-ninth.a
+sixtieth.a
+sixty-first.a sixty-second.a sixty-third.a
+sixty-fourth.a sixty-fifth.a sixty-sixth.a
+sixty-seventh.a sixty-eighth.a sixty-ninth.a
+seventieth.a
+seventy-first.a seventy-second.a seventy-third.a
+seventy-fourth.a seventy-fifth.a seventy-sixth.a
+seventy-seventh.a seventy-eighth.a seventy-ninth.a
+eightieth.a
+eighty-first.a eighty-second.a eighty-third.a
+eighty-fourth.a eighty-fifth.a eighty-sixth.a
+eighty-seventh.a eighty-eighth.a eighty-ninth.a
+ninetieth.a
+ninety-first.a ninety-second.a ninety-third.a
+ninety-fourth.a ninety-fifth.a ninety-sixth.a
+ninety-seventh.a ninety-eighth.a ninety-ninth.a:
+Pa- or MVa- or ({Xc+ & {Xd-}} & CO+) or
+(NS- & {EN-} & NF+) or (((NS- & <noun-sub-x> & {EN-}) or
+(DD- & <noun-sub-x> & {TOn+})) & <noun-main-x>) or NR+ or A+ or Jp-;
+
+% Miscellaneous ordinal numbers, adjectival usage
+% prefer G+ over A+ in general, as these are typically parts of names.
+1º.a 2º.a 3º.a 4º.a 5º.a 6º.a 7º.a 8º.a 9º.a
+DAY-ORDINALS.a ORDINALS.a:
+ Pa- or
+ MVa- or
+ ({Xc+ & {Xd-}} & CO+) or
+ (DD- & <noun-sub-x> & {TOn+} & <noun-main-x>) or
+ NR+ or
+ G+ or
+ [A+] or
+ AJla+ or
+ ({Ds-} & AJra-) or
+ (Dn- & AJn+);
+
+% "Next on our list..." are ordinals.
+% XXX should be converted to regex...
+% Note also another list of ordinals below, used for time expressions.
+first.ord next.ord last.ord second.ord third.ord fourth.ord fifth.ord
+sixth.ord seventh.ord eighth.ord ninth.ord tenth.ord eleventh.ord
+twelfth.ord thirteenth.ord fourteenth.ord fifteenth.ord sixteenth.ord
+seventeenth.ord eighteenth.ord nineteenth.ord
+twentieth.ord
+twenty-first.ord twenty-second.ord twenty-third.ord
+twenty-fourth.ord twenty-fifth.ord twenty-sixth.ord
+twenty-seventh.ord twenty-eighth.ord twenty-ninth.ord
+thirtieth.ord
+thirty-first.ord thirty-second.ord thirty-third.ord
+thirty-fourth.ord thirty-fifth.ord thirty-sixth.ord
+thirty-seventh.ord thirty-eighth.ord thirty-ninth.ord
+fourtieth.ord
+fourty-first.ord fourty-second.ord fourty-third.ord
+fourty-fourth.ord fourty-fifth.ord fourty-sixth.ord
+fourty-seventh.ord fourty-eighth.ord fourty-ninth.ord
+fiftieth.ord
+fifty-first.ord fifty-second.ord fifty-third.ord
+fifty-fourth.ord fifty-fifth.ord fifty-sixth.ord
+fifty-seventh.ord fifty-eighth.ord fifty-ninth.ord
+sixtieth.ord
+sixty-first.ord sixty-second.ord sixty-third.ord
+sixty-fourth.ord sixty-fifth.ord sixty-sixth.ord
+sixty-seventh.ord sixty-eighth.ord sixty-ninth.ord
+seventieth.ord
+seventy-first.ord seventy-second.ord seventy-third.ord
+seventy-fourth.ord seventy-fifth.ord seventy-sixth.ord
+seventy-seventh.ord seventy-eighth.ord seventy-ninth.ord
+eightieth.ord
+eighty-first.ord eighty-second.ord eighty-third.ord
+eighty-fourth.ord eighty-fifth.ord eighty-sixth.ord
+eighty-seventh.ord eighty-eighth.ord eighty-ninth.ord
+ninetieth.ord
+ninety-first.ord ninety-second.ord ninety-third.ord
+ninety-fourth.ord ninety-fifth.ord ninety-sixth.ord
+ninety-seventh.ord ninety-eighth.ord ninety-ninth.ord
+DAY-ORDINALS.ord ORDINALS.ord :
+(Wd- & {M+} & Ss*o+);
+
+% EQUATIONS ETC.
+% The below is just barely enough to parse just very simple equation
+% and expressions, nothing complex -- no general math or anything like
+% that. Relations are treated as "transitive verbs", taking a subject
+% and requiring an object.
+
+% Relations
+% "verb" use, e.g. "( p < 0.01 )" for "( p is less than 0.01 )"
+=.v <.v >.v =<.v >=.v ==.v eq.v ne.v lt.v lte.v le.v gt.v gte.v ge.v
+equiv.v sim.v simeq.v approx.v ~.v:
+([S-] or EQ*r-) & ([O+] or EQ*r+) &
+(Xd- & (Xc+ or <costly-null>) & (MX- or MVa-));
+
+% Binary operators:
+% these occur in "simple" expressions
+*.v "/.v" +.v -.v x.v:
+([S-] or EQ-) & ([O+] or EQ+) &
+(Xd- & (Xc+ or <costly-null>) & (MX- or MVa-));
+
+% Allows parsing of "dollars per day" or "mL/sec" but is somewhat
+% inconsistent with the equation persing otherwise described below.
+% XXX overall, eqn parsing could be strengthened.
+per "/.per": Us+ & Mp-;
+
+% Binary operators, strict:
+% Here EQt attaches only to terms, which may be numbers or letters.
+% By contrast, EQrr can only attach to relations (=, < > etc.)
++.eq -.eq *.eq "/.eq" x.eqn:
+(EQt+ & EQt-) & (EQrr- or EQrr+ or AN+);
+
+->.eq -->.eq: (S- & O+) & (AN+ or (Xd- & Xc+ & MX-));
+
+% "adverb" use, e.g. "< 10" for "less than 10"
+=.e <.e =<.e <=.e >.e >=.e +.e -.e x.e: EN+;
+
+% TODO: un-parenthesized cases, e.g.
+% - preparations of 5 x 10(8) cfu/ml are made
+% - the strength was in the order of gerE > cotD > yfhP P2 > yfhP P1
+% also remember "-->"
+
+A.eq B.eq C.eq D.eq E.eq F.eq G.eq H.eq I.eq J.eq K.eq L.eq M.eq
+N.eq O.eq P.eq Q.eq R.eq S.eq T.eq U.eq V.eq W.eq X.eq Y.eq Z.eq
+a.eq b.eq c.eq d.eq e.eq f.eq g.eq h.eq i.eq j.eq k.eq l.eq m.eq
+n.eq o.eq p.eq q.eq r.eq s.eq t.eq u.eq v.eq w.eq x.eq y.eq z.eq:
+EQt+ or EQt-;
+
+fiscal.i: TY+ & <noun-main-s>;
+
+or_so: ND- & {{@L+} & DD-} & (Dmcn+ or (<noun-sub-p> & <noun-main-p>));
+
+%VERBS
+
+<MX-PHRASE>: Xd- & (Xc+ or <costly-null>) & (MX*p- or MVg-);
+<OPENER>: {Xd-} & Xc+ & COp+;
+
+% These are the verb-form expressions for ordinary verbs.
+%
+% <marker-past> is a marker which should never be used in a link.
+% It is used to flag past-tense forms in the dictionary. It's only use
+% is to supply an answer to the "isPastTense" call in the Java API.
+% which is needed by relex-version 1.2.0 and earlier. Newer versions
+% use the v-d, w-d, and q-d tags to identify past-tense verbs, and so
+% the Java API is no longer needed. It should be marked obsolete/deprecated
+% as soon as possible, and removed by late-2010/early-2011
+
+<marker-past>: XXXPAST+;
+<verb-ico>: {@E-} & ((I- & {@E-}) or ({CO-} & Wi-));
+<verb-pl,i>: ({@E-} & (Sp- or (RS- & Bp-))) or <verb-ico>;
+<verb-pl>: {@E-} & (Sp- or (RS- & Bp-));
+<verb-s>: {@E-} & (Ss- or (RS- & Bs-));
+<verb-i>: {@E-} & I-;
+<verb-sp,pp>: <marker-past> or ({@E-} & (S- or (RS- & B-) or PP-));
+<verb-sp>: <marker-past> or ({@E-} & (S- or (RS- & B-)));
+<verb-pp>: {@E-} & PP-;
+<verb-pg>: {@E-} & (Pg- or Mg-);
+<verb-pv>: {@E-} & (Pv- or Mv-) & {@MV+};
+<verb-pv-b>: {@E-} & (Pv- or Mv-);
+
+<verb-ge>:
+ {@E-} & (
+ <MX-PHRASE>
+ or <OPENER>
+ or ({[DP-]} & ((Ss*g+ & <CLAUSE>) or SIs*g- or <costly-null>))
+ or [DP- & J-]
+ or [[Wq- & PF+]]);
+
+% ({[[Ds-]]} & OF+) : "a running of the bulls" "a polishing of prose"
+% AJ: allows use of gerunds as adjectives: "described as smooth and obliging"
+% <noun-and-u>: allows use of gerunds as nouns.
+% VJ*g: ??? this is commented out, where would this occur?
+<verb-ge-d>:
+ (<noun-modifiers> &
+ (Dmu- or [[()]]) &
+ (({[[Ds-]]} & OF+) or [[()]]) &
+ ((<noun-sub-s> & {@MXs+} &
+ ((Ss+ & <CLAUSE>) or SIs- or Os- or J-)) or
+ AJra- or AJla+ or
+ <noun-and-u>)) or
+ [[AN+]];
+
+<verb-pg,ge>:
+ {@E-} & (
+ <MX-PHRASE>
+ or <OPENER>
+ or ({[DP-]} & ((Ss*g+ & <CLAUSE>) or SIs*g- or <costly-null>))
+ or Mg-
+ or Pg-
+ or [DP- & J-]
+ or [[Wq- & PF+ & {@MV+}]]);
+
+<verb-phrase-opener>:
+ {@E-} & {@MV+} & (
+ <MX-PHRASE>
+ or <OPENER>
+ or [[Wq- & PF+ & {@MV+} & {CC+}]]);
+
+% These are the verb-form expressions for special verbs that can take
+% filler-"it" as a subject.
+
+<verb-s-pl,i>: {@E-} & (Sp- or If- or (RS- & Bp-) or Wi-);
+<verb-s-s>: {@E-} & (Ss- or SFsi- or (RS- & Bs-));
+<verb-s-sp,pp>: <marker-past> or ({@E-} & (S- or SFsi- or PPf- or (RS- & B-)));
+<verb-s-sp>: <marker-past> or ({@E-} & (S- or SFsi- or (RS- & B-)));
+<verb-s-pp>: {@E-} & PPf-;
+<verb-s-pg>: {@E-} & (Pgf- or Mg-);
+<verb-s-pv>: {@E-} & (Pvf- or Mv-) & {@MV+};
+<verb-s-pv-b>: {@E-} & (Pvf- or Mv-);
+
+% These are the verb-form expressions for special verbs that can take
+% either filler-"it" or filler-"there" as a subject.
+
+<verb-x-pl,i>: {@E-} & (Sp- or SFp- or If- or (RS- & Bp-) or Wi-);
+<verb-x-s>: {@E-} & (Ss- or SFs- or (RS- & Bs-));
+<verb-x-s,u>: {@E-} & (Ss- or SFs- or SFu- or (RS- & Bs-));
+<verb-x-sp,pp>: <marker-past> or ({@E-} & (S- or SF- or (RS- & B-) or PPf-));
+<verb-x-sp>: <marker-past> or ({@E-} & (S- or SF- or (RS- & B-)));
+<verb-x-pp>: {@E-} & PPf-;
+<verb-x-pg>: {@E-} & (Pgf- or Mg-);
+<verb-x-pg,ge>:
+ {@E-} & (
+ <MX-PHRASE>
+ or <OPENER>
+ or ({[DP-]} & ((Ss*g+ & <CLAUSE>) or SIs*g- or <costly-null>))
+ or Mg-
+ or Pgf-
+ or [DP- & J-]
+ or [[Wq- & PF+ & {@MV+}]]);
+
+% conjoined verbs.
+% VJr == left
+% VJl == right
+% VJb == but
+% VJd == ditransitive
+% VJn == neither-nor
+%
+% VJ*s == singular subject
+% VJ*p == plural subject
+% VJ*g == conjoined gerunds "He was running and jumping"
+% VJ*h == past participle (PP- link) "He had run and jumped"
+%
+% The following control whether the conjunction can take an object.
+% The conjunction should take an object if both verbs are transitive,
+% e.g. "I saw and greeted Sue", which should parse as
+% "I (saw and greeted) Sue".
+% VJ**i == intranstive
+% VJ**t == transitive
+%
+% s == singluar, pl == plural, sp == singular or plural
+% g == gerund
+<verb-and-s->: {@E-} & VJrs-;
+<verb-and-s+>: {@E-} & VJls+;
+<verb-and-pl->: {@E-} & VJrp-;
+<verb-and-pl+>: {@E-} & VJlp+;
+<verb-and-sp->: {@E-} & VJr-;
+<verb-and-sp+>: {@E-} & VJl+;
+<verb-and-sp-i->: {@E-} & VJr*i-;
+<verb-and-sp-i+>: ({@E-} & VJl*i+) or (VJn*i+ & Dn-) or (VJb*i+ & Db-);
+<verb-and-sp-t->: {@E-} & VJr*t-;
+<verb-and-sp-t+>: {@E-} & VJl*t+;
+<verb-and-pg->: {@E-} & VJrg-;
+<verb-and-pg+>: {@E-} & VJlg+;
+<verb-and-had->: {@E-} & VJrh-;
+<verb-and-had+>: {@E-} & VJlh+;
+
+<verb-and-sp-t>:
+ <verb-and-sp-t-> or
+ <verb-and-sp-t+> or
+ (VJn*t+ & Dn-);
+
+% Verb macros making use of above connectors.
+% plural-infinitive macro; the cost on $1 encourages any MV links to
+% attach to the "and.j-v" instead of to the individual verb.
+
+
+% singular present tense macro; same comments as above...
+
+
+% present tense, but allows transitive connectinos to 'and'
+
+
+% past tense macro, intransitive variation
+
+
+% past tense macro, transitive variation
+
+
+% Same as above, but without the PP link
+
+
+
+
+% as above but for past participles
+
+
+% the filler-it variation of the above rules.
+
+
+% This may be too broad ...
+
+
+
+
+% I haven't completely verified this one, it may be buggy..
+
+
+% XXX TODO need to provide macro-ized versions for <verb-s-s>, <verb-s-sp>
+% and <verb-s-sp,pp> variants as well. Maybe. I can't think of good
+% examples that actually need this.
+
+% AUXILIARY VERBS
+
+%<vc-do>: (((B- or O+ or [[@MV+ & O*n+]] or Vd+ or ({N+} & (CX- or [[()]]))) & {@MV+})
+%or ({N+} & I*d+));
+%do.v: ({@E-} & (Sp- or SFp- or (RS- & Bp-) or Wi-) & <vc-do>)
+%or ((SIp+ or SFIp+) & (({Q-} & I*d+) or CQ-)) or
+%({@E-} & I- & ((B- or O+ or [[@MV+ & O*n+]] or CX-) & {@MV+}));
+%does.v: (<verb-x-s> & <vc-do>) or ((SIs+ or SFIs+) & (({Q-} & I*d+) or CQ-));
+%did.v: (<verb-x-sp> & <vc-do>) or ((SI+ or SFI+) & (({Q-} & I*d+) or CQ-));
+%done.v: (<verb-pp> & (B- or O+ or [[@MV+ & O*n+]] or Vd+)) or <verb-pv> or <verb-phrase-opener>;
+%doing.v: <verb-pg> & (O+ or B- or [[@MV+ & O*n+]] or Vd+) & {@MV+};
+%doing.g: ((O+ or B- or [[@MV+ & O*n+]] or Vd+) & {@MV+} & <verb-ge>) or <verb-ge-d>;
+%
+%don't: (({Q-} & (SIp+ or SFIp+) & I*d+) or ({@E-} & (Sp- or SFp- or
+%(RS- & Bp-) or Wi-))) & (I*d+ or [[()]]);
+%doesn't: (({Q-} & (SIs+ or SFIs+) & I*d+) or <verb-x-s>) &
+%(I*d+ or [[()]]);
+%didn't: <marker-past> or ((({Q-} & (SI+ or SFI+)) or ({@E-} & (S- or SF- or
+%(RS- & B-)))) & (I*d+ or [[()]]));
+
+%Mike replaced "{Q-}" with "(Rw- or Q- or [()])"
+
+<vc-do>:
+ ((B- or O+ or [[@MV+ & O*n+]] or Vd+ or ({N+} & (CX- or [[()]]))) & {@MV+})
+ or ({N+} & I*d+);
+
+% I used verb-and-sp-i but maybe verb-and-pl is better?
+do.v:
+ ({@E-} & (Sp- or SFp- or (RS- & Bp-) or ({Ic-} & Wi-)) & <vc-do>)
+ or (<verb-and-sp-i-> & ([<vc-do>] or ()))
+ or (<vc-do> & <verb-and-sp-i+>)
+ or ((SIp+ or SFIp+) & (((Rw- or ({Ic-} & Q-) or [()]) & I*d+) or CQ-))
+ or ({@E-} & I- & ((B- or O+ or [[@MV+ & O*n+]] or CX-) & {@MV+}));
+
+does.v:
+
+ ((<verb-x-s> & (<vc-do>))
+ or (<verb-and-s-> & ([(<vc-do>)] or ()))
+ or ((<vc-do>) & <verb-and-s+>))
+ or ((SIs+ or SFIs+) & (((Rw- or ({Ic-} & Q-) or [()]) & I*d+) or CQ-));
+
+did.v-d:
+ (<verb-x-sp> & <vc-do>)
+ or (<verb-and-sp-i-> & <vc-do>) or (<vc-do> & <verb-and-sp-i+>)
+ or ((SI+ or SFI+) & (((Rw- or ({Ic-} & Q-) or [()]) & I*d+) or CQ-));
+%
+% XXX why not <vc-do> here ?
+% <verb-pv-b>: "I want it done." "I want the job done"
+% Os+ & @MV+: "I've done that chore many times"
+<vc-done>:
+ B-
+ or (O+ & {@MV+})
+ or [[@MV+ & O*n+]]
+ or Vd+;
+
+% <verb-pv-b> & <vc-done>: Pv- & B-: "he fixed what damage there had been done"
+done.v:
+
+ ((<verb-pp> & (<vc-done>)) or
+ (<verb-and-had-> & (([<vc-done>]) or ())) or
+ ((<vc-done>) & <verb-and-had+>))
+ or <verb-phrase-opener>
+ or (<verb-pv-b> & <vc-done>)
+ or S-;
+
+% adjectival modifier: "I am done working", "I am through being mad"
+done.a finished.a through.a:
+ ({@E-} & Pa- & {Pg+ or Os+ or @MV+}) or
+ (AJra- & {@MV+}) or
+ ({@MV+} & AJla+);
+
+doing.v: <verb-pg> & (O+ or B- or [[@MV+ & O*n+]] or Vd+) & {@MV+};
+doing.g: ((O+ or B- or [[@MV+ & O*n+]] or Vd+) & {@MV+} & <verb-ge>) or <verb-ge-d>;
+better.i fine.i ok.i okay.i OK.i poorly.i well.i: {EE-} & Vd-;
+
+don't don’t:
+ (((Rw- or ({Ic-} & Q-) or [()]) & (SIp+ or SFIp+) & I*d+) or
+ ({@E-} & (Sp- or SFp- or (RS- & Bp-) or ({Ic-} & Wi-)))) & (I*d+ or [[()]]);
+
+doesn't doesn’t:
+ (((Rw- or ({Ic-} & Q-) or [()]) & (SIs+ or SFIs+) & I*d+) or
+ <verb-x-s>) & (I*d+ or [[()]]);
+
+didn't.v-d didn’t.v-d:
+ <marker-past> or
+ ((((Rw- or ({Ic-} & Q-) or [()]) & (SI+ or SFI+)) or
+ ({@E-} & (S- or SF- or (RS- & B-)))) & (I*d+ or [[()]]));
+
+<vc-have>:
+ ({@MV+} & TO+) or
+ ((B- or O+) & {@MV+} & {[I*j+ or Pv+]}) or
+ (([[@MV+ & O*n+]] or CX- or [[()]]) & {@MV+}) or
+ ({N+} & PP+);
+
+have.v:
+
+ ((<verb-x-pl,i> & (<vc-have>))
+ or (<verb-and-sp-i-> & ([(<vc-have>)] or ()))
+ or ((<vc-have>) & <verb-and-sp-i+>))
+ or ((SIp+ or SFIp+) & (((Rw- or ({Ic-} & Q-) or [()]) & PP+) or CQ-));
+
+has.v:
+
+ ((<verb-x-s> & (<vc-have>))
+ or (<verb-and-s-> & ([(<vc-have>)] or ()))
+ or ((<vc-have>) & <verb-and-s+>))
+ or ((SIs+ or SFIs+) & (((Rw- or ({Ic-} & Q-) or [()]) & PP+) or CQ-));
+
+had.v-d:
+ ((SI+ or SFI+) & (((Rw- or ({Ic-} & Q-) or [()]) & PP+) or CQ-)) or
+ (<verb-x-sp> & <vc-have>) or
+ (<verb-and-sp-i-> & <vc-have>) or (<vc-have> & <verb-and-sp-i+>) or
+ (<verb-x-pp> &
+ (TO+ or
+ ((B- or O+) & {@MV+} & {[I*j+ or Pv+]}) or
+ (([[@MV+ & O*n+]] or CX-) & {@MV+}))) or
+ [[(SI*j+ or SFI**j+) & PP+ & ((Xd- & CCq- & Xc+) or CCq- or ({{Xd-} & Xc+} & COp+))]];
+
+having.v: <verb-pg> & <vc-have>;
+having.g: (<vc-have> & <verb-ge>) or <verb-ge-d>;
+
+hasn't hasn’t:
+(((Rw- or ({Ic-} & Q-) or [()]) & (SIs+ or SFIs+)) or (<verb-x-s>)) &
+(PP+ or ([[O+]] & {@MV+}) or [[()]]);
+haven't haven’t:
+(((Rw- or ({Ic-} & Q-) or [()]) & (SIp+ or SFIp+)) or ({@E-} & (Sp- or SFp- or
+(RS- & Bp-)))) & (PP+ or ([[O+]] & {@MV+}) or [[()]]);
+hadn't.v-d hadn’t.v-d: <marker-past> or
+((((Rw- or ({Ic-} & Q-) or [()]) & (SI+ or SFI+)) or ({@E-} &
+(S- or SFs- or SFp- or (RS- & B-)))) &
+(PP+ or ([[O+]] & {@MV+}) or [[()]]));
+
+% Give [K+] a cost so as to prefer Pp+ in general
+%<vc-be>:
+% ({@EBm+} & (((O*t+ or [B**t-] or [K+] or BI+ or OF+ or PF- or
+% (Osi+ & R+ & Bs+) or
+% (Opi+ & R+ & Bp+) or
+% [[()]]) & {@MV+}) or
+% (Pp+ & {THi+ or @MV+}) or
+% THb+ or
+% TO+ or
+% Pa+)) or
+% ({N+} & (AF- or Pv+ or I*v+)) or
+% (({N+} or {Pp+}) & Pg*b+);
+
+% no-obj is costly but allows "if it weren't for Sally"
+<vc-be-no-obj>:
+ ({@EBm+} & ((([B**t-] or [K+] or BI+ or OF+ or PF- or
+ (Osi+ & R+ & Bs+) or
+ (Opi+ & R+ & Bp+) or
+ [[()]]) & {@MV+}) or
+ (Pp+ & {THi+ or @MV+}) or
+ THb+ or
+ TO+ or
+ Pa+)) or
+ ({N+} & (AF- or Pv+ or I*v+)) or
+ (({N+} or {Pp+}) & Pg*b+);
+
+<vc-be-obj>:
+ {@EBm+} & O*t+ & {@MV+};
+
+<vc-be-obj-sp>:
+ {@EBm+} & (Ost+ or Opt+) & {@MV+};
+
+<vc-be-obj-u>:
+ {@EBm+} & Out+ & {@MV+};
+
+<vc-be>: <vc-be-no-obj> or <vc-be-obj>;
+<vc-be-sp>: <vc-be-no-obj> or <vc-be-obj-sp>;
+
+
+% Colon can be used as a synonym for "is"
+% "The answer to your question: yes"
+% "The capital of Germany: Berlin"
+":.v":
+ <verb-x-s> & <vc-be>;
+
+% verb-x-s,u: "there is blood on his hands"
+% Unfortunately, this allows "There is chasing dogs", which pairs SFu to Op
+% and has to be removed via post-processing.
+is.v:
+ (<verb-x-s,u> & <vc-be>) or
+ (<verb-and-s-> & <vc-be>) or (<vc-be> & <verb-and-s+>) or
+ (((Rw- or ({Ic-} & Q-) or [()]) & (SIs+ or SFIs+)) & <vc-be>);
+
+'s.v ’s.v: [[(<verb-x-s,u> &
+(({@EBm+} & (((O*t+ or [K+] or BI+ or OF+ or
+(Osi+ & R+ & Bs+) or (Opi+ & R+ & Bp+)) & {@MV+}) or
+(Pp+ & {THi+ or @MV+}) or THb+ or TO+ or Pa+)) or ({Pp+} & Pg+) or Pv+ or PP+)) or
+(SIs+ & PF-)]];
+
+% are.v:
+% (({@E-} & (Spx- or SFp- or (RS- & Bp-))) or
+% ((Rw- or ({Ic-} & Q-) or [()]) & (SIpx+ or SFIp+))) & <vc-be>;
+rr.v: S- &O+;
+
+% Don't allow are.v with uncountable noun objects.
+% Ss*t-: "What he wants are the cats"
+% "What John loves about this movie are the sound effects"
+are.v:
+ ({@E-} & (Spx- or Ss*t- or SFp- or (RS- & Bp-)) & <vc-be-sp>) or
+ ((Rw- or ({Ic-} & Q-) or [()]) & (SIpx+ or SFIp+) & <vc-be-sp>);
+
+was.v-d:
+ <marker-past> or
+ (<verb-x-s,u> & <vc-be>) or
+ (<verb-and-s-> & <vc-be>) or (<vc-be> & <verb-and-s+>) or
+ ({@E-} & SX- & <vc-be>) or
+ (((Rw- or ({Ic-} & Q-) or [()]) & (SFIs+ or SIs+ or SXI+)) & <vc-be>);
+
+% XXX probably should be verb-and-sp-i- etc !?
+were.v-d:
+ <marker-past>
+ or (({@E-} & (Spx- or SFp- or [[Ss-]] or [[SX-]] or (RS- & Bp-))) & <vc-be>)
+ or ((Rw- or ({Ic-} & Q-) or [()]) & (SIpx+ or SFIp+) & <vc-be>)
+ or (<verb-and-sp-> & <vc-be>)
+ or (<vc-be> & <verb-and-sp+>)
+ or [[(SI*j+ or SFI**j+) & <vc-be> & ((Xd- & CCq- & Xc+) or CCq- or ({{Xd-} & Xc+} & COp+))]];
+
+% XXX the verb-and construction is probably too broad.
+am.v:
+ ((({@E-} & SX-) or ((Rw- or ({Ic-} & Q-) or [()]) & SXI+)) & <vc-be>) or
+ (<verb-and-sp-> & <vc-be>) or (<vc-be> & <verb-and-sp+>);
+
+% S*x- used for passive participles: "this action be taken".
+% XXX I used verb-and-sp-i- but maybe this is wrong ..
+% "Show me my notes and be nice about it."
+% ({@E-} & I- & B- & O+):
+% "What are the chances that Einstein could really be a genius?"
+be.v:
+ ({@E-} & (Ix- or ({Ic-} & Wi-) or [S*x-]) & <vc-be>)
+ or (<verb-and-sp-i-> & ([<vc-be>] or ()))
+ or (<vc-be> & <verb-and-sp-i+>)
+ or ({@E-} & I- & B- & O+);
+
+been.v: {@E-} & PPf- & <vc-be>;
+
+% S- & Pa+ & Xc+ & Ce+: "The knife being dull, he ..."
+% (S- & Xd- & MVg- & Pa+) "..., the knife being dull."
+being.v:
+ ((({@EBm+} &
+ (((O*t+ or [B**t-] or Pp+ or K+ or OF+ or BI+ or TO+ or THb+)
+ & {@MV+})
+ or Pa+))
+ or AF- or Pv+)
+ & <verb-pg,ge>)
+ or <verb-ge-d>
+ or (S- & Pa+ & Xc+ & Ce+)
+ or (S- & Xd- & MVg- & Pa+);
+
+isn't isn’t:
+ (<verb-x-s> or ((Rw- or ({Ic-} & Q-) or [()]) & (SIs+ or SFIs+))) & <vc-be>;
+
+wasn't.v-d wasn’t.v-d:
+ <marker-past>
+ or ((({@E-} & (Ss- or SX- or SFs- or (RS- & Bs-)))
+ or ((Rw- or ({Ic-} & Q-) or [()]) & (SI*+ or SXI+ or SFIs+))) & <vc-be>);
+
+aren't aren’t:
+ (({@E-} & (Spx- or SFp- or (RS- & Bp-))) & <vc-be>)
+ or ((Rw- or ({Ic-} & Q-) or [()]) & (SIpx+ or SFIp+) & <vc-be>);
+
+% [[Ss-]]: "If it weren't for Joe, ..."
+weren't.v-d weren’t.v-d:
+ <marker-past>
+ or (({@E-} & (Spx- or SFp- or [[Ss-]] or (RS- & Bp-))) & <vc-be>)
+ or ((Rw- or ({Ic-} & Q-) or [()]) & (SIpx+ or SFIp+) & <vc-be>);
+
+% XXX probably should be verb-and-sp-i- etc !?
+will.v can.v may.v must.v could.v might.v shall.v:
+ ((SI+ or SFI+) & (((Rw- or ({Ic-} & Q-) or [()]) & I+) or CQ-)) or
+ ({N+} & {@E-} & (S- or SF- or (RS- & B-)) & (I+ or (CX- & {@MV+}) or [[()]])) or
+ (<verb-and-sp-> & {N+} & {@E-} & I+) or
+ ({N+} & {@E-} & I+ & <verb-and-sp+>);
+
+should.v:
+ ((SI+ or SFI+) & (((Rw- or ({Ic-} & Q-) or [()]) & I+) or CQ-)) or
+ ({N+} & {@E-} & (S- or SF- or (RS- & B-)) & (I+ or (CX- & {@MV+}) or [[()]])) or
+ (<verb-and-sp-> & I+) or (I+ & <verb-and-sp+>) or
+ [[(SI*j+ or SFI**j+) & I+ & ((Xd- & CCq- & Xc+) or CCq- or ({{Xd-} & Xc+} & COp+))]];
+
+would.v:
+ ((SI+ or SFI+) & (((Rw- or ({Ic-} & Q-) or [()]) & {Vw+} & I+) or CQ-)) or
+ ({N+} & {@E-} & (S- or SF- or (RS- & B-)) & (({RT+} & I+) or (CX- & {@MV+}) or [[()]])) or
+ (<verb-and-sp-> & I+) or (I+ & <verb-and-sp+>);
+
+ought.v:
+ (((Rw- or ({Ic-} & Q-) or [()]) & (SI+ or SFI+)) or
+ ({@E-} & (S- or SF- or (RS- & B-))) or
+ <verb-and-sp->) &
+ (TO+ or (N+ & I+));
+
+won't can't mustn't couldn't shouldn't cannot needn't
+won’t can’t mustn’t couldn’t shouldn’t needn’t:
+ ((Rw- or ({Ic-} & Q-) or [()]) & (SI+ or SFI+) & I+) or
+ ({@E-} & (S- or SF- or (RS- & B-)) & (I+ or [[()]])) or
+ (<verb-and-sp-> & {@E-} & I+) or
+ ({@E-} & I+ & <verb-and-sp+>);
+
+wouldn't wouldn’t:
+ ((Rw- or ({Ic-} & Q-) or [()]) & (SI+ or SFI+) & {RT+} & I+) or
+ ({@E-} & (S- or SF- or (RS- & B-)) & (({RT+} & I+) or [[()]])) or
+ (<verb-and-sp-> & {@E-} & (({RT+} & I+) or [[()]])) or
+ ({@E-} & (({RT+} & I+) or [[()]]) & <verb-and-sp+>);
+
+% ===================================================================
+% COMMON VERB CATEGORIES (The last number of the file name indicates
+% the verb form: 1=plural-infinitive, 2=singular, 3=past("ed"),
+% 4=progressive("-ing"), 5=gerund("-ing".)
+
+% abbreviations for ditransitive and optionally ditranstive verbs
+% ditranstive verbs take a direct and indirect object
+% e.g. "I gave her a rose"
+% B- & O+ & O*n+: "What are the chances you'll give her a kiss?"
+<vc-ditrans>:
+ (O+ & {[[@MV+]]} & O*n+ & {VJd+})
+ or ({@E-} & B- & O+ & O*n+);
+
+<vc-opt-ditrans>:
+ (O+ & {{[[@MV+]]} & O*n+} & {VJd+})
+ or ({@E-} & B- & O+ & O*n+);
+
+<vc-opt-ditrans-costly>:
+ (O+ & {{[[@MV+]]} & [O*n+]} & {VJd+})
+ or ({@E-} & B- & O+ & O*n+);
+
+% -----------------------------------------------------------
+% common intransitive verbs
+<vc-intrans>: {@MV+};
+
+% XXX Hmmm. There is a fair number of verbs in here that are "weakly"
+% transitive, i.e. are transitive in various rare usages:
+% "I ambled the horse", "I hydroplaned the car", etc. Per theory of
+% functional grammar and related, transitivity should be taken as
+% variable, so e.g. we could assign a high cost to the transitive use
+% of some of these verbs ... Note that most of will never be transitive
+% in the active present tense: one never says "it rains cats and dogs".
+% I'm too lazy to manually sort through this, si, instead, there is a
+% high-cost {[[O+]]} added to some of these.
+%
+% accrue.v ache.v acquiesce.v ad-lib.v adhere.v adjoin.v alight.v
+/en/words/words.v.1.1:
+ ((<verb-pl,i> & (({[[O+]]} & <vc-intrans>))) or
+ (<verb-and-pl-> & ([(({[[O+]]} & <vc-intrans>))] or ())) or
+ ((({[[O+]]} & <vc-intrans>)) & <verb-and-pl+>));
+
+% accounts.v accrues.v aches.v acquiesces.v ad-libs.v adheres.v
+/en/words/words.v.1.2:
+ ((<verb-s> & (<vc-intrans>)) or
+ (<verb-and-s-> & ([(<vc-intrans>)] or ())) or
+ ((<vc-intrans>) & <verb-and-s+>));
+
+% accounted.v accrued.v ached.v acquiesced.v ad-libbed.v adhered.v
+/en/words/words.v.1.3:
+ ((<verb-sp,pp> & (({[[O+]]} & <vc-intrans>))) or
+ (<verb-and-sp-i-> & (([({[[O+]]} & <vc-intrans>)]) or ())) or
+ ((({[[O+]]} & <vc-intrans>)) & <verb-and-sp-i+>));
+
+fundheld.v-d strove.v-d:
+ ((<verb-sp,pp> & (<vc-intrans>)) or
+ (<verb-and-sp-i-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-sp-i+>));
+
+% accruing.v aching.v acquiescing.v ad-libbing.v adhering.v adjoining.v
+/en/words/words.v.1.4:
+ ({[[O+]]} & <vc-intrans> & <verb-pg,ge>) or ({@E-} & A+) or <verb-ge-d>;
+
+arisen.v: {@E-} & PP- & {@MV+};
+
+O.K.'d.v-d OK'd.v-d O.K.’d.v-d OK’d.v-d:
+
+ ((<verb-sp,pp> & (<vc-intrans>)) or
+ (<verb-and-sp-i-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-sp-i+>));
+
+% XXX aren't these optional transitive ?
+gells.v O.K.'s.v OK's.v O.K.’s OK’s:
+
+ ((<verb-s> & (<vc-intrans>)) or
+ (<verb-and-s-> & ([(<vc-intrans>)] or ())) or
+ ((<vc-intrans>) & <verb-and-s+>));
+
+O.K.'ing.v OK'ing.v
+O.K.’ing.v OK’ing.v:
+ (<vc-intrans> & <verb-pg,ge>) or ({@E-} & A+) or <verb-ge-d>;
+
+% --------------------------------------------------------------
+% intransitive verbs that can take particles like "up" and "out"
+
+<vc-bulge>: {K+} & {@MV+};
+
+% barge.v booze.v bottom.v bow.v branch.v breeze.v brim.v bulge.v cave.v
+/en/words/words.v.5.1:
+ ((<verb-pl,i> & (<vc-bulge>)) or
+ (<verb-and-pl-> & ([(<vc-bulge>)] or ())) or
+ ((<vc-bulge>) & <verb-and-pl+>));
+/en/words/words.v.5.2:
+ ((<verb-s> & (<vc-bulge>)) or
+ (<verb-and-s-> & ([(<vc-bulge>)] or ())) or
+ ((<vc-bulge>) & <verb-and-s+>));
+/en/words/words.v.5.3:
+
+ ((<verb-sp,pp> & (<vc-bulge>)) or
+ (<verb-and-sp-i-> & (([<vc-bulge>]) or ())) or
+ ((<vc-bulge>) & <verb-and-sp-i+>)) or
+ ({@E-} & A+);
+slunk.v-d:
+ ((<verb-sp,pp> & (<vc-bulge>)) or
+ (<verb-and-sp-i-> & (([<vc-bulge>]) or ())) or
+ ((<vc-bulge>) & <verb-and-sp-i+>));
+
+lay.v-d:
+ ((<verb-sp> & (<vc-bulge>)) or
+ (<verb-and-sp-i-> & (([<vc-bulge>]) or ())) or
+ ((<vc-bulge>) & <verb-and-sp-i+>));
+lain.v:
+ ((<verb-pp> & (<vc-bulge>)) or
+ (<verb-and-had-> & (([<vc-bulge>]) or ())) or
+ ((<vc-bulge>) & <verb-and-had+>));
+/en/words/words.v.5.4:
+ (<vc-bulge> & <verb-pg,ge>) or
+ ({@E-} & A+) or
+ <verb-ge-d>;
+% --------------------------------------------------------------
+
+% irregular -- coming is in words.v.5.4 ...
+<vc-come>: {(K+ & {Pa+}) or [[Pg+]]} & {@MV+};
+come.v:
+ ((<verb-pl,i> & (<vc-come>)) or
+ (<verb-and-pl-> & ([(<vc-come>)] or ())) or
+ ((<vc-come>) & <verb-and-pl+>)) or
+
+ ((<verb-pp> & (<vc-come>)) or
+ (<verb-and-had-> & (([<vc-come>]) or ())) or
+ ((<vc-come>) & <verb-and-had+>)) or
+ ({@E-} & Ix- & O*t+);
+comes.v:
+ ((<verb-s> & (<vc-come>)) or
+ (<verb-and-s-> & ([(<vc-come>)] or ())) or
+ ((<vc-come>) & <verb-and-s+>));
+came.v-d:
+ ((<verb-sp,pp> & (<vc-come>)) or
+ (<verb-and-sp-i-> & (([<vc-come>]) or ())) or
+ ((<vc-come>) & <verb-and-sp-i+>));
+
+% --------------------------------------------------------------
+% optionally transitive verbs
+% abdicate.v abide.v abort.v accelerate.v acclimate.v acclimatize.v
+<vc-tr,intr>: {O+ or B- or [[@MV+ & O*n+]]} & {@MV+};
+
+/en/words/words.v.2.1:
+ ((<verb-pl,i> & (<vc-tr,intr>)) or
+ (<verb-and-pl-> & ([(<vc-tr,intr>)] or ())) or
+ ((<vc-tr,intr>) & <verb-and-pl+>));
+/en/words/words.v.2.2:
+ ((<verb-s> & (<vc-tr,intr>)) or
+ (<verb-and-sp-i-> & (([<vc-tr,intr>]) or ())) or
+ ((<vc-tr,intr>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+/en/words/words.v.2.3:
+
+ ((<verb-sp,pp> & (<vc-tr,intr>)) or
+ (<verb-and-sp-i-> & (([<vc-tr,intr>]) or ())) or
+ ((<vc-tr,intr>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+
+/en/words/words.v.2.4:
+ <verb-pg> & <vc-tr,intr>;
+
+/en/words/words.v.2.5:
+ (<vc-tr,intr> & <verb-ge>) or ({@E-} & A+) or <verb-ge-d>;
+
+shrank.v-d withdrew.v-d sank.v-d forgave.v-d hove.v-d
+spoilt.v-d unbent.v-d overfed.v-d:
+
+ ((<verb-sp,pp> & (<vc-tr,intr>)) or
+ (<verb-and-sp-i-> & (([<vc-tr,intr>]) or ())) or
+ ((<vc-tr,intr>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ ({@E-} & A+);
+
+shrunk.v withdrawn.v sunk.v forgiven.v:
+
+ ((<verb-pp> & (<vc-tr,intr>)) or
+ (<verb-and-had-> & (([<vc-tr,intr>]) or ())) or
+ ((<vc-tr,intr>) & <verb-and-had+>)) or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+
+hurt.v-d thrust.v-d broadcast.v-d outbid.v-d sublet.v-d:
+
+ ((<verb-sp,pp> & (<vc-tr,intr>)) or
+ (<verb-and-sp-i-> & (([<vc-tr,intr>]) or ())) or
+ ((<vc-tr,intr>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or (<verb-ico> & <vc-tr,intr>)
+ or <verb-pv>
+ or ({@E-} & A+)
+ or <verb-phrase-opener>;
+
+% <vc-ditrans>: "She bid him adieu"
+% O+ & I+: "she bade him sit down"
+bid.v-d bade.v-d:
+
+ ((<verb-sp,pp> & (<vc-tr,intr> or <vc-ditrans> or (O+ & {@MV+} & I+))) or
+ (<verb-and-sp-i-> & (([<vc-tr,intr> or <vc-ditrans> or (O+ & {@MV+} & I+)]) or ())) or
+ ((<vc-tr,intr> or <vc-ditrans> or (O+ & {@MV+} & I+)) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or (<verb-ico> & <vc-tr,intr>)
+ or <verb-pv>
+ or ({@E-} & A+)
+ or <verb-phrase-opener>;
+
+% --------------------------------------------------------------
+
+% vc-judge: a lot like vc-delcare, except optionally transitive.
+<vc-judge>: <vc-tr,intr> or
+ ((B- or O+) & ({@MV+} & Pa**j+));
+
+judge.v:
+ ((<verb-pl,i> & (<vc-judge>)) or
+ (<verb-and-pl-> & ([(<vc-judge>)] or ())) or
+ ((<vc-judge>) & <verb-and-pl+>));
+judges.v:
+ ((<verb-s> & (<vc-judge>)) or
+ (<verb-and-sp-i-> & (([<vc-judge>]) or ())) or
+ ((<vc-judge>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+judged.v-d:
+
+ ((<verb-sp,pp> & (<vc-judge>)) or
+ (<verb-and-sp-i-> & (([<vc-judge>]) or ())) or
+ ((<vc-judge>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {{@MV+} & Pa+}) or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+judging.v:
+ <verb-pg> & <vc-judge>;
+judging.g:
+ (<vc-judge> & <verb-ge>) or ({@E-} & A+) or <verb-ge-d>;
+
+% --------------------------------------------------------------
+
+<vc-rise>: {K+ or OD+} & {@MV+};
+rise.v fall.v:
+ ((<verb-pl,i> & (<vc-rise>)) or
+ (<verb-and-pl-> & ([(<vc-rise>)] or ())) or
+ ((<vc-rise>) & <verb-and-pl+>));
+rises.v falls.v:
+ ((<verb-s> & (<vc-rise>)) or
+ (<verb-and-s-> & ([(<vc-rise>)] or ())) or
+ ((<vc-rise>) & <verb-and-s+>));
+rose.v-d fell.v-d:
+ ((<verb-sp,pp> & (<vc-rise>)) or
+ (<verb-and-sp-i-> & (([<vc-rise>]) or ())) or
+ ((<vc-rise>) & <verb-and-sp-i+>));
+
+risen.v:
+ ((<verb-pp> & (<vc-rise>)) or
+ (<verb-and-had-> & (([<vc-rise>]) or ())) or
+ ((<vc-rise>) & <verb-and-had+>));
+
+fallen.v:
+
+ ((<verb-pp> & (<vc-rise>)) or
+ (<verb-and-had-> & (([<vc-rise>]) or ())) or
+ ((<vc-rise>) & <verb-and-had+>)) or
+ ({@E-} & A+);
+rising.v falling.v:
+ (<vc-rise> & <verb-pg,ge>) or
+ ({@E-} & A+) or
+ <verb-ge-d>;
+
+% --------------------------------------------------------------
+% words.v.6: Optionally transitive verbs that can take particles
+% like "up" and "out" -- see also words.v.8
+% average.v back.v bail.v bang.v beam.v beef.v bellow.v bend.v bind.v
+% The [[@MV+ & O*n+]] term allows some bad parses, e.g. allows:
+% "she walked out of the room two minutes"
+%
+% ({@E-} & B- & O+):
+% "What are the chances that Sherlock could really CATCH the criminal?"
+% ({@E-} & B- & O+ & Pa**j+):
+% "What are the chances she will really DRIVE him crazy?"
+% ({@E-} & B- & O+ & K+):
+% "What are the chances she will DRIVE him up to the farm?"
+%
+% Pa**j link: "The thugs beat him senseless" "You are driving me crazy"
+% "Make it nice and soft"
+% XXX However, very few of these verbs actually take the Pa**j link ...
+% and so should be reclassed.
+<vc-fill>:
+ ((K+ & {[[@MV+]]} & O*n+)
+ or ({O+ or B-} & {K+})
+ or ((O+ or B-) & ({@MV+} & Pa**j+))
+ or ({@E-} & B- & O+ & {Pa**j+ or K+})
+ or [[@MV+ & O*n+]]
+ ) & {@MV+};
+
+/en/words/words.v.6.1:
+
+ ((<verb-pl,i> & (<vc-fill>)) or
+ (<verb-and-pl-> & ([(<vc-fill>)] or ())) or
+ ((<vc-fill>) & <verb-and-pl+>));
+
+/en/words/words.v.6.2:
+ ((<verb-s> & (<vc-fill>)) or
+ (<verb-and-sp-i-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+/en/words/words.v.6.3:
+
+ ((<verb-sp,pp> & (<vc-fill>)) or
+ (<verb-and-sp-i-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({@E-} & A+) or
+ ({K+} & <verb-phrase-opener>);
+
+split.v-d spread.v-d beat.v-d fit.v-d shut.v-d cast.v-d:
+
+ ((<verb-sp,pp> & (<vc-fill>)) or
+ (<verb-and-sp-i-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-fill>) or
+ (<verb-pv> & {K+}) or
+ ({@E-} & A+) or
+ ({K+} & <verb-phrase-opener>);
+
+ate.v-d bit.v-d blew.v-d broke.v-d drank.v-d
+drove.v-d flew.v-d froze.v-d hid.v-d ran.v-d
+rang.v-d rode.v-d sprang.v-d
+stalked.v-d woke.v-d test-drove.v-d forbore.v-d oversaw.v-d throve.v-d shrove.v-d
+countersank.v-d outgrew.v-d strode.v-d offsetted.v-d overthrew.v-d
+partook.v-d begot.v-d overdid.v-d smote.v-d stank.v-d quick-froze.v-d
+backbit.v-d awoke.v-d redid.v-d chidded.v-d reran.v-d rived.v-d
+befell.v-d outrode.v-d betrode.v-d outdid.v-d ridded.v-d
+deep-froze.v-d forbad.v-d deep-freezed.v-d retook.v-d interwove.v-d
+bespoke.v-d underwent.v-d slew.v-d overdrew.v-d overcame.v-d
+outwore.v-d foreknew.v-d wove.v-d trod.v-d outwent.v-d:
+
+ ((<verb-sp,pp> & (<vc-fill>)) or
+ (<verb-and-sp-i-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+beaten.v bitten.v blown.v broken.v driven.v drunk.v
+eaten.v flown.v frozen.v hidden.v ridden.v rung.v
+sprung.v stricken.v swum.v woken.v
+befallen.v interwoven.v overborne.v outgone.v outgrown.v
+test-driven.v outdone.v shrunken.v countersunk.v
+bespoken.v underlain.v partaken.v redone.v overdone.v
+outridden.v deep-frozen.v bestrid.v undergone.v
+outbidden.v shorn.v outworn.v bestridden.v stunk.v borne.v
+slain.v woven.v riven.v backbitten.v overlain.v bestrewn.v
+forborne.v quick-frozen.v browbeaten.v aquitted.v
+overseen.v smitten.v overdrawn.v striven.v thriven.v
+shriven.v backslidden.v retaken.v trodden.v chidden.v
+begotten.v sown.v sewn.v sawn.v hewn.v cloven.v
+foreknown.v overthrown.v strewn.v awoken.v bidden.v
+stridden.v slain_dead:
+
+ ((<verb-pp> & (<vc-fill>)) or
+ (<verb-and-had-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-had+>)) or
+ (<verb-pv> & {K+}) or
+ ({@E-} & A+) or
+ ({K+} & <verb-phrase-opener>);
+
+run.v:
+ ((<verb-pl,i> & (<vc-fill>)) or
+ (<verb-and-pl-> & ([(<vc-fill>)] or ())) or
+ ((<vc-fill>) & <verb-and-pl+>)) or
+
+ ((<verb-pp> & (<vc-fill>)) or
+ (<verb-and-had-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-had+>)) or
+ (<verb-pv> & {K+}) or
+ ({@E-} & A+) or ({K+} & <verb-phrase-opener>);
+
+/en/words/words.v.6.4:
+ (<verb-pg> & <vc-fill>) or
+ <verb-and-pg-> or <verb-and-pg+>;
+
+/en/words/words.v.6.5:
+ (<vc-fill> & <verb-ge>) or
+ <verb-ge-d> or
+ ({@E-} & A+);
+
+frizz.v frizzle.v prink.v slough.v scuff.v tog.v swot.v:
+
+ ((<verb-pl,i> & (<vc-fill>)) or
+ (<verb-and-pl-> & ([(<vc-fill>)] or ())) or
+ ((<vc-fill>) & <verb-and-pl+>));
+
+% just like <verb-pg> & <vc-fill>, except that "and" is the one
+% XXX TODO review this ...
+and.v-fill:
+ ((VJlg- & VJrg+) & (Pg- or Mg- or ({Xd-} & VJrg-))) & <vc-fill>;
+
+% ------------------------------------------------------------
+% common transitive verbs
+% abandon.v abase.v abbreviate.v abduct.v abet.v abhor.v abolish.v
+%
+% ({@E-} & B- & O+):
+% "What are the chances that Sherlock could really solve a crime?"
+<vc-trans>:
+ (O+
+ or B-
+ or [[@MV+ & O*n+]]
+ or ({@E-} & B- & O+)
+ ) & {@MV+};
+
+/en/words/words.v.4.1 :
+ ((<verb-pl,i> & (<vc-trans>)) or
+ (<verb-and-pl-> & ([(<vc-trans>)] or ())) or
+ ((<vc-trans>) & <verb-and-pl+>));
+/en/words/words-medical.v.4.1:
+ ((<verb-pl,i> & (<vc-trans>)) or
+ (<verb-and-pl-> & ([(<vc-trans>)] or ())) or
+ ((<vc-trans>) & <verb-and-pl+>));
+
+/en/words/words.v.4.2:
+ ((<verb-s> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+/en/words/words-medical.v.4.2:
+ ((<verb-s> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+/en/words/words.v.4.3:
+
+ ((<verb-sp,pp> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ (({@E-} or {@EA-} or {@AN-}) & A+) or
+ <verb-phrase-opener>;
+
+% !?XXX many of the new additions fail some common sentences, such as:
+% The candle guttered. It plummeted to the bottom. Prices plummeted!
+/en/words/words-medical.v.4.3:
+
+ ((<verb-sp,pp> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or <verb-pv>
+ or (({@E-} or {@EA-} or {@AN-}) & A+)
+ or <verb-phrase-opener>;
+
+/en/words/words.v.4.4
+/en/words/words-medical.v.4.4:
+ <verb-pg> & <vc-trans>;
+
+/en/words/words.v.4.5
+/en/words/words-medical.v.4.5:
+ (<vc-trans> & <verb-ge>) or <verb-ge-d>;
+
+forsook.v-d overrode.v-d overtook.v-d rewrote.v-d undid.v-d
+overran.v-d mistook.v-d underwrote.v-d:
+
+ ((<verb-sp> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+hit.v-d misread.v-d shed.v-d rid.v-d overcome.v-d offset.v-d
+overrun.v-d upset.v-d undercut.v-d:
+
+ ((<verb-sp,pp> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-trans>) or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+
+forsaken.v overridden.v overtaken.v rewritten.v undone.v
+beset.v mistaken.v underwritten.v:
+
+ ((<verb-pp> & (<vc-trans>)) or
+ (<verb-and-had-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-had+>)) or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+
+% -----------------------------------------------------------------
+% The simplest transitive, ditransitive constructions
+% i.e. must take an object
+% Almost exactly like words.v.4 above, but ditrans
+<vc-corral>:
+ <vc-trans>
+ or <vc-ditrans>;
+
+corral.v crown.v decant.v ink.v intone.v rope.v:
+
+ ((<verb-pl,i> & (<vc-corral>)) or
+ (<verb-and-pl-> & ([(<vc-corral>)] or ())) or
+ ((<vc-corral>) & <verb-and-pl+>));
+corrals.v crowns.v decants.v inks.v intones.v ropes.v:
+
+ ((<verb-s> & (<vc-corral>)) or
+ (<verb-and-sp-i-> & (([<vc-corral>]) or ())) or
+ ((<vc-corral>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+corralled.v-d crowned.v-d decanted.v-d inked.v-d
+intoned.v-d roped.v-d:
+
+ ((<verb-sp,pp> & (<vc-corral>)) or
+ (<verb-and-sp-i-> & (([<vc-corral>]) or ())) or
+ ((<vc-corral>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or <verb-pv>
+ or (({@E-} or {@EA-} or {@AN-}) & A+)
+ or <verb-phrase-opener>;
+corralling.v crowning.v decanting.v inking.v intoning.v roping.v:
+ <verb-pg> & <vc-corral>;
+corralling.g crowning.g decanting.g inking.g intoning.g roping.g:
+ (<vc-corral> & <verb-ge>) or <verb-ge-d>;
+
+% The simplest optionally-transitive, and ditransitive constructions
+<vc-bake>:
+ {@MV+}
+ or <vc-trans>
+ or <vc-ditrans>;
+
+bake.v dictate.v kiss.v slice.v:
+
+ ((<verb-pl,i> & (<vc-bake>)) or
+ (<verb-and-pl-> & ([(<vc-bake>)] or ())) or
+ ((<vc-bake>) & <verb-and-pl+>));
+bakes.v dictates.v kisses.v slices.v:
+
+ ((<verb-s> & (<vc-bake>)) or
+ (<verb-and-sp-i-> & (([<vc-bake>]) or ())) or
+ ((<vc-bake>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+% A+: "she gave him some slcied bread"
+baked.v-d sliced.v-d:
+
+ ((<verb-sp,pp> & (<vc-bake>)) or
+ (<verb-and-sp-i-> & (([<vc-bake>]) or ())) or
+ ((<vc-bake>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or <verb-pv>
+ or (({@E-} or {@EA-} or {@AN-}) & A+)
+ or <verb-phrase-opener>;
+dictated.v-d kissed.v-d:
+
+ ((<verb-sp,pp> & (<vc-bake>)) or
+ (<verb-and-sp-i-> & (([<vc-bake>]) or ())) or
+ ((<vc-bake>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or <verb-pv>
+ or <verb-phrase-opener>;
+baking.v dictating.v kissing.v slicing.v:
+ <verb-pg> & <vc-bake>;
+baking.g dictating.g kissing.g slicing.g:
+ (<vc-bake> & <verb-ge>) or <verb-ge-d>;
+
+% O+ & K+: "She buttered him up"
+% ditrans: "She buttered him some toast"
+% A+: "She gave him some buttered bread"
+<vc-butter>:
+ <vc-trans>
+ or ((O+ & K+) & {@MV+})
+ or <vc-ditrans>;
+butter.v:
+ ((<verb-pl,i> & (<vc-butter>)) or
+ (<verb-and-pl-> & ([(<vc-butter>)] or ())) or
+ ((<vc-butter>) & <verb-and-pl+>));
+butters.v:
+ ((<verb-s> & (<vc-butter>)) or
+ (<verb-and-s-> & ([(<vc-butter>)] or ())) or
+ ((<vc-butter>) & <verb-and-s+>));
+buttered.v-d:
+
+ ((<verb-sp,pp> & (<vc-butter>)) or
+ (<verb-and-sp-i-> & (([<vc-butter>]) or ())) or
+ ((<vc-butter>) & <verb-and-sp-i+>))
+ or <verb-pv>
+ or (({@E-} or {@EA-} or {@AN-}) & A+);
+buttering.v:
+ <verb-pg> & <vc-butter>;
+buttering.g:
+ (<vc-butter> & <verb-ge>) or <verb-ge-d>;
+
+% -----------------------------------------------------------------
+% words.v.8: Transitive verbs that can take particles like "up" and "out"
+% auction.v bandy.v bar.v batten.v bite.v block.v blot.v blurt.v
+% See also words.v.6 for optionally transitive verbs.
+% XXX TODO: should be reviewed, as some of them are optionally transitive
+%
+% B- & O+ & {K+}:
+% what are the chances she will TRACK him down to the farm?
+%
+<vc-kick>:
+ ((K+ & {[[@MV+]]} & O*n+)
+ or ((O+ or B-) & {K+})
+ or ({@E-} & B- & O+ & {K+})
+ or [[@MV+ & O*n+]]) & {@MV+};
+
+/en/words/words.v.8.1:
+ ((<verb-pl,i> & (<vc-kick>)) or
+ (<verb-and-pl-> & ([(<vc-kick>)] or ())) or
+ ((<vc-kick>) & <verb-and-pl+>));
+/en/words/words.v.8.2:
+ ((<verb-s> & (<vc-kick>)) or
+ (<verb-and-sp-i-> & (([<vc-kick>]) or ())) or
+ ((<vc-kick>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+stole.v-d threw.v-d tore.v-d wore.v-d
+overate.v-d over-ate.v-d forewent.v-d oversewed.v-d forswore.v-d
+foreswore.v-d forwent.v-d:
+ ((<verb-sp,pp> & (<vc-kick>)) or
+ (<verb-and-sp-i-> & (([<vc-kick>]) or ())) or
+ ((<vc-kick>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+stolen.v shaken.v thrown.v torn.v worn.v
+forgone.v curretted.v forsworn.v oversewn.v over-eaten.v
+ foresworn.v overeaten.v:
+
+ ((<verb-pp> & (<vc-kick>)) or
+ (<verb-and-had-> & (([<vc-kick>]) or ())) or
+ ((<vc-kick>) & <verb-and-had+>)) or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({@E-} & A+) or
+ ({K+} & <verb-phrase-opener>);
+
+/en/words/words.v.8.3:
+
+ ((<verb-sp,pp> & (<vc-kick>)) or
+ (<verb-and-sp-i-> & (([<vc-kick>]) or ())) or
+ ((<vc-kick>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({@E-} & A+) or
+ ({K+} & <verb-phrase-opener>);
+
+cut.v:
+
+ ((<verb-sp,pp> & (<vc-kick>)) or
+ (<verb-and-sp-i-> & (([<vc-kick>]) or ())) or
+ ((<vc-kick>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-kick>) or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({@E-} & A+) or ({K+} & <verb-phrase-opener>);
+/en/words/words.v.8.4: <verb-pg> & <vc-kick>;
+/en/words/words.v.8.5:
+ (<vc-kick> & <verb-ge>) or
+ <verb-ge-d>;
+
+% --------------------------------------------------------------
+<vc-raise>: (((O+ or B-) & {OD+}) or [[@MV+ & O*n+]]) & {@MV+};
+raise.v lower.v up.v:
+ ((<verb-pl,i> & (<vc-raise>)) or
+ (<verb-and-pl-> & ([(<vc-raise>)] or ())) or
+ ((<vc-raise>) & <verb-and-pl+>));
+raises.v lowers.v ups.v:
+ ((<verb-s> & (<vc-raise>)) or
+ (<verb-and-sp-i-> & (([<vc-raise>]) or ())) or
+ ((<vc-raise>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+raised.v-d lowered.v-d upped.v-d:
+
+ ((<verb-sp,pp> & (<vc-raise>)) or
+ (<verb-and-sp-i-> & (([<vc-raise>]) or ())) or
+ ((<vc-raise>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+raising.v lowering.v upping.v: <verb-pg> & <vc-raise>;
+raising.g lowering.g upping.g: (<vc-raise> & <verb-ge>) or <verb-ge-d>;
+
+% much like words.v.2.1, except can have "TO" link.
+% tending.g remains in words.v.2.5
+% I tended for years to believe that shepherds tend sheep.
+<vc-tend>: <vc-tr,intr> & {TO+};
+tend.v:
+ ((<verb-pl,i> & (<vc-tend>)) or
+ (<verb-and-pl-> & ([(<vc-tend>)] or ())) or
+ ((<vc-tend>) & <verb-and-pl+>));
+tends.v:
+ ((<verb-s> & (<vc-tend>)) or
+ (<verb-and-sp-i-> & (([<vc-tend>]) or ())) or
+ ((<vc-tend>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+tended.v-d:
+
+ ((<verb-sp,pp> & (<vc-tend>)) or
+ (<verb-and-sp-i-> & (([<vc-tend>]) or ())) or
+ ((<vc-tend>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+tending.v: <verb-pg> & <vc-tend>;
+
+% INTRANSITIVE COMPLEX VERBS (those that do not take O+)
+
+<vc-consent>: {@MV+} & {TO+};
+consent.v endeavor.v hesitate.v proceed.v aspire.v purport.v:
+
+ ((<verb-pl,i> & (<vc-consent>)) or
+ (<verb-and-pl-> & ([(<vc-consent>)] or ())) or
+ ((<vc-consent>) & <verb-and-pl+>));
+consents.v endeavors.v hesitates.v proceeds.v aspires.v purports.v:
+
+ ((<verb-s> & (<vc-consent>)) or
+ (<verb-and-s-> & ([(<vc-consent>)] or ())) or
+ ((<vc-consent>) & <verb-and-s+>));
+consented.v-d endeavored.v-d hesitated.v-d proceeded.v-d
+aspired.v-d purported.v-d:
+
+ ((<verb-sp,pp> & (<vc-consent>)) or
+ (<verb-and-sp-i-> & (([<vc-consent>]) or ())) or
+ ((<vc-consent>) & <verb-and-sp-i+>));
+consenting.v endeavoring.v hesitating.v proceeding.v aspiring.v purporting.v:
+ (<vc-consent> & <verb-pg,ge>) or <verb-ge-d>;
+
+
+<vc-deign>: {@MV+} & TO+;
+endeavour.v condescend.v deign.v:
+ ((<verb-pl,i> & (<vc-deign>)) or
+ (<verb-and-pl-> & ([(<vc-deign>)] or ())) or
+ ((<vc-deign>) & <verb-and-pl+>));
+endeavours.v condescends.v deigns.v:
+ ((<verb-s> & (<vc-deign>)) or
+ (<verb-and-s-> & ([(<vc-deign>)] or ())) or
+ ((<vc-deign>) & <verb-and-s+>));
+endeavoured.v-d condescended.v-d deigned.v-d:
+ ((<verb-sp,pp> & (<vc-deign>)) or
+ (<verb-and-sp-i-> & (([<vc-deign>]) or ())) or
+ ((<vc-deign>) & <verb-and-sp-i+>));
+endeavouring.v condescending.v deigning.v: (<vc-deign> & <verb-pg,ge>) or
+<verb-ge-d>;
+
+<vc-happen>: {@MV+} & {TO+ or THi+};
+happen.v:
+ ((<verb-pl,i> & (<vc-happen>)) or
+ (<verb-and-pl-> & ([(<vc-happen>)] or ())) or
+ ((<vc-happen>) & <verb-and-pl+>));
+happens.v:
+ ((<verb-s> & (<vc-happen>)) or
+ (<verb-and-s-> & ([(<vc-happen>)] or ())) or
+ ((<vc-happen>) & <verb-and-s+>));
+happened.v-d:
+ ((<verb-sp,pp> & (<vc-happen>)) or
+ (<verb-and-sp-i-> & (([<vc-happen>]) or ())) or
+ ((<vc-happen>) & <verb-and-sp-i+>));
+happening.v: (<vc-happen> & <verb-pg,ge>) or <verb-ge-d>;
+
+% ditransitve
+<vc-wish>:
+ ({@MV+} & {TH+ or Ce+ or RSe+ or TO+}) or
+ <vc-ditrans>;
+wish.v:
+ ((<verb-pl,i> & (<vc-wish>)) or
+ (<verb-and-pl-> & ([(<vc-wish>)] or ())) or
+ ((<vc-wish>) & <verb-and-pl+>));
+wishes.v:
+ ((<verb-s> & (<vc-wish>)) or
+ (<verb-and-s-> & ([(<vc-wish>)] or ())) or
+ ((<vc-wish>) & <verb-and-s+>));
+wished.v-d:
+ ((<verb-sp,pp> & (<vc-wish>)) or
+ (<verb-and-sp-i-> & (([<vc-wish>]) or ())) or
+ ((<vc-wish>) & <verb-and-sp-i+>));
+wishing.v: <verb-pg> & <vc-wish>;
+wishing.g: (<vc-wish> & <verb-ge>) or <verb-ge-d>;
+
+% The O+ target is to handle "I hope so", but really, we should have
+% a special-case for this (i.e. a new minor letter).
+% See also <vc-think> for the same problem.
+<vc-hope>: ({@MV+} & {TH+ or Ce+ or RSe+ or TO+}) or [[O+ & {@MV+}]];
+hope.v agree.v pretend.v swear.v pray.v vow.v vote.v:
+ ((<verb-pl,i> & (<vc-hope>)) or
+ (<verb-and-pl-> & ([(<vc-hope>)] or ())) or
+ ((<vc-hope>) & <verb-and-pl+>));
+hopes.v agrees.v pretends.v swears.v prays.v vows.v votes.v:
+ ((<verb-s> & (<vc-hope>)) or
+ (<verb-and-s-> & ([(<vc-hope>)] or ())) or
+ ((<vc-hope>) & <verb-and-s+>));
+pretended.v-d prayed.v-d:
+ ((<verb-sp,pp> & (<vc-hope>)) or
+ (<verb-and-sp-i-> & (([<vc-hope>]) or ())) or
+ ((<vc-hope>) & <verb-and-sp-i+>));
+
+% The (<verb-s-pv> & THi+) allows "it is hoped that ..." to parse.
+hoped.v-d voted.v-d vowed.v-d:
+
+ ((<verb-sp,pp> & (<vc-hope>)) or
+ (<verb-and-sp-i-> & (([<vc-hope>]) or ())) or
+ ((<vc-hope>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & THi+);
+
+agreed.v-d:
+ ((<verb-sp,pp> & (<vc-hope>)) or
+ (<verb-and-sp-i-> & (([<vc-hope>]) or ())) or
+ ((<vc-hope>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & TH+);
+swore.v-d:
+ ((<verb-sp> & (<vc-hope>)) or
+ (<verb-and-sp-i-> & (([<vc-hope>]) or ())) or
+ ((<vc-hope>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+sworn.v:
+ ((<verb-pp> & (<vc-hope>)) or
+ (<verb-and-had-> & (([<vc-hope>]) or ())) or
+ ((<vc-hope>) & <verb-and-had+>)) or ({@E-} & A+);
+hoping.v agreeing.v pretending.v swearing.v praying.v vowing.v voting.v:
+(<vc-hope> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-appear>: {@MV+} & {Pa+ or TOf+ or THi+ or AF- or [[Pv+]]};
+appear.v:
+ ((<verb-x-pl,i> & (<vc-appear>))
+ or (<verb-and-sp-i-> & ([(<vc-appear>)] or ()))
+ or ((<vc-appear>) & <verb-and-sp-i+>));
+appears.v:
+ ((<verb-x-s> & (<vc-appear>))
+ or (<verb-and-s-> & ([(<vc-appear>)] or ()))
+ or ((<vc-appear>) & <verb-and-s+>));
+appeared.v-d:
+ ((<verb-x-sp,pp> & (<vc-appear>)) or
+ (<verb-and-sp-i-> & (([<vc-appear>]) or ())) or
+ ((<vc-appear>) & <verb-and-sp-i+>));
+appearing.v: (<vc-appear> & <verb-x-pg,ge>) or <verb-ge-d>;
+
+<vc-seem>: {@MV+} & (Pa+ or TOf+ or LI+ or THi+ or AF- or [[Pv+]]);
+seem.v:
+ ((<verb-x-pl,i> & (<vc-seem>))
+ or (<verb-and-sp-i-> & ([(<vc-seem>)] or ()))
+ or ((<vc-seem>) & <verb-and-sp-i+>));
+seems.v:
+ ((<verb-x-s> & (<vc-seem>))
+ or (<verb-and-s-> & ([(<vc-seem>)] or ()))
+ or ((<vc-seem>) & <verb-and-s+>));
+seemed.v-d:
+ ((<verb-x-sp,pp> & (<vc-seem>)) or
+ (<verb-and-sp-i-> & (([<vc-seem>]) or ())) or
+ ((<vc-seem>) & <verb-and-sp-i+>));
+seeming.v: (<vc-seem> & <verb-x-pg,ge>) or <verb-ge-d>;
+
+<vc-care>: {@MV+} & {TO+ or QI+};
+care.v:
+ ((<verb-pl,i> & (<vc-care>)) or
+ (<verb-and-pl-> & ([(<vc-care>)] or ())) or
+ ((<vc-care>) & <verb-and-pl+>));
+cares.v:
+ ((<verb-s> & (<vc-care>)) or
+ (<verb-and-s-> & ([(<vc-care>)] or ())) or
+ ((<vc-care>) & <verb-and-s+>));
+cared.v-d:
+ ((<verb-sp,pp> & (<vc-care>)) or
+ (<verb-and-sp-i-> & (([<vc-care>]) or ())) or
+ ((<vc-care>) & <verb-and-sp-i+>));
+caring.v: (<vc-care> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-assert>: ({@MV+} & (TH+ or RSe+ or Z- or Ce+));
+assert.v contend.v remark.v retort.v intimate.v exclaim.v
+conjecture.v allege.v surmise.v opine.v insinuate.v suppose.v:
+
+ ((<verb-pl,i> & (<vc-assert>)) or
+ (<verb-and-pl-> & ([(<vc-assert>)] or ())) or
+ ((<vc-assert>) & <verb-and-pl+>));
+asserts.v contends.v remarks.v retorts.v intimates.v exclaims.v
+conjectures.v alleges.v surmises.v opines.v insinuates.v supposes.v:
+
+ ((<verb-s> & (<vc-assert>)) or
+ (<verb-and-sp-i-> & (([<vc-assert>]) or ())) or
+ ((<vc-assert>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+retorted.v intimated.v exclaimed.v conjectured.v
+surmised.v-d opined.v-d insinuated.v-d:
+ ((<verb-sp,pp> & (<vc-assert>)) or
+ (<verb-and-sp-i-> & (([<vc-assert>]) or ())) or
+ ((<vc-assert>) & <verb-and-sp-i+>));
+asserted.v-d contended.v-d remarked.v-d:
+
+ ((<verb-sp,pp> & (<vc-assert>)) or
+ (<verb-and-sp-i-> & (([<vc-assert>]) or ())) or
+ ((<vc-assert>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & THi+);
+alleged.v-d:
+
+ ((<verb-sp,pp> & (<vc-assert>)) or
+ (<verb-and-sp-i-> & (([<vc-assert>]) or ())) or
+ ((<vc-assert>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & THi+) or
+ ({@E-} & A+);
+supposed.v-d:
+
+ ((<verb-sp,pp> & (<vc-assert>)) or
+ (<verb-and-sp-i-> & (([<vc-assert>]) or ())) or
+ ((<vc-assert>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {TOf+ or THi+ or Z-}) or
+ ({@E-} & A+);
+asserting.v contending.v remarking.v retorting.v intimating.v
+exclaiming.v conjecturing.v alleging.v surmising.v opining.v insinuating.v
+supposing.v:
+ (<vc-assert> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-muse>: {@MV+} & {TH+};
+theorize.v attest.v fantasize.v muse.v speculate.v concur.v:
+
+ ((<verb-pl,i> & (<vc-muse>)) or
+ (<verb-and-pl-> & ([(<vc-muse>)] or ())) or
+ ((<vc-muse>) & <verb-and-pl+>));
+theorizes.v attests.v fantasizes.v muses.v speculates.v concurs.v:
+
+ ((<verb-s> & (<vc-muse>)) or
+ (<verb-and-s-> & ([(<vc-muse>)] or ())) or
+ ((<vc-muse>) & <verb-and-s+>));
+attested.v-d fantasized.v-d mused.v-d speculated.v-d concurred.v-d:
+
+ ((<verb-sp,pp> & (<vc-muse>)) or
+ (<verb-and-sp-i-> & (([<vc-muse>]) or ())) or
+ ((<vc-muse>) & <verb-and-sp-i+>));
+theorized.v-d:
+ ((<verb-sp,pp> & (<vc-muse>)) or
+ (<verb-and-sp-i-> & (([<vc-muse>]) or ())) or
+ ((<vc-muse>) & <verb-and-sp-i+>)) or (<verb-pv> & THi+);
+theorizing.v attesting.v fantasizing.v musing.v speculating.v concurring.v:
+ (<vc-muse> & <verb-pg,ge>) or
+ <verb-ge-d>;
+
+<vc-reply>: ({@MV+} & {TH+ or Ce+});
+reply.v whisper.v argue.v sigh.v mutter.v
+testify.v comment.v respond.v hint.v reason.v brag.v:
+
+ ((<verb-pl,i> & (<vc-reply>)) or
+ (<verb-and-pl-> & ([(<vc-reply>)] or ())) or
+ ((<vc-reply>) & <verb-and-pl+>));
+replies.v whispers.v argues.v sighs.v
+mutters.v testifies.v comments.v responds.v hints.v reasons.v
+brags.v:
+
+ ((<verb-s> & (<vc-reply>)) or
+ (<verb-and-sp-i-> & (([<vc-reply>]) or ())) or
+ ((<vc-reply>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+replied.v-d sighed.v-d commented.v-d responded.v-d bragged.v-d:
+
+ ((<verb-sp,pp> & (<vc-reply>)) or
+ (<verb-and-sp-i-> & (([<vc-reply>]) or ())) or
+ ((<vc-reply>) & <verb-and-sp-i+>));
+
+% The (<verb-s-pv> & THi+) allows "it is reasoned that ..." to parse.
+argued.v-d hinted.v-d muttered.v-d reasoned.v-d testified.v-d whispered.v-d:
+
+ ((<verb-sp,pp> & (<vc-reply>)) or
+ (<verb-and-sp-i-> & (([<vc-reply>]) or ())) or
+ ((<vc-reply>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & THi+);
+
+replying.v whispering.v arguing.v sighing.v
+muttering.v testifying.v commenting.v responding.v hinting.v
+reasoning.v bragging.v:
+ (<vc-reply> & <verb-pg,ge>) or
+ <verb-ge-d>;
+
+<vc-dream>: {@MV+} & {Ce+ or TH+ or RSe+ or (OF+ & {@MV+}) or BW-};
+dream.v complain.v:
+ ((<verb-pl,i> & (<vc-dream>)) or
+ (<verb-and-pl-> & ([(<vc-dream>)] or ())) or
+ ((<vc-dream>) & <verb-and-pl+>));
+dreams.v complains.v:
+ ((<verb-s> & (<vc-dream>)) or
+ (<verb-and-s-> & ([(<vc-dream>)] or ())) or
+ ((<vc-dream>) & <verb-and-s+>));
+dreamt.v-d dreamed.v-d complained.v-d:
+ ((<verb-sp,pp> & (<vc-dream>)) or
+ (<verb-and-sp-i-> & (([<vc-dream>]) or ())) or
+ ((<vc-dream>) & <verb-and-sp-i+>));
+dreaming.g complaining.g: (<vc-dream> & <verb-ge>) or <verb-ge-d>;
+dreaming.v complaining.v: <verb-pg> & <vc-dream>;
+
+% The O+ is to handle "do you think so, too?", however, a special
+% target for objects like "so" or "it" would be better...
+% "hope.v" has the same problem.
+% O+ & O*n: "She will think it an act of kindness."
+% O+ & Pa**j: "She will think it true."
+<vc-think>:
+ ({@MV+} & {Ce+ or TH+ or RSe+ or Z- or (OF+ & {@MV+}) or BW-})
+ or (O+ & {@MV+} & {O*n+ or Pa**j+});
+
+think.v:
+ ((<verb-pl,i> & (<vc-think>)) or
+ (<verb-and-pl-> & ([(<vc-think>)] or ())) or
+ ((<vc-think>) & <verb-and-pl+>));
+thinks.v:
+ ((<verb-s> & (<vc-think>)) or
+ (<verb-and-sp-i-> & (([<vc-think>]) or ())) or
+ ((<vc-think>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+% <verb-s-pv> & Cet+: (phantom that) "It was previously thought they were wrong."
+thought.v-d:
+ ((<verb-sp,pp> & (<vc-think>)) or
+ (<verb-and-sp-i-> & (([<vc-think>]) or ())) or
+ ((<vc-think>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv> & {Cet+ or THi+ or Z-});
+thinking.g: (<vc-think> & <verb-ge>) or <verb-ge-d>;
+thinking.v: <verb-pg> & <vc-think>;
+
+% B-: "what does it matter?"
+<vc-matter>:
+ ({@MV+} & {THi+ or QIi+})
+ or B-;
+matter.v:
+ ((<verb-s-pl,i> & (<vc-matter>)) or
+ (<verb-and-sp-i-> & ([(<vc-matter>)] or ())) or
+ ((<vc-matter>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+matters.v: <verb-s-s> & <vc-matter>;
+mattered.v-d:
+ ((<verb-sp,pp> & (<vc-matter>)) or
+ (<verb-and-sp-i-> & (([<vc-matter>]) or ())) or
+ ((<vc-matter>) & <verb-and-sp-i+>));
+mattering.v: (<vc-matter> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-suffice>: {@MV+} & {THi+};
+suffice.v:
+ ((<verb-pl,i> & (<vc-suffice>)) or
+ (<verb-and-pl-> & ([(<vc-suffice>)] or ())) or
+ ((<vc-suffice>) & <verb-and-pl+>));
+suffices.v:
+ ((<verb-s> & (<vc-suffice>)) or
+ (<verb-and-s-> & ([(<vc-suffice>)] or ())) or
+ ((<vc-suffice>) & <verb-and-s+>));
+sufficed.v-d:
+ ((<verb-sp,pp> & (<vc-suffice>)) or
+ (<verb-and-sp-i-> & (([<vc-suffice>]) or ())) or
+ ((<vc-suffice>) & <verb-and-sp-i+>));
+sufficing.v: (<vc-suffice> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-insist>: ({@MV+} & {TH+ or Zs- or TS+ or Ce+}) or (SI*j+ & I*j+);
+insist.v:
+ ((<verb-pl,i> & (<vc-insist>)) or
+ (<verb-and-pl-> & ([(<vc-insist>)] or ())) or
+ ((<vc-insist>) & <verb-and-pl+>));
+insists.v:
+ ((<verb-s> & (<vc-insist>)) or
+ (<verb-and-s-> & ([(<vc-insist>)] or ())) or
+ ((<vc-insist>) & <verb-and-s+>));
+insisted.v-d:
+ ((<verb-sp,pp> & (<vc-insist>)) or
+ (<verb-and-sp-i-> & (([<vc-insist>]) or ())) or
+ ((<vc-insist>) & <verb-and-sp-i+>));
+insisting.v: (<vc-insist> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-wonder>: {@MV+} & {QI+};
+wonder.v inquire.v:
+ ((<verb-pl,i> & (<vc-wonder>)) or
+ (<verb-and-pl-> & ([(<vc-wonder>)] or ())) or
+ ((<vc-wonder>) & <verb-and-pl+>));
+wonders.v inquires.v:
+ ((<verb-s> & (<vc-wonder>)) or
+ (<verb-and-s-> & ([(<vc-wonder>)] or ())) or
+ ((<vc-wonder>) & <verb-and-s+>));
+wondered.v-d inquired.v-d:
+ ((<verb-sp,pp> & (<vc-wonder>)) or
+ (<verb-and-sp-i-> & (([<vc-wonder>]) or ())) or
+ ((<vc-wonder>) & <verb-and-sp-i+>));
+wondering.v inquiring.v: (<vc-wonder> & <verb-pg,ge>) or <verb-ge-d>;
+
+% Imperative go: "go play ball", "go take a walk", "go swimming"
+% Similar pattern to "please.r" -- "please play ball" etc.
+% "You and Rover go play with the ball." requires an S- link.
+% Hmm ... changes to go.v seem to have obsoleted the need for this ...
+% go.w: {E-} & (Wi- or S-) & I+;
+
+<vc-go>: {K+ or [[Pa+]] or [Pg+] or I*g+} & {@MV+};
+go.v:
+ ((<verb-pl,i> & (<vc-go>)) or
+ (<verb-and-pl-> & ([(<vc-go>)] or ())) or
+ ((<vc-go>) & <verb-and-pl+>));
+
+% SFs-: "There goes the cutest guy ever!", needs O*t to survive PP.
+% However, prefer Pg over O*t when possible...
+goes.v:
+ (<verb-x-s> & (<vc-go> or [[O*t+ & {@MV+}]])) or
+ (<verb-and-s-> & <vc-go>) or (<vc-go> & <verb-and-s+>);
+went.v-d:
+ (<verb-x-sp> & (<vc-go> or [[O*t+ & {@MV+}]])) or
+ (<verb-and-sp-i-> & <vc-go>) or (<vc-go> & <verb-and-sp-i+>);
+
+gone.v:
+ ((<verb-pp> & (<vc-go>)) or
+ (<verb-and-had-> & (([<vc-go>]) or ())) or
+ ((<vc-go>) & <verb-and-had+>));
+% The keys are gone. The popcorn is all gone.
+gone.a:
+ ({@E-} & Pa-) or
+ (AJra- & {@MV+}) or
+ ({@MV+} & AJla+);
+
+% XXX TODO maybe need VJ and-able links for going etc. ???
+going.v:
+ ((TOf+ or ({K+ or [[Pa+]]} & {@MV+})) & <verb-x-pg,ge>) or
+ ({@E-} & A+) or
+ <verb-ge-d>;
+
+% transitive: "stay the prisoner's execution"
+<vc-stay>: {({@MV+} & (Pa+ or AF-)) or ({K+} & {@MV+}) or (O+ & {@MV+})};
+stay.v:
+ ((<verb-pl,i> & (<vc-stay>)) or
+ (<verb-and-pl-> & ([(<vc-stay>)] or ())) or
+ ((<vc-stay>) & <verb-and-pl+>));
+stays.v:
+ ((<verb-s> & (<vc-stay>)) or
+ (<verb-and-sp-i-> & (([<vc-stay>]) or ())) or
+ ((<vc-stay>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+stayed.v-d:
+ ((<verb-sp,pp> & (<vc-stay>)) or
+ (<verb-and-sp-i-> & (([<vc-stay>]) or ())) or
+ ((<vc-stay>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+staying.v: (<vc-stay> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-stand>: {({@MV+} & Pa+) or ({O+ or B-} & {K+} & {@MV+})};
+stand.v sit.v:
+ ((<verb-pl,i> & (<vc-stand>)) or
+ (<verb-and-pl-> & ([(<vc-stand>)] or ())) or
+ ((<vc-stand>) & <verb-and-pl+>));
+stands.v sits.v:
+ ((<verb-s> & (<vc-stand>)) or
+ (<verb-and-sp-i-> & (([<vc-stand>]) or ())) or
+ ((<vc-stand>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+stood.v-d sat.v-d:
+ ((<verb-sp,pp> & (<vc-stand>)) or
+ (<verb-and-sp-i-> & (([<vc-stand>]) or ())) or
+ ((<vc-stand>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+standing.v sitting.v: <verb-pg> & <vc-stand>;
+standing.g sitting.g: (<vc-stand> & <verb-ge>) or <verb-ge-d> or ({@E-} & A+);
+
+<vc-sound>: ({@MV+} & {LI+ or Pa+ or AF-}) or {O+ & K+ & {@MV+}};
+sound.v:
+ ((<verb-pl,i> & (<vc-sound>)) or
+ (<verb-and-pl-> & ([(<vc-sound>)] or ())) or
+ ((<vc-sound>) & <verb-and-pl+>));
+sounds.v:
+ ((<verb-s> & (<vc-sound>)) or
+ (<verb-and-sp-i-> & (([<vc-sound>]) or ())) or
+ ((<vc-sound>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+sounded.v-d:
+ ((<verb-sp,pp> & (<vc-sound>)) or
+ (<verb-and-sp-i-> & (([<vc-sound>]) or ())) or
+ ((<vc-sound>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+sounding.v: (<vc-sound> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-act>: {({@MV+} & (LI+ or Pa+)) or ({K+ or AF-} & {@MV+})};
+act.v:
+ ((<verb-pl,i> & (<vc-act>)) or
+ (<verb-and-pl-> & ([(<vc-act>)] or ())) or
+ ((<vc-act>) & <verb-and-pl+>));
+acts.v:
+ ((<verb-s> & (<vc-act>)) or
+ (<verb-and-s-> & ([(<vc-act>)] or ())) or
+ ((<vc-act>) & <verb-and-s+>));
+% "be acted upon quikly"
+acted.v-d:
+ ((<verb-sp,pp> & (<vc-act>)) or
+ (<verb-and-sp-i-> & (([<vc-act>]) or ())) or
+ ((<vc-act>) & <verb-and-sp-i+>)) or (<verb-pv-b> & {K+} & {@MV+});
+acting.v: (<vc-act> & <verb-pg,ge>) or <verb-ge-d>;
+
+% O+ & K+: She looked him over.
+<vc-look>: {({@MV+} & (LI+ or Pa+))
+ or ({K+ or AF-} & {@MV+})
+ or ((O+ & K+) & {@MV+})};
+look.v:
+ ((<verb-pl,i> & (<vc-look>)) or
+ (<verb-and-pl-> & ([(<vc-look>)] or ())) or
+ ((<vc-look>) & <verb-and-pl+>));
+looks.v:
+ ((<verb-s> & (<vc-look>)) or
+ (<verb-and-sp-i-> & (([<vc-look>]) or ())) or
+ ((<vc-look>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+looked.v-d:
+ ((<verb-sp,pp> & (<vc-look>)) or
+ (<verb-and-sp-i-> & (([<vc-look>]) or ())) or
+ ((<vc-look>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+looking.v: (<vc-look> & <verb-pg,ge>) or <verb-ge-d>;
+
+% O+ & K+: "She waved him over."
+% vc-ditrans: "She waved me goodbye"
+% MV+: "who did you wave to?"
+<vc-wave>:
+ {@MV+}
+ or ((O+ & K+) & {@MV+})
+ or <vc-ditrans>;
+wave.v:
+ ((<verb-pl,i> & (<vc-wave>)) or
+ (<verb-and-pl-> & ([(<vc-wave>)] or ())) or
+ ((<vc-wave>) & <verb-and-pl+>));
+waves.v:
+ ((<verb-s> & (<vc-wave>)) or
+ (<verb-and-s-> & ([(<vc-wave>)] or ())) or
+ ((<vc-wave>) & <verb-and-s+>));
+waved.v-d:
+ ((<verb-sp,pp> & (<vc-wave>)) or
+ (<verb-and-sp-i-> & (([<vc-wave>]) or ())) or
+ ((<vc-wave>) & <verb-and-sp-i+>));
+waving.v: (<vc-wave> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-repent>: {{@MV+ or ({Xc+} & @EB+)} & OF+};
+repent.v disapprove.v:
+ ((<verb-pl,i> & (<vc-repent>)) or
+ (<verb-and-pl-> & ([(<vc-repent>)] or ())) or
+ ((<vc-repent>) & <verb-and-pl+>));
+repents.v disapproves.v:
+ ((<verb-s> & (<vc-repent>)) or
+ (<verb-and-s-> & ([(<vc-repent>)] or ())) or
+ ((<vc-repent>) & <verb-and-s+>));
+repented.v-d disapproved.v-d:
+ ((<verb-sp,pp> & (<vc-repent>)) or
+ (<verb-and-sp-i-> & (([<vc-repent>]) or ())) or
+ ((<vc-repent>) & <verb-and-sp-i+>));
+repenting.v disapproving.v: (<vc-repent> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-talk>: <vc-repent> & <vc-fill>;
+talk.v:
+ ((<verb-pl,i> & (<vc-talk>)) or
+ (<verb-and-pl-> & ([(<vc-talk>)] or ())) or
+ ((<vc-talk>) & <verb-and-pl+>));
+talks.v:
+ ((<verb-s> & (<vc-talk>)) or
+ (<verb-and-sp-i-> & (([<vc-talk>]) or ())) or
+ ((<vc-talk>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+talked.v-d:
+ ((<verb-sp,pp> & (<vc-talk>)) or
+ (<verb-and-sp-i-> & (([<vc-talk>]) or ())) or
+ ((<vc-talk>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+talking.v: (<vc-repent> & <verb-pg,ge> & <vc-fill>) or <verb-ge-d>;
+
+<vc-consist>: {@MV+ or @EB+} & OF+;
+consist.v:
+ ((<verb-pl,i> & (<vc-consist>)) or
+ (<verb-and-pl-> & ([(<vc-consist>)] or ())) or
+ ((<vc-consist>) & <verb-and-pl+>));
+consists.v:
+ ((<verb-s> & (<vc-consist>)) or
+ (<verb-and-s-> & ([(<vc-consist>)] or ())) or
+ ((<vc-consist>) & <verb-and-s+>));
+consisted.v-d:
+ ((<verb-sp,pp> & (<vc-consist>)) or
+ (<verb-and-sp-i-> & (([<vc-consist>]) or ())) or
+ ((<vc-consist>) & <verb-and-sp-i+>));
+consisting.v: (<vc-consist> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-die>: {K+ or OF+} & {@MV+};
+die.v:
+ ((<verb-pl,i> & (<vc-die>)) or
+ (<verb-and-pl-> & ([(<vc-die>)] or ())) or
+ ((<vc-die>) & <verb-and-pl+>));
+dies.v:
+ ((<verb-s> & (<vc-die>)) or
+ (<verb-and-s-> & ([(<vc-die>)] or ())) or
+ ((<vc-die>) & <verb-and-s+>));
+died.v-d:
+ ((<verb-sp,pp> & (<vc-die>)) or
+ (<verb-and-sp-i-> & (([<vc-die>]) or ())) or
+ ((<vc-die>) & <verb-and-sp-i+>));
+dying.v: (<vc-die> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-last>: {({[[@MV+]]} & OT+) or BT-} & {@MV+};
+last.v wait.v:
+ ((<verb-pl,i> & (<vc-last>)) or
+ (<verb-and-pl-> & ([(<vc-last>)] or ())) or
+ ((<vc-last>) & <verb-and-pl+>));
+lasts.v waits.v:
+ ((<verb-s> & (<vc-last>)) or
+ (<verb-and-s-> & ([(<vc-last>)] or ())) or
+ ((<vc-last>) & <verb-and-s+>));
+lasted.v-d waited.v-d:
+ ((<verb-sp,pp> & (<vc-last>)) or
+ (<verb-and-sp-i-> & (([<vc-last>]) or ())) or
+ ((<vc-last>) & <verb-and-sp-i+>));
+lasting.v waiting.v: <verb-pg> & <vc-last>;
+lasting.g waiting.g: (<vc-last> & <verb-ge>) or <verb-ge-d>;
+
+% TRANSITIVE COMPLEX VERBS (Those that take O+)
+
+<vc-attempt>: <vc-trans> or ({@MV+} & TO+);
+attempt.v undertake.v deserve.v manage.v plot.v prefer.v neglect.v
+afford.v commit.v profess.v desire.v:
+
+ ((<verb-pl,i> & (<vc-attempt>)) or
+ (<verb-and-pl-> & ([(<vc-attempt>)] or ())) or
+ ((<vc-attempt>) & <verb-and-pl+>));
+attempts.v undertakes.v deserves.v manages.v plots.v prefers.v
+neglects.v affords.v commits.v professes.v desires.v:
+
+ ((<verb-s> & (<vc-attempt>)) or
+ (<verb-and-sp-i-> & (([<vc-attempt>]) or ())) or
+ ((<vc-attempt>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+attempted.v deserved.v managed.v plotted.v preferred.v neglected.v afforded.v committed.v
+professed.v-d desired.v-d:
+
+ ((<verb-sp,pp> & (<vc-attempt>)) or
+ (<verb-and-sp-i-> & (([<vc-attempt>]) or ())) or
+ ((<vc-attempt>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+undertook.v-d:
+ ((<verb-sp> & (<vc-attempt>)) or
+ (<verb-and-sp-i-> & (([<vc-attempt>]) or ())) or
+ ((<vc-attempt>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+undertaken.v:
+ ((<verb-pp> & (<vc-attempt>)) or
+ (<verb-and-had-> & (([<vc-attempt>]) or ())) or
+ ((<vc-attempt>) & <verb-and-had+>)) or <verb-pv>;
+attempting.g undertaking.g deserving.g
+plotting.g preferring.g neglecting.g affording.g committing.g professing.g
+desiring.g:
+(<vc-attempt> & <verb-ge>) or <verb-ge-d>;
+managing.g: (<vc-attempt> & <verb-ge>) or <verb-ge-d> or ({@E-} & A+);
+attempting.v undertaking.v deserving.v managing.v
+plotting.v preferring.v neglecting.v affording.v committing.v professing.v
+desiring.v:
+<verb-pg> & <vc-attempt>;
+
+% like <vc-trans> but with particle
+<vc-seek>: ({@MV+} & TO+) or
+((((O+ or B-) & {K+}) or (K+ & {[[@MV+]]} & O*n+) or
+([[@MV+ & O*n+]])) & {@MV+});
+seek.v:
+ ((<verb-pl,i> & (<vc-seek>)) or
+ (<verb-and-pl-> & ([(<vc-seek>)] or ())) or
+ ((<vc-seek>) & <verb-and-pl+>));
+seeks.v:
+ ((<verb-s> & (<vc-seek>)) or
+ (<verb-and-sp-i-> & (([<vc-seek>]) or ())) or
+ ((<vc-seek>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+sought.v-d:
+ ((<verb-sp,pp> & (<vc-seek>)) or
+ (<verb-and-sp-i-> & (([<vc-seek>]) or ())) or
+ ((<vc-seek>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or <verb-phrase-opener>;
+seeking.g: (<vc-seek> & <verb-ge>) or <verb-ge-d>;
+seeking.v: <verb-pg> & <vc-seek>;
+
+<vc-decline>: {<vc-trans>} or ({@MV+} & TO+);
+decline.v fail.v hasten.v volunteer.v aim.v:
+ ((<verb-pl,i> & (<vc-decline>)) or
+ (<verb-and-pl-> & ([(<vc-decline>)] or ())) or
+ ((<vc-decline>) & <verb-and-pl+>));
+declines.v fails.v hastens.v volunteers.v aims.v:
+ ((<verb-s> & (<vc-decline>)) or
+ (<verb-and-sp-i-> & (([<vc-decline>]) or ())) or
+ ((<vc-decline>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+declined.v-d hastened.v-d volunteered.v-d aimed.v-d:
+
+ ((<verb-sp,pp> & (<vc-decline>)) or
+ (<verb-and-sp-i-> & (([<vc-decline>]) or ())) or
+ ((<vc-decline>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ <verb-phrase-opener>;
+
+failed.v-d:
+
+ ((<verb-sp,pp> & (<vc-decline>)) or
+ (<verb-and-sp-i-> & (([<vc-decline>]) or ())) or
+ ((<vc-decline>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+);
+
+declining.g failing.g hastening.g volunteering.g:
+ (<vc-decline> & <verb-ge>) or
+ <verb-ge-d> or
+ ({@E-} & A+);
+declining.v failing.v hastening.v volunteering.v aiming.v:
+ <verb-pg> & <vc-decline>;
+
+% like <vc-trans> but with particle
+<vc-fight>:
+ ({@MV+} & TO+) or
+ ({({O+ or B-} & {K+}) or
+ (K+ & {[[@MV+]]} & O*n+) or
+ [[@MV+ & O*n+]]} & {@MV+});
+fight.v:
+ ((<verb-pl,i> & (<vc-fight>)) or
+ (<verb-and-pl-> & ([(<vc-fight>)] or ())) or
+ ((<vc-fight>) & <verb-and-pl+>));
+fights.v:
+ ((<verb-s> & (<vc-fight>)) or
+ (<verb-and-sp-i-> & (([<vc-fight>]) or ())) or
+ ((<vc-fight>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+fought.v-d:
+ ((<verb-sp,pp> & (<vc-fight>)) or
+ (<verb-and-sp-i-> & (([<vc-fight>]) or ())) or
+ ((<vc-fight>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv-b> & {K+} & {@MV+}) or
+({K+} & <verb-phrase-opener>);
+fighting.g: (<vc-fight> & <verb-ge>) or <verb-ge-d>;
+fighting.v: <verb-pg> & <vc-fight>;
+
+<vc-threaten>:
+ <vc-trans> or
+ ({@MV+} & (TO+ or TH+ or Zs- or Ce+));
+
+threaten.v mean.v arrange.v pledge.v:
+
+ ((<verb-pl,i> & (<vc-threaten>)) or
+ (<verb-and-pl-> & ([(<vc-threaten>)] or ())) or
+ ((<vc-threaten>) & <verb-and-pl+>));
+threatens.v means.v arranges.v pledges.v:
+
+ ((<verb-s> & (<vc-threaten>)) or
+ (<verb-and-sp-i-> & (([<vc-threaten>]) or ())) or
+ ((<vc-threaten>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+threatened.v-d meant.v-d arranged.v-d pledged.v-d:
+
+ ((<verb-sp,pp> & (<vc-threaten>)) or
+ (<verb-and-sp-i-> & (([<vc-threaten>]) or ())) or
+ ((<vc-threaten>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+
+meaning.g arranging.g threatening.g pledging.g:
+ (<vc-threaten> & <verb-ge>) or <verb-ge-d>;
+meaning.v arranging.v threatening.v pledging.v:
+ <verb-pg> & <vc-threaten>;
+
+<vc-plan>:
+ <vc-trans> or
+ ({@MV+} & {TO+ or TH+ or Zs- or Ce+});
+plan.v confess.v:
+ ((<verb-pl,i> & (<vc-plan>)) or
+ (<verb-and-pl-> & ([(<vc-plan>)] or ())) or
+ ((<vc-plan>) & <verb-and-pl+>));
+plans.v confesses.v:
+ ((<verb-s> & (<vc-plan>)) or
+ (<verb-and-sp-i-> & (([<vc-plan>]) or ())) or
+ ((<vc-plan>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+planned.v-d confessed.v-d:
+
+ ((<verb-sp,pp> & (<vc-plan>)) or
+ (<verb-and-sp-i-> & (([<vc-plan>]) or ())) or
+ ((<vc-plan>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+planning.g confessing.g: (<vc-plan> & <verb-ge>) or <verb-ge-d>;
+planning.v confessing.v: <verb-pg> & <vc-plan>;
+
+<vc-decide>:
+ <vc-trans> or
+ ({@MV+} & {QI+ or TH+ or TO+ or Ce+ or RSe+ or Zs-});
+
+decide.v resolve.v:
+ ((<verb-pl,i> & (<vc-decide>)) or
+ (<verb-and-pl-> & ([(<vc-decide>)] or ())) or
+ ((<vc-decide>) & <verb-and-pl+>));
+decides.v resolves.v:
+ ((<verb-s> & (<vc-decide>)) or
+ (<verb-and-sp-i-> & (([<vc-decide>]) or ())) or
+ ((<vc-decide>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+decided.v-d resolved.v-d:
+
+ ((<verb-sp,pp> & (<vc-decide>)) or
+ (<verb-and-sp-i-> & (([<vc-decide>]) or ())) or
+ ((<vc-decide>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {THi+}) or
+ <verb-phrase-opener>;
+
+deciding.v resolving.v: <verb-pg> & <vc-decide>;
+deciding.g resolving.g: (<vc-decide> & <verb-ge>) or <verb-ge-d>;
+
+<vc-forget>:
+ {<vc-trans>} or
+ ({@MV+} & (QI+ or TH+ or TO+ or Ce+ or RSe+ or Zs- or Pg+));
+
+remember.v forget.v:
+ ((<verb-pl,i> & (<vc-forget>)) or
+ (<verb-and-pl-> & ([(<vc-forget>)] or ())) or
+ ((<vc-forget>) & <verb-and-pl+>));
+remembers.v forgets.v:
+ ((<verb-s> & (<vc-forget>)) or
+ (<verb-and-sp-i-> & (([<vc-forget>]) or ())) or
+ ((<vc-forget>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+remembered.v-d:
+ ((<verb-sp,pp> & (<vc-forget>)) or
+ (<verb-and-sp-i-> & (([<vc-forget>]) or ())) or
+ ((<vc-forget>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or <verb-phrase-opener>;
+forgot.v-d:
+ ((<verb-sp> & (<vc-forget>)) or
+ (<verb-and-sp-i-> & (([<vc-forget>]) or ())) or
+ ((<vc-forget>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+forgotten.v:
+
+ ((<verb-pp> & (<vc-forget>)) or
+ (<verb-and-had-> & (([<vc-forget>]) or ())) or
+ ((<vc-forget>) & <verb-and-had+>)) or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+remembering.g forgetting.g: (<vc-forget> & <verb-ge>) or <verb-ge-d>;
+remembering.v forgetting.v: <verb-pg> & <vc-forget>;
+
+<vc-learn>:
+ {<vc-trans>} or
+ ({@MV+} & (TH+ or TO+ or Ce+ or RSe+ or Zs- or QI+ or (OF+ & {@MV+})));
+learn.v:
+ ((<verb-pl,i> & (<vc-learn>)) or
+ (<verb-and-pl-> & ([(<vc-learn>)] or ())) or
+ ((<vc-learn>) & <verb-and-pl+>));
+learns.v:
+ ((<verb-s> & (<vc-learn>)) or
+ (<verb-and-sp-i-> & (([<vc-learn>]) or ())) or
+ ((<vc-learn>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+learned.v-d:
+ ((<verb-sp,pp> & (<vc-learn>)) or
+ (<verb-and-sp-i-> & (([<vc-learn>]) or ())) or
+ ((<vc-learn>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & {THi+}) or <verb-phrase-opener>;
+learning.g: (<vc-learn> & <verb-ge>) or <verb-ge-d>;
+learning.v: <verb-pg> & <vc-learn>;
+
+<vc-propose>: <vc-trans> or
+({@MV+} & (TO+ or TH+ or Ce+ or RSe+ or Z- or Pg+ or TS+ or (SI*j+ & I*j+)));
+propose.v:
+ ((<verb-pl,i> & (<vc-propose>)) or
+ (<verb-and-pl-> & ([(<vc-propose>)] or ())) or
+ ((<vc-propose>) & <verb-and-pl+>));
+proposes.v:
+ ((<verb-s> & (<vc-propose>)) or
+ (<verb-and-sp-i-> & (([<vc-propose>]) or ())) or
+ ((<vc-propose>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+proposed.v-d:
+ ((<verb-sp,pp> & (<vc-propose>)) or
+ (<verb-and-sp-i-> & (([<vc-propose>]) or ())) or
+ ((<vc-propose>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+(<verb-s-pv> & {THi+ or TSi+ or Z-}) or ({@E-} & A+) or <verb-phrase-opener>;
+proposing.g: (<vc-propose> & <verb-ge>) or <verb-ge-d>;
+proposing.v: <verb-pg> & <vc-propose>;
+
+<vc-demand>: <vc-trans> or
+({@MV+} & ((TO+ or TH+ or Z- or TS+ or ((SI*j+ or SFI**j+) & I*j+))));
+demand.v:
+ ((<verb-pl,i> & (<vc-demand>)) or
+ (<verb-and-pl-> & ([(<vc-demand>)] or ())) or
+ ((<vc-demand>) & <verb-and-pl+>));
+demands.v:
+ ((<verb-s> & (<vc-demand>)) or
+ (<verb-and-sp-i-> & (([<vc-demand>]) or ())) or
+ ((<vc-demand>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+demanded.v-d:
+ ((<verb-sp,pp> & (<vc-demand>)) or
+ (<verb-and-sp-i-> & (([<vc-demand>]) or ())) or
+ ((<vc-demand>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or
+<verb-phrase-opener>;
+demanding.v: <verb-pg> & <vc-demand>;
+demanding.g: (<vc-demand> & <verb-ge>) or <verb-ge-d>;
+
+<vc-beg>: {<vc-trans>} or
+({@MV+} & ((TO+ or TH+ or Z- or TS+ or ((SI*j+ or SFI**j+) & I*j+))));
+beg.v plead.v:
+ ((<verb-pl,i> & (<vc-beg>)) or
+ (<verb-and-pl-> & ([(<vc-beg>)] or ())) or
+ ((<vc-beg>) & <verb-and-pl+>));
+begs.v pleads.v:
+ ((<verb-s> & (<vc-beg>)) or
+ (<verb-and-sp-i-> & (([<vc-beg>]) or ())) or
+ ((<vc-beg>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+begged.v-d pleaded.v-d:
+ ((<verb-sp,pp> & (<vc-beg>)) or
+ (<verb-and-sp-i-> & (([<vc-beg>]) or ())) or
+ ((<vc-beg>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or
+<verb-phrase-opener>;
+begging.v pleading.v: <verb-pg> & <vc-beg>;
+begging.g pleading.g: (<vc-beg> & <verb-ge>) or <verb-ge-d>;
+
+<vc-bear>: <vc-trans>;
+bear.v:
+ (<verb-i> & (<vc-bear> or ({@MV+} & (Pg+ or TH+ or TO+)))) or
+ (<verb-pl> & <vc-bear>);
+bears.v:
+ ((<verb-s> & (<vc-bear>)) or
+ (<verb-and-sp-i-> & (([<vc-bear>]) or ())) or
+ ((<vc-bear>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+bore.v-d:
+ ((<verb-sp,pp> & (<vc-bear>)) or
+ (<verb-and-sp-i-> & (([<vc-bear>]) or ())) or
+ ((<vc-bear>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+born.v:
+ ((<verb-pp> & (<vc-bear>)) or
+ (<verb-and-had-> & (([<vc-bear>]) or ())) or
+ ((<vc-bear>) & <verb-and-had+>)) or <verb-pv> or <verb-phrase-opener>;
+bearing.g: (<vc-bear> & <verb-ge>) or <verb-ge-d>;
+bearing.v: <verb-pg> & <vc-bear>;
+
+<vc-love>:
+ <vc-trans> or
+ ({@MV+} & (TO+ or Pg+));
+
+love.v dislike.v hate.v:
+ ((<verb-pl,i> & (<vc-love>)) or
+ (<verb-and-pl-> & ([(<vc-love>)] or ())) or
+ ((<vc-love>) & <verb-and-pl+>));
+loves.v dislikes.v hates.v:
+ ((<verb-s> & (<vc-love>)) or
+ (<verb-and-sp-i-> & (([<vc-love>]) or ())) or
+ ((<vc-love>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+loved.v-d disliked.v-d hated.v-d:
+
+ ((<verb-sp,pp> & (<vc-love>)) or
+ (<verb-and-sp-i-> & (([<vc-love>]) or ())) or
+ ((<vc-love>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ <verb-phrase-opener>;
+
+loving.g disliking.g hating.g: (<vc-love> & <verb-ge>) or <verb-ge-d>;
+loving.v disliking.v hating.v: <verb-pg> & <vc-love>;
+
+% "It begins here"
+<vc-begin>:
+ {<vc-trans>} or
+ ({@MV+} & ({TO+} or Pg+));
+begin.v continue.v cease.v:
+ ((<verb-pl,i> & (<vc-begin>)) or
+ (<verb-and-pl-> & ([(<vc-begin>)] or ())) or
+ ((<vc-begin>) & <verb-and-pl+>));
+begins.v continues.v ceases.v:
+ ((<verb-s> & (<vc-begin>)) or
+ (<verb-and-sp-i-> & (([<vc-begin>]) or ())) or
+ ((<vc-begin>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+ceased.v-d:
+
+ ((<verb-sp,pp> & (<vc-begin>)) or
+ (<verb-and-sp-i-> & (([<vc-begin>]) or ())) or
+ ((<vc-begin>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ <verb-phrase-opener>;
+continued.v-d:
+
+ ((<verb-sp,pp> & (<vc-begin>)) or
+ (<verb-and-sp-i-> & (([<vc-begin>]) or ())) or
+ ((<vc-begin>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ <verb-phrase-opener> or
+ ({@E-} & A+);
+began.v-d:
+ ((<verb-sp> & (<vc-begin>)) or
+ (<verb-and-sp-i-> & (([<vc-begin>]) or ())) or
+ ((<vc-begin>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+begun.v:
+ ((<verb-pp> & (<vc-begin>)) or
+ (<verb-and-had-> & (([<vc-begin>]) or ())) or
+ ((<vc-begin>) & <verb-and-had+>)) or <verb-pv> or <verb-phrase-opener>;
+beginning.g ceasing.g:
+ (<vc-begin> & <verb-ge>) or <verb-ge-d>;
+continuing.g: (<vc-begin> & <verb-ge>) or <verb-ge-d> or ({@E-} & A+);
+beginning.v continuing.v ceasing.v: <verb-pg> & <vc-begin>;
+
+% <vc-trans> with particle
+<vc-start>:
+ ((({O+ or B-} & {K+}) or
+ (K+ & {[[@MV+]]} & O*n+) or
+ [[@MV+ & O*n+]]) & {@MV+}) or
+ ({@MV+} & (TO+ or Pg+));
+
+start.v stop.v try.v:
+ ((<verb-pl,i> & (<vc-start>)) or
+ (<verb-and-pl-> & ([(<vc-start>)] or ())) or
+ ((<vc-start>) & <verb-and-pl+>));
+starts.v stops.v tries.v:
+ ((<verb-s> & (<vc-start>)) or
+ (<verb-and-sp-i-> & (([<vc-start>]) or ())) or
+ ((<vc-start>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+started.v-d stopped.v-d tried.v-d:
+
+ ((<verb-sp,pp> & (<vc-start>)) or
+ (<verb-and-sp-i-> & (([<vc-start>]) or ())) or
+ ((<vc-start>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({K+} & <verb-phrase-opener>);
+
+starting.g stopping.g trying.g: (<vc-start> & <verb-ge>) or <verb-ge-d>;
+starting.v stopping.v trying.v: <verb-pg> & <vc-start>;
+
+% The Pg+ doesn't really apply to all of these ...
+<vc-dispute>: <vc-trans> or
+ ({@MV+} & (TH+ or Zs-)) or
+ ({@MV+} & Pg+);
+recognize.v dispute.v accept.v calculate.v
+record.v deduce.v envision.v recount.v signify.v clarify.v disclose.v
+recollect.v adduce.v posit.v reiterate.v infer.v presuppose.v:
+
+ ((<verb-pl,i> & (<vc-dispute>)) or
+ (<verb-and-pl-> & ([(<vc-dispute>)] or ())) or
+ ((<vc-dispute>) & <verb-and-pl+>));
+recognizes.v disputes.v calculates.v records.v deduces.v
+accepts.v envisions.v recounts.v signifies.v clarifies.v discloses.v recollects.v
+adduces.v posits.v reiterates.v infers.v presupposes.v:
+
+ ((<verb-s> & (<vc-dispute>)) or
+ (<verb-and-sp-i-> & (([<vc-dispute>]) or ())) or
+ ((<vc-dispute>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+recognized.v-d disputed.v-d accepted.v-d calculated.v-d
+recorded.v-d deduced.v-d envisioned.v-d
+recounted.v-d signified.v-d clarified.v-d disclosed.v-d
+recollected.v-d adduced.v-d posited.v-d
+reiterated.v-d inferred.v-d presupposed.v-d:
+
+ ((<verb-sp,pp> & (<vc-dispute>)) or
+ (<verb-and-sp-i-> & (([<vc-dispute>]) or ())) or
+ ((<vc-dispute>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv> & {THi+}) or ({@E-} & A+)
+or <verb-phrase-opener>;
+recognizing.g disputing.g accepting.g calculating.g deducing.g recording.g
+envisioning.g recounting.g signifying.g clarifying.g disclosing.g
+recollecting.g adducing.g positing.g reiterating.g inferring.g presupposing.g:
+(<vc-dispute> & <verb-ge>) or <verb-ge-d>;
+recognizing.v disputing.v accepting.v calculating.v deducing.v recording.v
+envisioning.v recounting.v signifying.v clarifying.v disclosing.v
+recollecting.v adducing.v positing.v reiterating.v inferring.v presupposing.v:
+<verb-pg> & <vc-dispute>;
+
+undisputed.v: (<verb-s-pv> & {THi+});
+
+<vc-repeat>: {<vc-trans>} or ({@MV+} & TH+);
+repeat.v reflect.v provide.v counter.v signal.v:
+ ((<verb-pl,i> & (<vc-repeat>)) or
+ (<verb-and-pl-> & ([(<vc-repeat>)] or ())) or
+ ((<vc-repeat>) & <verb-and-pl+>));
+repeats.v reflects.v provides.v counters.v signals.v:
+ ((<verb-s> & (<vc-repeat>)) or
+ (<verb-and-sp-i-> & (([<vc-repeat>]) or ())) or
+ ((<vc-repeat>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+repeated.v-d reflected.v-d countered.v-d signaled.v-d signalled.v-d:
+
+ ((<verb-sp,pp> & (<vc-repeat>)) or
+ (<verb-and-sp-i-> & (([<vc-repeat>]) or ())) or
+ ((<vc-repeat>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ <verb-phrase-opener> or
+ ({@E-} & A+);
+provided.v-d:
+
+ ((<verb-sp,pp> & (<vc-repeat>)) or
+ (<verb-and-sp-i-> & (([<vc-repeat>]) or ())) or
+ ((<vc-repeat>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ <verb-phrase-opener> or
+ ({@E-} & A+) or
+ ((TH+ or Ce+) & (({{Xd-} & Xc+} & CO+) or ({Xd- & Xc+} & MVs-)));
+repeating.v reflecting.v providing.v countering.v signaling.v signalling.v:
+ <verb-pg> & <vc-repeat>;
+repeating.g reflecting.g countering.g signaling.g signalling.g:
+ (<vc-repeat> & <verb-ge>) or <verb-ge-d>;
+providing.g:
+ (<vc-repeat> & <verb-ge>) or
+ <verb-ge-d> or
+ ((TH+ or Ce+) & (({{Xd-} & Xc+} & CO+) or ({Xd- & Xc+} & MVs-)));
+
+% -----------------------------------------------------
+<vc-sense>:
+ <vc-trans>
+ or ({@MV+} & (Ce+ or TH+ or RSe+ or Pg+));
+
+sense.v doubt.v reaffirm.v reckon.v regret.v ascertain.v discern.v
+stipulate.v affirm.v certify.v trust.v postulate.v ensure.v imply.v verify.v boast.v:
+
+ ((<verb-pl,i> & (<vc-sense>)) or
+ (<verb-and-pl-> & ([(<vc-sense>)] or ())) or
+ ((<vc-sense>) & <verb-and-pl+>));
+senses.v reaffirms.v doubts.v reckons.v regrets.v
+stipulates.v ascertains.v discerns.v affirms.v certifies.v trusts.v
+postulates.v ensures.v implies.v verifies.v boasts.v:
+
+ ((<verb-s> & (<vc-sense>)) or
+ (<verb-and-sp-i-> & (([<vc-sense>]) or ())) or
+ ((<vc-sense>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+doubted.v-d reaffirmed.v-d sensed.v-d reckoned.v-d regretted.v-d stipulated.v-d
+ascertained.v-d discerned.v-d affirmed.v-d certified.v-d
+trusted.v-d postulated.v-d ensured.v-d implied.v-d verified.v-d boasted.v-d:
+
+ ((<verb-sp,pp> & (<vc-sense>)) or
+ (<verb-and-sp-i-> & (([<vc-sense>]) or ())) or
+ ((<vc-sense>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or (<verb-s-pv> & {THi+})
+ or ({@E-} & A+)
+ or <verb-phrase-opener>;
+
+sensing.v doubting.v reckoning.v reaffirming.v stipulating.v
+regretting.v ascertaining.v discerning.v
+affirming.v certifying.v trusting.v postulating.v ensuring.v
+implying.v verifying.v boasting.v:
+ <verb-pg> & <vc-sense>;
+
+reaffirming.g sensing.g doubting.g stipulating.g
+reckoning.g regretting.g ascertaining.g
+discerning.g affirming.g certifying.g trusting.g
+postulating.g ensuring.g implying.g verifying.g boasting.g:
+ (<vc-sense> & <verb-ge>) or <verb-ge-d>;
+
+% -----------------------------------------------------
+% ditrans: "She proclaimed him a liar and a thief"
+<vc-proclaim>:
+ <vc-trans>
+ or ({@MV+} & (Ce+ or TH+ or RSe+ or Pg+))
+ or <vc-ditrans>;
+
+proclaim.v:
+
+ ((<verb-pl,i> & (<vc-proclaim>)) or
+ (<verb-and-pl-> & ([(<vc-proclaim>)] or ())) or
+ ((<vc-proclaim>) & <verb-and-pl+>));
+proclaims.v:
+
+ ((<verb-s> & (<vc-proclaim>)) or
+ (<verb-and-sp-i-> & (([<vc-proclaim>]) or ())) or
+ ((<vc-proclaim>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+proclaimed.v-d:
+
+ ((<verb-sp,pp> & (<vc-proclaim>)) or
+ (<verb-and-sp-i-> & (([<vc-proclaim>]) or ())) or
+ ((<vc-proclaim>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or (<verb-s-pv> & {THi+})
+ or ({@E-} & A+)
+ or <verb-phrase-opener>;
+proclaiming.v:
+ <verb-pg> & <vc-proclaim>;
+proclaiming.g:
+ (<vc-proclaim> & <verb-ge>) or <verb-ge-d>;
+
+% -----------------------------------------------------
+% Pv+ link: "John imagines himself lost in the woods."
+% Pg+ link: "John imagines himself singing from a mountaintop"
+% AZ+ link: "John imagined Mary as innocent as a lamb"
+% similar to vc-see
+<vc-imagine>: <vc-trans> or
+ ({@MV+} & (Ce+ or TH+ or RSe+ or Z-)) or
+ ((B- or O+) & {@MV+} & {Pg+ or AZ+ or Pv+}) or
+ ({@MV+} & Pg+);
+imagine.v:
+ ((<verb-pl,i> & (<vc-imagine>)) or
+ (<verb-and-pl-> & ([(<vc-imagine>)] or ())) or
+ ((<vc-imagine>) & <verb-and-pl+>));
+imagines.v:
+ ((<verb-s> & (<vc-imagine>)) or
+ (<verb-and-sp-i-> & (([<vc-imagine>]) or ())) or
+ ((<vc-imagine>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+imagined.v:
+
+ ((<verb-sp,pp> & (<vc-imagine>)) or
+ (<verb-and-sp-i-> & (([<vc-imagine>]) or ())) or
+ ((<vc-imagine>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {THi+}) or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+imagining.g: (<vc-imagine> & <verb-ge>) or <verb-ge-d>;
+imagining.v: <verb-pg> & <vc-imagine>;
+
+% Pa**j link: The doctor declared him insane.
+<vc-declare>: <vc-trans> or
+ ({@MV+} & (Ce+ or TH+ or RSe+ or Pg+ or Z-)) or
+ ((B- or O+) & ({@MV+} & Pa**j+));
+declare.v fear.v conclude.v suspect.v concede.v presume.v foresee.v
+emphasize.v maintain.v acknowledge.v note.v confirm.v stress.v assume.v:
+
+ ((<verb-pl,i> & (<vc-declare>)) or
+ (<verb-and-pl-> & ([(<vc-declare>)] or ())) or
+ ((<vc-declare>) & <verb-and-pl+>));
+declares.v fears.v concludes.v suspects.v concedes.v presumes.v foresees.v
+emphasizes.v maintains.v acknowledges.v notes.v
+confirms.v stresses.v assumes.v:
+
+ ((<verb-s> & (<vc-declare>)) or
+ (<verb-and-sp-i-> & (([<vc-declare>]) or ())) or
+ ((<vc-declare>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+declared.v feared.v concluded.v suspected.v conceded.v presumed.v
+emphasized.v maintained.v acknowledged.v noted.v
+confirmed.v-d stressed.v-d assumed.v-d:
+
+ ((<verb-sp,pp> & (<vc-declare>)) or
+ (<verb-and-sp-i-> & (([<vc-declare>]) or ())) or
+ ((<vc-declare>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {THi+ or ({@MV+} & Pa+) }) or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+foresaw.v-d:
+ ((<verb-sp> & (<vc-declare>)) or
+ (<verb-and-sp-i-> & (([<vc-declare>]) or ())) or
+ ((<vc-declare>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+foreseen.v:
+
+ ((<verb-pp> & (<vc-declare>)) or
+ (<verb-and-had-> & (([<vc-declare>]) or ())) or
+ ((<vc-declare>) & <verb-and-had+>)) or
+ (<verb-s-pv> & {@MV+ or THi+}) or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+declaring.g fearing.g concluding.g suspecting.g conceding.g
+presuming.g foreseeing.g emphasizing.g maintaining.g acknowledging.g
+noting.g confirming.g stressing.g assuming.g:
+ (<vc-declare> & <verb-ge>) or <verb-ge-d>;
+declaring.v fearing.v concluding.v suspecting.v conceding.v
+presuming.v foreseeing.v emphasizing.v maintaining.v acknowledging.v
+noting.v confirming.v stressing.v assuming.v:
+ <verb-pg> & <vc-declare>;
+
+<vc-believe>: {<vc-trans>} or
+ ({@MV+} & (Ce+ or TH+ or RSe+));
+believe.v answer.v worry.v protest.v:
+ ((<verb-pl,i> & (<vc-believe>)) or
+ (<verb-and-pl-> & ([(<vc-believe>)] or ())) or
+ ((<vc-believe>) & <verb-and-pl+>));
+believes.v answers.v worries.v protests.v:
+ ((<verb-s> & (<vc-believe>)) or
+ (<verb-and-sp-i-> & (([<vc-believe>]) or ())) or
+ ((<vc-believe>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+believed.v-d answered.v-d worried.v-d protested.v-d:
+
+ ((<verb-sp,pp> & (<vc-believe>)) or
+ (<verb-and-sp-i-> & (([<vc-believe>]) or ())) or
+ ((<vc-believe>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv> & {THi+ or TOf+}) or <verb-phrase-opener>;
+believing.g answering.g worrying.g protesting.g:
+(<vc-believe> & <verb-ge>) or <verb-ge-d>;
+believing.v answering.v worrying.v protesting.v: <verb-pg> & <vc-believe>;
+
+% <vc-trans> with particle
+<vc-rule>:
+ ({@MV+} & (Ce+ or TH+ or RSe+)) or
+ ((({O+ or B-} & {K+}) or
+ (K+ & {[[@MV+]]} & O*n+) or
+ [[@MV+ & O*n+]]) & {@MV+});
+rule.v add.v:
+ ((<verb-pl,i> & (<vc-rule>)) or
+ (<verb-and-pl-> & ([(<vc-rule>)] or ())) or
+ ((<vc-rule>) & <verb-and-pl+>));
+rules.v adds.v:
+ ((<verb-s> & (<vc-rule>)) or
+ (<verb-and-sp-i-> & (([<vc-rule>]) or ())) or
+ ((<vc-rule>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+ruled.v-d added.v-d:
+
+ ((<verb-sp,pp> & (<vc-rule>)) or
+ (<verb-and-sp-i-> & (([<vc-rule>]) or ())) or
+ ((<vc-rule>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv-b> & {({@MV+} & (THi+ or TOf+)) or ({K+} & {@MV+})}) or
+ ({K+} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+ruling.g adding.g: (<vc-rule> & <verb-ge>) or <verb-ge-d>;
+ruling.v adding.v: <verb-pg> & <vc-rule>;
+
+% <vc-trans> with particle
+<vc-figure>:
+ ({@MV+} & (TH+ or Zs- or Ce+)) or
+ ((((O+ or B-) & {K+}) or (K+ & {[[@MV+]]} & O*n+)) & {@MV+}) or
+ ([[@MV+ & O*n+]]);
+figure.v:
+ ((<verb-pl,i> & (<vc-figure>)) or
+ (<verb-and-pl-> & ([(<vc-figure>)] or ())) or
+ ((<vc-figure>) & <verb-and-pl+>));
+figures.v:
+ ((<verb-s> & (<vc-figure>)) or
+ (<verb-and-sp-i-> & (([<vc-figure>]) or ())) or
+ ((<vc-figure>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+figured.v-d:
+
+ ((<verb-sp,pp> & (<vc-figure>)) or
+ (<verb-and-sp-i-> & (([<vc-figure>]) or ())) or
+ ((<vc-figure>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({K+} & <verb-phrase-opener>);
+figuring.g: (<vc-figure> & <verb-ge>) or <verb-ge-d>;
+figuring.v: <verb-pg> & <vc-figure>;
+
+% (QI+ & {MV+}): "I did not say why until recently"
+<vc-predict>: <vc-trans> or
+ ({@MV+} & (Ce+ or TH+ or RSe+ or Zs-)) or
+ ({@MV+} & (QI+ & {MV+}));
+predict.v realize.v discover.v determine.v announce.v say.v mention.v admit.v
+recall.v reveal.v state.v observe.v indicate.v
+analyse.v analyze.v assess.v establish.v evaluate.v examine.v question.v test.v
+hypothesize.v hypothesise.v document.v envisage.v:
+
+ ((<verb-pl,i> & (<vc-predict>)) or
+ (<verb-and-pl-> & ([(<vc-predict>)] or ())) or
+ ((<vc-predict>) & <verb-and-pl+>));
+predicts.v realizes.v discovers.v determines.v announces.v says.v
+mentions.v admits.v recalls.v reveals.v states.v observes.v indicates.v
+analyses.v analyzes.v assesses.v establishes.v evaluates.v examines.v
+questions.v tests.v hypothesizes.v hypothesises.v envisages.v documents.v:
+
+ ((<verb-s> & (<vc-predict>)) or
+ (<verb-and-sp-i-> & (([<vc-predict>]) or ())) or
+ ((<vc-predict>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+predicted.v realized.v discovered.v determined.v announced.v mentioned.v
+admitted.v recalled.v revealed.v stated.v observed.v indicated.v
+analysed.v analyzed.v assessed.v established.v evaluated.v examined.v
+questioned.v tested.v
+hypothesized.v-d hypothesised.v-d well-established.v-d documented.v-d
+envisaged.v-d:
+
+ ((<verb-sp,pp> & (<vc-predict>)) or
+ (<verb-and-sp-i-> & (([<vc-predict>]) or ())) or
+ ((<vc-predict>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {THi+}) or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+said.v-d:
+
+ ((<verb-sp,pp> & (<vc-predict>)) or
+ (<verb-and-sp-i-> & (([<vc-predict>]) or ())) or
+ ((<vc-predict>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ ({@E-} & (Pvf- or [[Mv-]]) & {@MV+} & {THi+}) or
+ [[{@E-} & A+]] or
+ [[<verb-phrase-opener>]];
+predicting.g realizing.g discovering.g determining.g
+announcing.g saying.g mentioning.g admitting.g recalling.g revealing.g
+stating.g observing.g indicating.g
+analysing.g analyzing.g assessing.g establishing.g evaluating.g examining.g
+questioning.g testing.g hypothesizing.g hypothesising.g documenting.g envisaging.g:
+ (<vc-predict> & <verb-ge>) or <verb-ge-d>;
+predicting.v realizing.v discovering.v determining.v
+announcing.v saying.v mentioning.v admitting.v recalling.v revealing.v
+stating.v observing.v indicating.v
+analysing.v analyzing.v assessing.v establishing.v evaluating.v examining.v
+questioning.v testing.v
+hypothesizing.v hypothesising.v documenting.v envisaging.v:
+<verb-pg> & <vc-predict>;
+
+<vc-guess>: {<vc-trans>} or
+ ({@MV+} & (TH+ or QI+ or Ce+ or RSe+ or Zs-));
+guess.v estimate.v understand.v notice.v explain.v demonstrate.v:
+
+ ((<verb-pl,i> & (<vc-guess>)) or
+ (<verb-and-pl-> & ([(<vc-guess>)] or ())) or
+ ((<vc-guess>) & <verb-and-pl+>));
+guesses.v estimates.v understands.v notices.v explains.v demonstrates.v:
+
+ ((<verb-s> & (<vc-guess>)) or
+ (<verb-and-sp-i-> & (([<vc-guess>]) or ())) or
+ ((<vc-guess>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+guessed.v-d understood.v-d noticed.v-d explained.v-d demonstrated.v-d:
+
+ ((<verb-sp,pp> & (<vc-guess>)) or
+ (<verb-and-sp-i-> & (([<vc-guess>]) or ())) or
+ ((<vc-guess>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv> & {THi+}) or <verb-phrase-opener>;
+estimated.v-d:
+
+ ((<verb-sp,pp> & (<vc-guess>)) or
+ (<verb-and-sp-i-> & (([<vc-guess>]) or ())) or
+ ((<vc-guess>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {THi+}) or
+ <verb-phrase-opener> or
+ ({@E-} & A+);
+guessing.g estimating.g understanding.g noticing.g explaining.g
+demonstrating.g: (<vc-guess> & <verb-ge>) or <verb-ge-d>;
+guessing.v estimating.v understanding.v noticing.v explaining.v
+demonstrating.v: <verb-pg> & <vc-guess>;
+
+% (QI+ & {MV+}): "I did not know why until recently"
+<vc-know>:
+ {<vc-trans>} or
+ ({@MV+} & (((OF+ or QI+)& {@MV+}) or Ce+ or TH+ or RSe+ or Zs-));
+know.v:
+ ((<verb-pl,i> & (<vc-know>)) or
+ (<verb-and-pl-> & ([(<vc-know>)] or ())) or
+ ((<vc-know>) & <verb-and-pl+>));
+knows.v:
+ ((<verb-s> & (<vc-know>)) or
+ (<verb-and-sp-i-> & (([<vc-know>]) or ())) or
+ ((<vc-know>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+knew.v-d:
+ ((<verb-sp> & (<vc-know>)) or
+ (<verb-and-sp-i-> & (([<vc-know>]) or ())) or
+ ((<vc-know>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+known.v:
+
+ ((<verb-pp> & (<vc-know>)) or
+ (<verb-and-had-> & (([<vc-know>]) or ())) or
+ ((<vc-know>) & <verb-and-had+>)) or
+ (<verb-s-pv> & {THi+ or TOf+ or QIi+}) or
+ <verb-phrase-opener> or
+ ({@E-} & A+);
+knowing.g: (<vc-know> & <verb-ge>) or <verb-ge-d>;
+knowing.v: <verb-pg> & <vc-know>;
+
+<vc-request>: <vc-trans> or
+ ({@MV+} & (TH+ or Ce+ or RSe+ or Zs- or TS+ or ((SI*j+ or SFI**j+) & I*j+)));
+request.v:
+ ((<verb-pl,i> & (<vc-request>)) or
+ (<verb-and-pl-> & ([(<vc-request>)] or ())) or
+ ((<vc-request>) & <verb-and-pl+>));
+requests.v:
+ ((<verb-s> & (<vc-request>)) or
+ (<verb-and-sp-i-> & (([<vc-request>]) or ())) or
+ ((<vc-request>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+requested.v-d:
+
+ ((<verb-sp,pp> & (<vc-request>)) or
+ (<verb-and-sp-i-> & (([<vc-request>]) or ())) or
+ ((<vc-request>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {THi+ or TSi+}) or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+requesting.g: (<vc-request> & <verb-ge>) or <verb-ge-d>;
+requesting.v: <verb-pg> & <vc-request>;
+
+<vc-feel>: <vc-trans> or
+ ({@MV+} & (Pa+ or TH+ or Ce+ or RSe+ or AF- or Vf+ or (LI+ or {@MV+}) or [[Pv+]]));
+feel.v:
+ ((<verb-pl,i> & (<vc-feel>)) or
+ (<verb-and-pl-> & ([(<vc-feel>)] or ())) or
+ ((<vc-feel>) & <verb-and-pl+>));
+feels.v:
+ ((<verb-s> & (<vc-feel>)) or
+ (<verb-and-sp-i-> & (([<vc-feel>]) or ())) or
+ ((<vc-feel>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+felt.v-d:
+ ((<verb-sp,pp> & (<vc-feel>)) or
+ (<verb-and-sp-i-> & (([<vc-feel>]) or ())) or
+ ((<vc-feel>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv> & {THi+}) or <verb-phrase-opener>;
+feeling.g: (<vc-feel> & <verb-ge>) or <verb-ge-d>;
+feeling.v: <verb-pg> & <vc-feel>;
+
+<vc-mind>: {<vc-trans>} or
+ ({@MV+} & (QI+ or TH+ or Pg+));
+mind.v:
+ ((<verb-pl,i> & (<vc-mind>)) or
+ (<verb-and-pl-> & ([(<vc-mind>)] or ())) or
+ ((<vc-mind>) & <verb-and-pl+>));
+minds.v:
+ ((<verb-s> & (<vc-mind>)) or
+ (<verb-and-sp-i-> & (([<vc-mind>]) or ())) or
+ ((<vc-mind>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+minded.v-d:
+ ((<verb-sp,pp> & (<vc-mind>)) or
+ (<verb-and-sp-i-> & (([<vc-mind>]) or ())) or
+ ((<vc-mind>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or <verb-phrase-opener>;
+minding.g: (<vc-mind> & <verb-ge>) or <verb-ge-d>;
+minding.v: <verb-pg> & <vc-mind>;
+
+<vc-study>: {<vc-trans>} or ({@MV+} & QI+);
+study.v:
+ ((<verb-pl,i> & (<vc-study>)) or
+ (<verb-and-pl-> & ([(<vc-study>)] or ())) or
+ ((<vc-study>) & <verb-and-pl+>));
+studies.v:
+ ((<verb-s> & (<vc-study>)) or
+ (<verb-and-sp-i-> & (([<vc-study>]) or ())) or
+ ((<vc-study>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+studied.v-d:
+
+ ((<verb-sp,pp> & (<vc-study>)) or
+ (<verb-and-sp-i-> & (([<vc-study>]) or ())) or
+ ((<vc-study>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or ({@E-} & A+) or
+ <verb-phrase-opener>;
+studying.g: (<vc-study> & <verb-ge>) or <verb-ge-d>;
+studying.v: <verb-pg> & <vc-study>;
+
+% QI+ link: "I will discuss which vitamins I take"
+<vc-discuss>: <vc-trans> or ({@MV+} & (Pg+ or QI+));
+discuss.v:
+ ((<verb-pl,i> & (<vc-discuss>)) or
+ (<verb-and-pl-> & ([(<vc-discuss>)] or ())) or
+ ((<vc-discuss>) & <verb-and-pl+>));
+discusses.v:
+ ((<verb-s> & (<vc-discuss>)) or
+ (<verb-and-sp-i-> & (([<vc-discuss>]) or ())) or
+ ((<vc-discuss>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+discussed.v-d:
+ ((<verb-sp,pp> & (<vc-discuss>)) or
+ (<verb-and-sp-i-> & (([<vc-discuss>]) or ())) or
+ ((<vc-discuss>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or ({@E-} & A+) or <verb-phrase-opener>;
+discussing.g: (<vc-discuss> & <verb-ge>) or <verb-ge-d>;
+discussing.v:
+<verb-pg> & <vc-discuss>;
+
+<vc-oppose>: <vc-trans> or ({@MV+} & Pg+);
+oppose.v enjoy.v advocate.v contemplate.v entail.v necessitate.v
+justify.v risk.v avoid.v involve.v favor.v:
+
+ ((<verb-pl,i> & (<vc-oppose>)) or
+ (<verb-and-pl-> & ([(<vc-oppose>)] or ())) or
+ ((<vc-oppose>) & <verb-and-pl+>));
+opposes.v enjoys.v advocates.v contemplates.v entails.v necessitates.v
+justifies.v risks.v avoids.v involves.v favors.v:
+
+ ((<verb-s> & (<vc-oppose>)) or
+ (<verb-and-sp-i-> & (([<vc-oppose>]) or ())) or
+ ((<vc-oppose>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+opposed.v-d enjoyed.v-d advocated.v-d contemplated.v-d entailed.v-d
+necessitated.v-d justified.v-d risked.v-d avoided.v-d involved.v-d favored.v-d:
+
+ ((<verb-sp,pp> & (<vc-oppose>)) or
+ (<verb-and-sp-i-> & (([<vc-oppose>]) or ())) or
+ ((<vc-oppose>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+
+opposing.g enjoying.g advocating.g contemplating.g
+entailing.g necessitating.g justifying.g risking.g avoiding.g
+favoring.g involving.g:
+ (<vc-oppose> & <verb-ge>) or <verb-ge-d>;
+opposing.v enjoying.v advocating.v contemplating.v
+entailing.v necessitating.v justifying.v risking.v avoiding.v involving.v
+favoring.v:
+ <verb-pg> & <vc-oppose>;
+
+<vc-finish>: {<vc-trans>} or ({@MV+} & Pg+);
+finish.v practice.v resist.v:
+ ((<verb-pl,i> & (<vc-finish>)) or
+ (<verb-and-pl-> & ([(<vc-finish>)] or ())) or
+ ((<vc-finish>) & <verb-and-pl+>));
+finishes.v practices.v resists.v quits.v:
+ ((<verb-s> & (<vc-finish>)) or
+ (<verb-and-sp-i-> & (([<vc-finish>]) or ())) or
+ ((<vc-finish>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+% <verb-pv>: "I want it finished"
+finished.v-d practiced.v-d resisted.v-d quitted.v-d:
+
+ ((<verb-sp,pp> & (<vc-finish>)) or
+ (<verb-and-sp-i-> & (([<vc-finish>]) or ())) or
+ ((<vc-finish>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or ({@E-} & A+) or <verb-phrase-opener>;
+quit.v-d:
+
+ ((<verb-pl,i> & (<vc-finish>)) or
+ (<verb-and-pl-> & ([(<vc-finish>)] or ())) or
+ ((<vc-finish>) & <verb-and-pl+>)) or
+
+ ((<verb-sp,pp> & (<vc-finish>)) or
+ (<verb-and-sp-i-> & (([<vc-finish>]) or ())) or
+ ((<vc-finish>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+finishing.g practicing.g resisting.g
+quitting.g: (<vc-finish> & <verb-ge>) or <verb-ge-d>;
+finishing.v practicing.v resisting.v quitting.v: <verb-pg> & <vc-finish>;
+
+% Pv-: "I want it over with"
+over_with: <verb-pv-b>;
+
+% <vc-trans> with particle
+% and also Pa**j for "The witch turned him green"
+<vc-turn>: ((O+ or
+ (K+ & {[[@MV+]]} & O*n+) or
+ ({O+ or B-} & {K+}) or
+ ((O+ or B-) & Pa**j+) or
+ [[@MV+ & O*n+]]) & {@MV+}) or
+({@MV+} & (Pa+ or AF-));
+turn.v:
+ ((<verb-pl,i> & (<vc-turn>)) or
+ (<verb-and-pl-> & ([(<vc-turn>)] or ())) or
+ ((<vc-turn>) & <verb-and-pl+>));
+turns.v:
+ ((<verb-s> & (<vc-turn>)) or
+ (<verb-and-sp-i-> & (([<vc-turn>]) or ())) or
+ ((<vc-turn>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+turned.v-d:
+ ((<verb-sp,pp> & (<vc-turn>)) or
+ (<verb-and-sp-i-> & (([<vc-turn>]) or ())) or
+ ((<vc-turn>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv-b> & {K+} & {@MV+})
+or ({K+} & <verb-phrase-opener>);
+turning.v: <verb-pg> & <vc-turn>;
+turning.g: (<vc-turn> & <verb-ge>) or <verb-ge-d>;
+
+% <vc-trans> plus TI
+<vc-become>: ((O+ or B- or TI+ or [[@MV+ & (O*n+ or TI+)]] or [[Pv+]])
+& {@MV+}) or ({@MV+} & (AF- or Pa+));
+become.v:
+ ((<verb-s-pl,i> & (<vc-become>)) or
+ (<verb-and-sp-i-> & ([(<vc-become>)] or ())) or
+ ((<vc-become>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pp> & <vc-become>) or <verb-pv>;
+becomes.v: <verb-s-s> & <vc-become>;
+became.v-d: <verb-s-sp> & <vc-become>;
+becoming.g: (<vc-become> & <verb-ge>) or <verb-ge-d>;
+becoming.v: <verb-pg> & <vc-become>;
+
+% <vc-trans> plus TI
+<vc-remain>: ({@MV+} & (AF- or Pa+)) or ({O+ or B- or TI+ or
+[[@MV+ & (O*n+ or TI+)]] or [[Pv+]]} & {@MV+});
+remain.v:
+ ((<verb-pl,i> & (<vc-remain>)) or
+ (<verb-and-pl-> & ([(<vc-remain>)] or ())) or
+ ((<vc-remain>) & <verb-and-pl+>));
+remains.v:
+ ((<verb-s> & (<vc-remain>)) or
+ (<verb-and-sp-i-> & (([<vc-remain>]) or ())) or
+ ((<vc-remain>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+remained.v-d:
+ ((<verb-sp,pp> & (<vc-remain>)) or
+ (<verb-and-sp-i-> & (([<vc-remain>]) or ())) or
+ ((<vc-remain>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+remaining.g: (<vc-remain> & <verb-ge>) or <verb-ge-d> or ({@E-} & A+);
+remaining.v: <verb-pg> & <vc-remain>;
+
+% <vc-trans> plus particle
+<vc-grow>: ({@MV+} & (AF- or Pa+)) or ((({O+ or B-} & {K+}) or
+(K+ & {[[@MV+]]} & O*n+) or [[@MV+ & O*n+]]) & {@MV+});
+grow.v:
+ ((<verb-pl,i> & (<vc-grow>)) or
+ (<verb-and-pl-> & ([(<vc-grow>)] or ())) or
+ ((<vc-grow>) & <verb-and-pl+>));
+grows.v:
+ ((<verb-s> & (<vc-grow>)) or
+ (<verb-and-sp-i-> & (([<vc-grow>]) or ())) or
+ ((<vc-grow>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+grew.v-d:
+ ((<verb-sp> & (<vc-grow>)) or
+ (<verb-and-sp-i-> & (([<vc-grow>]) or ())) or
+ ((<vc-grow>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+grown.v:
+
+ ((<verb-pp> & (<vc-grow>)) or
+ (<verb-and-had-> & (([<vc-grow>]) or ())) or
+ ((<vc-grow>) & <verb-and-had+>)) or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({@E-} & A+) or
+ ({K+} & <verb-phrase-opener>);
+growing.g: (<vc-grow> & <verb-pg,ge>) or ({@E-} & A+) or <verb-ge-d>;
+growing.v: <verb-pg> & <vc-grow>;
+
+% <vc-trans> plus OF
+<vc-approve>: {O+ or B- or [[@MV+ & O*n+]] or ({@MV+} & OF+)} & {@MV+};
+approve.v:
+ ((<verb-pl,i> & (<vc-approve>)) or
+ (<verb-and-pl-> & ([(<vc-approve>)] or ())) or
+ ((<vc-approve>) & <verb-and-pl+>));
+approves.v:
+ ((<verb-s> & (<vc-approve>)) or
+ (<verb-and-sp-i-> & (([<vc-approve>]) or ())) or
+ ((<vc-approve>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+approved.v-d:
+ ((<verb-sp,pp> & (<vc-approve>)) or
+ (<verb-and-sp-i-> & (([<vc-approve>]) or ())) or
+ ((<vc-approve>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or ({@E-} & A+)
+or <verb-phrase-opener>;
+approving.g: (<vc-approve> & <verb-ge>) or <verb-ge-d>;
+approving.v: <verb-pg> & <vc-approve>;
+
+% <vc-trans> plus OF
+<vc-dispose>: (O+ or B- or [[@MV+ & O*n+]] or ({@MV+} & OF+)) & {@MV+};
+dispose.v conceive.v:
+ ((<verb-pl,i> & (<vc-dispose>)) or
+ (<verb-and-pl-> & ([(<vc-dispose>)] or ())) or
+ ((<vc-dispose>) & <verb-and-pl+>));
+disposes.v conceives.v:
+ ((<verb-s> & (<vc-dispose>)) or
+ (<verb-and-sp-i-> & (([<vc-dispose>]) or ())) or
+ ((<vc-dispose>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+disposed.v-d conceived.v-d:
+ ((<verb-sp,pp> & (<vc-dispose>)) or
+ (<verb-and-sp-i-> & (([<vc-dispose>]) or ())) or
+ ((<vc-dispose>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or
+({@E-} & A+) or <verb-phrase-opener>;
+disposing.g conceiving.g: (<vc-dispose> & <verb-ge>) or <verb-ge-d>;
+disposing.v conceiving.v: <verb-ge> & <vc-dispose>;
+
+% <vc-trans> plus particle
+<vc-speak>: ((K+ & {[[@MV+]]} & O*n+) or ({O+ or B-} & {K+}) or
+[[@MV+ & O*n+]] or OF+) & {@MV+};
+speak.v:
+ ((<verb-pl,i> & (<vc-speak>)) or
+ (<verb-and-pl-> & ([(<vc-speak>)] or ())) or
+ ((<vc-speak>) & <verb-and-pl+>));
+speaks.v:
+ ((<verb-s> & (<vc-speak>)) or
+ (<verb-and-sp-i-> & (([<vc-speak>]) or ())) or
+ ((<vc-speak>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+spoke.v-d:
+ ((<verb-sp> & (<vc-speak>)) or
+ (<verb-and-sp-i-> & (([<vc-speak>]) or ())) or
+ ((<vc-speak>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+spoken.v:
+
+ ((<verb-pp> & (<vc-speak>)) or
+ (<verb-and-had-> & (([<vc-speak>]) or ())) or
+ ((<vc-speak>) & <verb-and-had+>)) or
+ (<verb-pv-b> & {K+} & {@MV+}) or
+ ({K+} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+speaking.v: <verb-pg> & <vc-speak>;
+speaking.g: (<vc-speak> & <verb-ge>) or <verb-ge-d> or ({@E-} & A+);
+
+<vc-taste>: <vc-trans> or
+({@MV+} & ((LI+ & {@MV+}) or AF- or Pa+ or OF+));
+taste.v:
+ ((<verb-pl,i> & (<vc-taste>)) or
+ (<verb-and-pl-> & ([(<vc-taste>)] or ())) or
+ ((<vc-taste>) & <verb-and-pl+>));
+tastes.v:
+ ((<verb-s> & (<vc-taste>)) or
+ (<verb-and-sp-i-> & (([<vc-taste>]) or ())) or
+ ((<vc-taste>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+tasted.v-d:
+ ((<verb-sp,pp> & (<vc-taste>)) or
+ (<verb-and-sp-i-> & (([<vc-taste>]) or ())) or
+ ((<vc-taste>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or <verb-phrase-opener>;
+tasting.g: (<vc-taste> & <verb-ge>) or <verb-ge-d>;
+tasting.v: <verb-pg> & <vc-taste>;
+
+<vc-smell>: {<vc-trans>} or
+({@MV+} & ((LI+ & {@MV+}) or AF- or Pa+ or OF+));
+reek.v smell.v:
+ ((<verb-pl,i> & (<vc-smell>)) or
+ (<verb-and-pl-> & ([(<vc-smell>)] or ())) or
+ ((<vc-smell>) & <verb-and-pl+>));
+reeks.v smells.v:
+ ((<verb-s> & (<vc-smell>)) or
+ (<verb-and-sp-i-> & (([<vc-smell>]) or ())) or
+ ((<vc-smell>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+reeked.v-d smelled.v-d:
+ ((<verb-sp,pp> & (<vc-smell>)) or
+ (<verb-and-sp-i-> & (([<vc-smell>]) or ())) or
+ ((<vc-smell>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or <verb-phrase-opener>;
+reeking.g smelling.g: (<vc-smell> & <verb-ge>) or <verb-ge-d>;
+reeking.v smelling.v: <verb-pg> & <vc-smell>;
+
+% <vc-trans> plus partcle and Vt
+<vc-take>:
+ (((K+ & {[[@MV+]]} & O*n+) or ((O+ or B-) & {K+ or Vt+}) or [[@MV+ & O*n+]]) & {@MV+}) or
+ ({O+} & (OT+ or BT-) & {@MV+} & {(TOt+ & B+) or TOi+}) or
+ (OXii+ & Vtg+ & {@MV+} & TH+) or
+ @MV+;
+take.v:
+ ((<verb-s-pl,i> & (<vc-take>)) or
+ (<verb-and-sp-i-> & ([(<vc-take>)] or ())) or
+ ((<vc-take>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+takes.v: <verb-s-s> & <vc-take>;
+took.v-d: <verb-s-sp> & <vc-take>;
+taken.v: (<verb-s-pp> & <vc-take>) or (<verb-pv-b> &
+{K+} & {@MV+}) or ({@E-} & A+) or ({K+} & <verb-phrase-opener>) or (Pvf- & Vtg+ & THi+);
+taking.v: <verb-s-pg> & <vc-take>;
+taking.g: (<vc-take> & <verb-ge>) or <verb-ge-d>;
+for_granted: Vtg-;
+
+% VERBS TAKING [OBJ] + [OTHER COMPLEMENT]
+% basically, all these are <vc-trans> plus mess
+<vc-put>:
+ ((K+ & {[[@MV+]]} & O*n+) or
+ ((O+ or B-) & (K+ or Pp+ or WR-)) or
+ (Vp+ & (Zs- or MVa+))) & {@MV+};
+
+put.v-d:
+
+ ((<verb-sp,pp> & (<vc-put>)) or
+ (<verb-and-sp-i-> & (([<vc-put>]) or ())) or
+ ((<vc-put>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-put>) or
+ (<verb-pv-b> & (K+ or Pp+ or WR-) & {@MV+}) or
+ ((K+ or Pp+) & <verb-phrase-opener>);
+puts.v:
+ ((<verb-s> & (<vc-put>)) or
+ (<verb-and-sp-i-> & (([<vc-put>]) or ())) or
+ ((<vc-put>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+putting.v: <verb-pg> & <vc-put>;
+putting.g: (<vc-put> & <verb-ge>) or <verb-ge-d>;
+
+% K+ & O*n+: "He costed out the plan"
+<vc-cost>:
+ ((<vc-opt-ditrans> or
+ (K+ & O*n+) or
+ (B- & {O+})) & {@MV+} & {TOi+}) or
+ ([[@MV+ & O*n+]]);
+
+cost.v-d:
+ ((<verb-s-pl,i> & (<vc-cost>)) or
+ (<verb-and-sp-i-> & ([(<vc-cost>)] or ())) or
+ ((<vc-cost>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-sp,pp> & <vc-cost>);
+costed.v-d:
+ ((<verb-sp,pp> & (<vc-cost>)) or
+ (<verb-and-sp-i-> & (([<vc-cost>]) or ())) or
+ ((<vc-cost>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & (({K+} & {@MV+}) or Pa+ or Pg+)) or
+ ({K+ or Pa+ or Pg+} & <verb-phrase-opener>);
+costs.v: <verb-s-s> & <vc-cost>;
+costing.v: <verb-s-pg> & <vc-cost>;
+costing.g: (<vc-cost> & <verb-ge>) or <verb-ge-d>;
+
+% ditransitive
+<vc-find>:
+ (<vc-ditrans> & {@MV+}) or
+ (K+ & {[[@MV+]]} & O*n+) or
+ (B- & O+) or
+ ((O+ or B-) & (({@MV+} & (Pa+ or AF- or Pg+)) or ({K+} & {@MV+}))) or
+ ([[@MV+ & O*n+]]) or
+ ({@MV+} & (TH+ or Ce+ or RSe+));
+
+find.v:
+ ((<verb-pl,i> & (<vc-find>)) or
+ (<verb-and-pl-> & ([(<vc-find>)] or ())) or
+ ((<vc-find>) & <verb-and-pl+>));
+finds.v:
+ ((<verb-s> & (<vc-find>)) or
+ (<verb-and-sp-i-> & (([<vc-find>]) or ())) or
+ ((<vc-find>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+found.v-d:
+ ((<verb-sp,pp> & (<vc-find>)) or
+ (<verb-and-sp-i-> & (([<vc-find>]) or ())) or
+ ((<vc-find>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & (({K+ or AF-} & {@MV+}) or Pa+ or Pg+)) or
+ ({K+ or Pa+ or Pg+} & <verb-phrase-opener>);
+finding.v: <verb-pg> & <vc-find>;
+finding.g: (<vc-find> & <verb-ge>) or <verb-ge-d>;
+
+% ditranstive
+<vc-get>:
+ ((O+ or B-) & (({K+} & {@MV+}) or ({@MV+} & (Pa+ or AF- or Pv+)))) or
+ ((<vc-ditrans> or
+ (K+ & {[[@MV+]]} & O*n+) or
+ K+ or
+ (B- & O+)
+ ) & {@MV+}) or
+ ({@MV+} & (Pa+ or AF- or Pv+ or Pp+ or TO+));
+get.v:
+ ((<verb-pl,i> & (<vc-get>)) or
+ (<verb-and-pl-> & ([(<vc-get>)] or ())) or
+ ((<vc-get>) & <verb-and-pl+>));
+gets.v:
+ ((<verb-s> & (<vc-get>)) or
+ (<verb-and-sp-i-> & (([<vc-get>]) or ())) or
+ ((<vc-get>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+got.v-d:
+ ((<verb-sp,pp> & (<vc-get>)) or
+ (<verb-and-sp-i-> & (([<vc-get>]) or ())) or
+ ((<vc-get>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+gotten.v:
+
+ ((<verb-pp> & (<vc-get>)) or
+ (<verb-and-had-> & (([<vc-get>]) or ())) or
+ ((<vc-get>) & <verb-and-had+>)) or
+ (<verb-pv-b> & {K+ or Pp+} & {@MV+}) or
+ ({K+ or Pp+} & <verb-phrase-opener>);
+getting.v: <verb-pg> & <vc-get>;
+getting.g: (<vc-get> & <verb-ge>) or <verb-ge-d>;
+
+<vc-leave>:
+ ((O+ or B-) & (({K+} & {@MV+}) or ({@MV+} & {Pa+ or AF- or Pv+ or Pg+}))) or
+ ({(K+ & {[[@MV+]]} & O*n+) or ([[@MV+ & O*n+]])} & {@MV+});
+
+leave.v:
+ ((<verb-pl,i> & (<vc-leave>)) or
+ (<verb-and-pl-> & ([(<vc-leave>)] or ())) or
+ ((<vc-leave>) & <verb-and-pl+>));
+leaves.v:
+ ((<verb-s> & (<vc-leave>)) or
+ (<verb-and-sp-i-> & (([<vc-leave>]) or ())) or
+ ((<vc-leave>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+left.v-d:
+
+ ((<verb-sp,pp> & (<vc-leave>)) or
+ (<verb-and-sp-i-> & (([<vc-leave>]) or ())) or
+ ((<vc-leave>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & (({K+ or AF-} & {@MV+}) or Pv+ or Pa+ or Pg+)) or
+ ({K+ or ({@MV+} & (Pv+ or Pa+ or Pg+))} & <verb-phrase-opener>);
+leaving.v: <verb-pg> & <vc-leave>;
+leaving.g: (<vc-leave> & <verb-ge>) or <verb-ge-d>;
+
+<vc-keep>:
+ ((O+ or (K+ & {[[@MV+]]} & O*n+) or [[@MV+ & O*n+]] or Vk+) & {@MV+}) or
+ ({O+ or B-} & ((K+ & {@MV+}) or ({@MV+} & (Pa+ or AF- or Pg+ or Pv+))));
+
+keep.v:
+ ((<verb-pl,i> & (<vc-keep>)) or
+ (<verb-and-pl-> & ([(<vc-keep>)] or ())) or
+ ((<vc-keep>) & <verb-and-pl+>));
+keeps.v:
+ ((<verb-s> & (<vc-keep>)) or
+ (<verb-and-sp-i-> & (([<vc-keep>]) or ())) or
+ ((<vc-keep>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+kept.v-d:
+ ((<verb-sp,pp> & (<vc-keep>)) or
+ (<verb-and-sp-i-> & (([<vc-keep>]) or ())) or
+ ((<vc-keep>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+(<verb-pv-b> & (({K+ or AF-} & {@MV+}) or Pa+ or Pg+ or Pv+)) or
+({K+ or ({@MV+} & (Pa+ or Pg+ or Pv+))} & <verb-phrase-opener>);
+keeping.v: <verb-pg> & <vc-keep>;
+keeping.g: (<vc-keep> & <verb-ge>) or <verb-ge-d>;
+
+watch.i vigil.i pace.i: Vk-;
+track.i: Vk- & {OF+};
+
+<vc-set>:
+ ((K+ & {[[@MV+]]} & O*n+) or ({O+ or B-} & {K+ or Vs+}) or
+ [[@MV+ & O*n+]]) & {@MV+};
+
+set.v-d:
+
+ ((<verb-sp,pp> & (<vc-set>)) or
+ (<verb-and-sp-i-> & (([<vc-set>]) or ())) or
+ ((<vc-set>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-set>) or
+ (<verb-pv> & {K+ or Vs+} & {@MV+}) or
+ ({@E-} & A+) or
+ ({K+ or Vs+} & <verb-phrase-opener>);
+sets.v:
+ ((<verb-s> & (<vc-set>)) or
+ (<verb-and-sp-i-> & (([<vc-set>]) or ())) or
+ ((<vc-set>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+setting.v: <verb-pg> & <vc-set>;
+setting.g: (<vc-set> & <verb-ge>) or <verb-ge-d> or ({@E-} & A+);
+
+free.i straight.i loose.i: Vs- & {MV+};
+
+<vc-hold>:
+ ((K+ & {[[@MV+]]} & O*n+) or ({O+ or B-} & {K+ or Vh+}) or [[@MV+ & O*n+]]) & {@MV+};
+
+hold.v:
+ ((<verb-pl,i> & (<vc-hold>)) or
+ (<verb-and-pl-> & ([(<vc-hold>)] or ())) or
+ ((<vc-hold>) & <verb-and-pl+>));
+holds.v:
+ ((<verb-s> & (<vc-hold>)) or
+ (<verb-and-sp-i-> & (([<vc-hold>]) or ())) or
+ ((<vc-hold>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+held.v-d:
+ ((<verb-sp,pp> & (<vc-hold>)) or
+ (<verb-and-sp-i-> & (([<vc-hold>]) or ())) or
+ ((<vc-hold>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv-b> & {K+ or Vh+} & {@MV+}) or
+({@E-} & A+) or ({K+ or Vh+} & <verb-phrase-opener>);
+holding.v: <verb-pg> & <vc-hold>;
+holding.g: (<vc-hold> & <verb-ge>) or <verb-ge-d>;
+
+hostage.i captive.i: Vh- or Vth-;
+
+<vc-expect>:
+ ({@MV+} & (Ce+ or TH+ or RSe+ or Z- or TO+)) or
+ ((O+ or OX+ or B-) & {@MV+} & {TOo+}) or
+ ([[@MV+ & O*n+]]);
+
+expect.v claim.v:
+ ((<verb-pl,i> & (<vc-expect>)) or
+ (<verb-and-pl-> & ([(<vc-expect>)] or ())) or
+ ((<vc-expect>) & <verb-and-pl+>));
+expects.v claims.v:
+ ((<verb-s> & (<vc-expect>)) or
+ (<verb-and-sp-i-> & (([<vc-expect>]) or ())) or
+ ((<vc-expect>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+expected.v-d claimed.v-d:
+ ((<verb-sp,pp> & (<vc-expect>)) or
+ (<verb-and-sp-i-> & (([<vc-expect>]) or ())) or
+ ((<vc-expect>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv> &
+{TOf+ or THi+ or Z-}) or ({@E-} & A+) or ({@MV+} & {TO+} & <verb-phrase-opener>);
+expecting.g claiming.g: (<vc-expect> & <verb-ge>) or <verb-ge-d>;
+expecting.v claiming.v: <verb-pg> & <vc-expect>;
+
+<vc-intend>:
+ ({@MV+} & (TH+ or Z- or TO+)) or
+ ((O+ or OX+ or B-) & {@MV+} & TOo+);
+intend.v:
+ ((<verb-pl,i> & (<vc-intend>)) or
+ (<verb-and-pl-> & ([(<vc-intend>)] or ())) or
+ ((<vc-intend>) & <verb-and-pl+>));
+intends.v:
+ ((<verb-s> & (<vc-intend>)) or
+ (<verb-and-sp-i-> & (([<vc-intend>]) or ())) or
+ ((<vc-intend>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+intended.v-d:
+ ((<verb-sp,pp> & (<vc-intend>)) or
+ (<verb-and-sp-i-> & (([<vc-intend>]) or ())) or
+ ((<vc-intend>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & {TO+ or Z- or @MV+})
+ or ({@E-} & A+) or ({@MV+} & {TO+} & <verb-phrase-opener>);
+intending.g: (<vc-intend> & <verb-ge>) or <verb-ge-d>;
+intending.v: <verb-pg> & <vc-intend>;
+
+<vc-dare>:
+ (N+ & I+) or
+ ({@MV+} & TO+) or
+ ((O+ or B-) & {@MV+} & TOo+);
+
+dare.v:
+ ((<verb-pl,i> & (<vc-dare>)) or
+ (<verb-and-pl-> & ([(<vc-dare>)] or ())) or
+ ((<vc-dare>) & <verb-and-pl+>));
+dares.v:
+ ((<verb-s> & (<vc-dare>)) or
+ (<verb-and-sp-i-> & (([<vc-dare>]) or ())) or
+ ((<vc-dare>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+dared.v-d:
+ ((<verb-sp,pp> & (<vc-dare>)) or
+ (<verb-and-sp-i-> & (([<vc-dare>]) or ())) or
+ ((<vc-dare>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & TO+) or
+({@MV+} & TO+ & <verb-phrase-opener>);
+daring.g: (<vc-dare> & <verb-ge>) or <verb-ge-d>;
+daring.v: <verb-pg> & <vc-dare>;
+
+<vc-like>:
+ ({@MV+} & (TO+ or Pg+)) or
+ ((O+ or B- or OX+) & {@MV+} & {TOo+}) or
+ ([[@MV+ & O*n+]]);
+
+like.v:
+ ((<verb-pl,i> & (<vc-like>)) or
+ (<verb-and-pl-> & ([(<vc-like>)] or ())) or
+ ((<vc-like>) & <verb-and-pl+>));
+likes.v:
+ ((<verb-s> & (<vc-like>)) or
+ (<verb-and-sp-i-> & (([<vc-like>]) or ())) or
+ ((<vc-like>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+liked.v-d:
+ ((<verb-sp,pp> & (<vc-like>)) or
+ (<verb-and-sp-i-> & (([<vc-like>]) or ())) or
+ ((<vc-like>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or <verb-phrase-opener>;
+liking.g: (<vc-like> & <verb-ge>) or <verb-ge-d>;
+liking.v: <verb-pg> & <vc-like>;
+
+% ditranstive
+<vc-offer>:
+ ((<vc-opt-ditrans> or
+ (B- & {O+})) & {@MV+}) or
+ ({@MV+} & TO+) or
+ ([[@MV+ & O*n+]]);
+
+offer.v:
+ ((<verb-pl,i> & (<vc-offer>)) or
+ (<verb-and-pl-> & ([(<vc-offer>)] or ())) or
+ ((<vc-offer>) & <verb-and-pl+>));
+offers.v:
+ ((<verb-s> & (<vc-offer>)) or
+ (<verb-and-sp-i-> & (([<vc-offer>]) or ())) or
+ ((<vc-offer>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+offered.v-d:
+ ((<verb-sp,pp> & (<vc-offer>)) or
+ (<verb-and-sp-i-> & (([<vc-offer>]) or ())) or
+ ((<vc-offer>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv-b> & {O+ or B-
+or [[@MV+ & O*n+]]} & {@MV+}) or ({O+ or [[@MV+ & O*n+]]} or <verb-phrase-opener>);
+offering.g: (<vc-offer> & <verb-ge>) or <verb-ge-d>;
+offering.v: <verb-pg> & <vc-offer>;
+
+% ditransitive
+% unlike vc-offer, "to" is optional.
+<vc-refuse>:
+ ((<vc-opt-ditrans> or
+ (B- & {O+})) & {@MV+}) or
+ ({@MV+} & {TO+}) or
+ ([[@MV+ & O*n+]]);
+
+refuse.v:
+ ((<verb-pl,i> & (<vc-refuse>)) or
+ (<verb-and-pl-> & ([(<vc-refuse>)] or ())) or
+ ((<vc-refuse>) & <verb-and-pl+>));
+refuses.v:
+ ((<verb-s> & (<vc-refuse>)) or
+ (<verb-and-sp-i-> & (([<vc-refuse>]) or ())) or
+ ((<vc-refuse>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+refused.v-d:
+ ((<verb-sp,pp> & (<vc-refuse>)) or
+ (<verb-and-sp-i-> & (([<vc-refuse>]) or ())) or
+ ((<vc-refuse>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv-b> & {O+ or B- or
+[[@MV+ & O*n+]]} & {@MV+}) or ({O+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+refusing.g: (<vc-refuse> & <verb-ge>) or <verb-ge-d>;
+refusing.v: <verb-pg> & <vc-refuse>;
+
+% Pa**j+: predicative adjective -- "I want it green", "I want it very shiny."
+<vc-want>:
+ ({@MV+} & TO+) or
+ ((O+ or OX+ or B-) & {@MV+} & {TOo+ or Pv+ or Pa**j+}) or
+ ([[@MV+ & O*n+]]) or
+ [[CX- & {@MV+}]];
+
+want.v need.v:
+ ((<verb-pl,i> & (<vc-want>)) or
+ (<verb-and-pl-> & ([(<vc-want>)] or ())) or
+ ((<vc-want>) & <verb-and-pl+>));
+need.i: {@E-} & (S- or (RS- & B-)) & (N+ & I+);
+wants.v needs.v:
+ ((<verb-s> & (<vc-want>)) or
+ (<verb-and-sp-i-> & (([<vc-want>]) or ())) or
+ ((<vc-want>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+wanted.v-d needed.v-d:
+ ((<verb-sp,pp> & (<vc-want>)) or
+ (<verb-and-sp-i-> & (([<vc-want>]) or ())) or
+ ((<vc-want>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or ({@E-} & A+)
+or <verb-phrase-opener>;
+wanting.g needing.g: (<vc-want> & <verb-ge>) or <verb-ge-d>;
+wanting.v needing.v: <verb-pg> & <vc-want>;
+
+<vc-choose>:
+ ({@MV+} & {TO+}) or
+ ((O+ or B-) & {@MV+} & {TOo+}) or
+ ([[@MV+ & O*n+]]);
+
+choose.v:
+ ((<verb-pl,i> & (<vc-choose>)) or
+ (<verb-and-pl-> & ([(<vc-choose>)] or ())) or
+ ((<vc-choose>) & <verb-and-pl+>));
+chooses.v:
+ ((<verb-s> & (<vc-choose>)) or
+ (<verb-and-sp-i-> & (([<vc-choose>]) or ())) or
+ ((<vc-choose>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+chose.v-d:
+ ((<verb-sp> & (<vc-choose>)) or
+ (<verb-and-sp-i-> & (([<vc-choose>]) or ())) or
+ ((<vc-choose>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+chosen.v:
+
+ ((<verb-pp> & (<vc-choose>)) or
+ (<verb-and-had-> & (([<vc-choose>]) or ())) or
+ ((<vc-choose>) & <verb-and-had+>)) or
+ (<verb-pv> & {TO+}) or
+ ({@E-} & A+) or
+ ({@MV+} & {TO+} & <verb-phrase-opener>);
+choosing.g: (<vc-choose> & <verb-ge>) or <verb-ge-d>;
+choosing.v: <verb-pg> & <vc-choose>;
+
+% <vc-prepare> is identical to <vc-choose>
+<vc-prepare>:
+ ({@MV+} & {TO+}) or
+ ((O+ or B-) & {@MV+} & {TOo+}) or
+ ([[@MV+ & O*n+]]);
+
+prepare.v press.v:
+ ((<verb-pl,i> & (<vc-prepare>)) or
+ (<verb-and-pl-> & ([(<vc-prepare>)] or ())) or
+ ((<vc-prepare>) & <verb-and-pl+>));
+prepares.v presses.v:
+ ((<verb-s> & (<vc-prepare>)) or
+ (<verb-and-sp-i-> & (([<vc-prepare>]) or ())) or
+ ((<vc-prepare>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+prepared.v-d pressed.v-d:
+ ((<verb-sp,pp> & (<vc-prepare>)) or
+ (<verb-and-sp-i-> & (([<vc-prepare>]) or ())) or
+ ((<vc-prepare>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or
+({@E-} & A+) or <verb-phrase-opener>;
+preparing.g pressing.g: (<vc-prepare> & <verb-ge>) or <verb-ge-d>;
+preparing.v pressing.v: <verb-pg> & <vc-prepare>;
+
+<vc-require>:
+ ((O+ or B-) & {@MV+} & {TOo+}) or
+ ({@MV+} & (TH+ or Ce+ or TS+ or (SI*j+ & I*j+))) or
+ Zs- or
+ ([[@MV+ & O*n+]]);
+
+require.v:
+ ((<verb-pl,i> & (<vc-require>)) or
+ (<verb-and-pl-> & ([(<vc-require>)] or ())) or
+ ((<vc-require>) & <verb-and-pl+>));
+requires.v:
+ ((<verb-s> & (<vc-require>)) or
+ (<verb-and-sp-i-> & (([<vc-require>]) or ())) or
+ ((<vc-require>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+required.v-d:
+ ((<verb-sp,pp> & (<vc-require>)) or
+ (<verb-and-sp-i-> & (([<vc-require>]) or ())) or
+ ((<vc-require>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+(<verb-pv> & {TO+ or TSi+}) or ({@E-} & A+) or ({@MV+} & {TO+} & <verb-phrase-opener>);
+requiring.g: (<vc-require> & <verb-ge>) or <verb-ge-d>;
+requiring.v: <verb-pg> & <vc-require>;
+
+<vc-command>:
+ ({@MV+} & (TH+ or Zs- or TS+ or Ce+)) or
+ ((O+ or B-) & {@MV+} & {TOo+}) or
+ ([[@MV+ & {O*n+}]]);
+
+command.v order.v urge.v:
+ ((<verb-pl,i> & (<vc-command>)) or
+ (<verb-and-pl-> & ([(<vc-command>)] or ())) or
+ ((<vc-command>) & <verb-and-pl+>));
+commands.v orders.v urges.v:
+ ((<verb-s> & (<vc-command>)) or
+ (<verb-and-sp-i-> & (([<vc-command>]) or ())) or
+ ((<vc-command>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+<vc-commanded>:
+ ((<verb-sp,pp> & (<vc-command>)) or
+ (<verb-and-sp-i-> & (([<vc-command>]) or ())) or
+ ((<vc-command>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & {TO+ or TH+ or TS+})
+or ({@MV+} & {TH+ or TO+ or TS+} & <verb-phrase-opener>);
+commanded.v-d urged.v-d: <vc-commanded>;
+% An "ordered list"
+ordered.v: <vc-commanded> or ({@E-} & A+);
+commanding.g ordering.g urging.g: (<vc-command> & <verb-ge>) or <verb-ge-d>;
+commanding.v ordering.v urging.v: <verb-pg> & <vc-command>;
+
+% ditransitive
+<vc-consider>:
+ ({@MV+} & (TH+ or Pg+)) or
+ ((O+ or OX+ or B-) & {@MV+} & {TOo+ or Pa+}) or
+ (((O+ & (B- or ({[[@MV+]]} & O*n+))) or ([[@MV+ & O*n+]])) & {@MV+});
+consider.v:
+ ((<verb-pl,i> & (<vc-consider>)) or
+ (<verb-and-pl-> & ([(<vc-consider>)] or ())) or
+ ((<vc-consider>) & <verb-and-pl+>));
+considers.v:
+ ((<verb-s> & (<vc-consider>)) or
+ (<verb-and-sp-i-> & (([<vc-consider>]) or ())) or
+ ((<vc-consider>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+considered.v-d:
+ ((<verb-sp,pp> & (<vc-consider>)) or
+ (<verb-and-sp-i-> & (([<vc-consider>]) or ())) or
+ ((<vc-consider>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv-b> &
+(({@MV+} & (TOf+ or Pa+)) or ({O+ or B- or [[@MV+ & O*n+]]} & {@MV+})))
+or ((({@MV+} & (TOf+ or Pa+)) or ({O+ or [[@MV+ & O*n+]]}))
+& <verb-phrase-opener>);
+considering.g: (<vc-consider> & <verb-ge>) or <verb-ge-d>;
+considering.v: <verb-pg> & <vc-consider>;
+
+<vc-perceive>:
+ ({@MV+} & (TH+ or Ce+)) or
+ ((O+ or OX+ or B-) & {@MV+} & {TOo+}) or
+ ([[@MV+ & O*n+]]);
+
+perceive.v:
+ ((<verb-pl,i> & (<vc-perceive>)) or
+ (<verb-and-pl-> & ([(<vc-perceive>)] or ())) or
+ ((<vc-perceive>) & <verb-and-pl+>));
+perceives.v:
+ ((<verb-s> & (<vc-perceive>)) or
+ (<verb-and-sp-i-> & (([<vc-perceive>]) or ())) or
+ ((<vc-perceive>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+perceived.v-d:
+ ((<verb-sp,pp> & (<vc-perceive>)) or
+ (<verb-and-sp-i-> & (([<vc-perceive>]) or ())) or
+ ((<vc-perceive>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & {TO+}) or
+({@E-} & A+) or ({@MV+} & {TO+} & <verb-phrase-opener>);
+perceiving.g: (<vc-perceive> & <verb-ge>) or <verb-ge-d>;
+perceiving.v: <verb-pg> & <vc-perceive>;
+
+<vc-report>:
+ ({@MV+} & {TH+ or Z- or Ce+}) or
+ ((O+ or B-) & {@MV+} & {TOo+}) or
+ ([[@MV+ & O*n+]]);
+
+report.v:
+ ((<verb-pl,i> & (<vc-report>)) or
+ (<verb-and-pl-> & ([(<vc-report>)] or ())) or
+ ((<vc-report>) & <verb-and-pl+>));
+reports.v:
+ ((<verb-s> & (<vc-report>)) or
+ (<verb-and-sp-i-> & (([<vc-report>]) or ())) or
+ ((<vc-report>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+reported.v-d:
+ ((<verb-sp,pp> & (<vc-report>)) or
+ (<verb-and-sp-i-> & (([<vc-report>]) or ())) or
+ ((<vc-report>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-s-pv> & {TOf+ or Z-}) or
+({@E-} & A+) or ({@MV+} & {TO+} & <verb-phrase-opener>);
+reporting.g: (<vc-report> & <verb-ge>) or <verb-ge-d>;
+reporting.v: <verb-pg> & <vc-report>;
+
+<vc-caution>:
+ ((O+ or B-) & {@MV+} & {TH+ or Ce+ or TOo+}) or
+ ({@MV+} & {TH+ or Zs-}) or
+ ([[@MV+ & O*n+]]);
+
+caution.v:
+ ((<verb-pl,i> & (<vc-caution>)) or
+ (<verb-and-pl-> & ([(<vc-caution>)] or ())) or
+ ((<vc-caution>) & <verb-and-pl+>));
+cautions.v:
+ ((<verb-s> & (<vc-caution>)) or
+ (<verb-and-sp-i-> & (([<vc-caution>]) or ())) or
+ ((<vc-caution>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+cautioned.v-d:
+ ((<verb-sp,pp> & (<vc-caution>)) or
+ (<verb-and-sp-i-> & (([<vc-caution>]) or ())) or
+ ((<vc-caution>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> &
+((O+ or B-) & {@MV+} &
+{TH+ or Ce+ or Zs- or TO+})) or ({@MV+} & {TH+ or Ce+ or TO+} & <verb-phrase-opener>);
+cautioning.g: (<vc-caution> & <verb-ge>) or <verb-ge-d>;
+cautioning.v: <verb-pg> & <vc-caution>;
+
+<vc-warn>:
+ ((O+ or B-) & {@MV+} & {TH+ or Ce+ or TOo+ or (OF+ & {@MV+})}) or
+ ({@MV+} & {TH+ or Zs- or (OF+ & {@MV+})}) or
+ ([[@MV+ & O*n+]]);
+
+warn.v advise.v:
+ ((<verb-pl,i> & (<vc-warn>)) or
+ (<verb-and-pl-> & ([(<vc-warn>)] or ())) or
+ ((<vc-warn>) & <verb-and-pl+>));
+warns.v advises.v:
+ ((<verb-s> & (<vc-warn>)) or
+ (<verb-and-sp-i-> & (([<vc-warn>]) or ())) or
+ ((<vc-warn>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+warned.v-d advised.v-d:
+
+ ((<verb-sp,pp> & (<vc-warn>)) or
+ (<verb-and-sp-i-> & (([<vc-warn>]) or ())) or
+ ((<vc-warn>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {TH+ or Ce+ or Zs- or TO+ or (OF+ & {@MV+})}) or
+ ({@MV+} & {TH+ or Ce+ or TO+ or OF+} & <verb-phrase-opener>);
+warning.g advising.g: (<vc-warn> & <verb-ge>) or <verb-ge-d>;
+warning.v advising.v: <verb-pg> & <vc-warn>;
+
+<vc-hear>:
+ ((B- or O+) & {@MV+} & {I*j+ or Pg+}) or
+ ({@MV+} & {TH+ or Zs- or Ce+ or (OF+ & {@MV+})}) or
+ ([[@MV+ & O*n+]]);
+
+hear.v:
+ ((<verb-pl,i> & (<vc-hear>)) or
+ (<verb-and-pl-> & ([(<vc-hear>)] or ())) or
+ ((<vc-hear>) & <verb-and-pl+>));
+hears.v:
+ ((<verb-s> & (<vc-hear>)) or
+ (<verb-and-sp-i-> & (([<vc-hear>]) or ())) or
+ ((<vc-hear>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+heard.v-d:
+
+ ((<verb-sp,pp> & (<vc-hear>)) or
+ (<verb-and-sp-i-> & (([<vc-hear>]) or ())) or
+ ((<vc-hear>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {Pg+}) or
+ ({@MV+} & {Pg+} & <verb-phrase-opener>);
+
+hearing.g: (<vc-hear> & <verb-ge>) or <verb-ge-d>;
+hearing.v: <verb-pg> & <vc-hear>;
+
+% Xc+: poor comma choice: "The man that you saw laugh, jumped off a cliff".
+<vc-see>:
+ ((B- or O+) & {@MV+} & {I*j+ or Pg+ or AZ+ or Pv+})
+ or (B- & {@MV+} & [I*j+ & Xc+])
+ or ({@MV+} & {TH+ or Zs- or QI+ or Ce+})
+ or ([[@MV+ & O*n+]]);
+
+see.v:
+ ((<verb-pl,i> & (<vc-see>)) or
+ (<verb-and-pl-> & ([(<vc-see>)] or ())) or
+ ((<vc-see>) & <verb-and-pl+>));
+sees.v:
+ ((<verb-s> & (<vc-see>)) or
+ (<verb-and-sp-i-> & (([<vc-see>]) or ())) or
+ ((<vc-see>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+saw.v-d:
+ ((<verb-sp> & (<vc-see>)) or
+ (<verb-and-sp-i-> & (([<vc-see>]) or ())) or
+ ((<vc-see>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+seen.v:
+
+ ((<verb-pp> & (<vc-see>)) or
+ (<verb-and-had-> & (([<vc-see>]) or ())) or
+ ((<vc-see>) & <verb-and-had+>)) or
+ (<verb-pv> & {Pg+ or AZ+}) or
+ ({@MV+} & {Pg+ or AZ+} & <verb-phrase-opener>);
+seeing.g: (<vc-see> & <verb-ge>) or <verb-ge-d>;
+seeing.v: <verb-pg> & <vc-see>;
+
+% ditranstive verbs -- taking direct and indirect objects
+<vc-owe>:
+ (<vc-opt-ditrans> or
+ (B- & {O+}) or
+ ([[@MV+ & O*n+]])) & {@MV+};
+
+owe.v deliver.v accord.v award.v term.v grant.v begrudge.v assign.v rename.v repay.v
+dub.v entitle.v fine.v:
+
+ ((<verb-pl,i> & (<vc-owe>)) or
+ (<verb-and-pl-> & ([(<vc-owe>)] or ())) or
+ ((<vc-owe>) & <verb-and-pl+>));
+
+owes.v delivers.v accords.v awards.v terms.v grants.v begrudges.v assigns.v renames.v
+repays.v dubs.v entitles.v fines.v:
+
+ ((<verb-s> & (<vc-owe>)) or
+ (<verb-and-sp-i-> & (([<vc-owe>]) or ())) or
+ ((<vc-owe>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+owed.v delivered.v accorded.v awarded.v
+granted.v-d begrudged.v-d assigned.v-d repaid.v-d fined.v-d:
+
+ ((<verb-sp,pp> & (<vc-owe>)) or
+ (<verb-and-sp-i-> & (([<vc-owe>]) or ())) or
+ ((<vc-owe>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or B- or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+owing.v delivering.v according.v awarding.v terming.v granting.v
+begrudging.v assigning.v renaming.v repaying.v dubbing.v entitling.v fining.v:
+<verb-pg> & <vc-owe>;
+owing.g delivering.g according.g awarding.g terming.g granting.g begrudging.g
+assigning.g renaming.g repaying.g dubbing.g entitling.g fining.g:
+(<vc-owe> & <verb-ge>) or <verb-ge-d>;
+
+% extended linking requirements based on the above
+termed.v-d dubbed.v-d entitled.v-d renamed.v-d:
+
+ ((<verb-sp,pp> & (<vc-owe>)) or
+ (<verb-and-sp-i-> & (([<vc-owe>]) or ())) or
+ ((<vc-owe>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or B- or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+
+% ditransitive
+% 'Give' requires both direct *and* indirect object: X gave Y a Z.
+% 'sent', 'poured': optional indirect object.
+% XXX Some of these verbs don't belong here ...
+% (): "I already gave", "I already gave at the office"
+% K+: "She gave in to him"
+<vc-give>:
+ (()
+ or K+
+ or (B- & {O+ or K+})
+ or <vc-opt-ditrans-costly>
+ or (O+ & K+)
+ or (K+ & {[[@MV+]]} & O*n+)
+ or ([[@MV+ & O*n+]])
+ ) & {@MV+};
+
+give.v send.v bring.v lend.v issue.v hand.v pour.v:
+
+ ((<verb-pl,i> & (<vc-give>)) or
+ (<verb-and-pl-> & ([(<vc-give>)] or ())) or
+ ((<vc-give>) & <verb-and-pl+>));
+
+gives.v sends.v brings.v lends.v
+issues.v hands.v pours.v:
+
+ ((<verb-s> & (<vc-give>)) or
+ (<verb-and-sp-i-> & (([<vc-give>]) or ())) or
+ ((<vc-give>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+sent.v-d brought.v-d lent.v-d handed.v-d:
+
+ ((<verb-sp,pp> & (<vc-give>)) or
+ (<verb-and-sp-i-> & (([<vc-give>]) or ())) or
+ ((<vc-give>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or B- or K+ or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or K+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+
+issued.v-d poured.v-d:
+
+ ((<verb-sp,pp> & (<vc-give>)) or
+ (<verb-and-sp-i-> & (([<vc-give>]) or ())) or
+ ((<vc-give>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ ({@E-} & A+) or
+ (<verb-pv-b> & {O+ or B- or K+ or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or K+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+
+gave.v-d:
+ ((<verb-sp> & (<vc-give>)) or
+ (<verb-and-sp-i-> & (([<vc-give>]) or ())) or
+ ((<vc-give>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+given.v:
+
+ ((<verb-pp> & (<vc-give>)) or
+ (<verb-and-had-> & (([<vc-give>]) or ())) or
+ ((<vc-give>) & <verb-and-had+>)) or
+ ({@E-} & A+) or
+ (<verb-pv-b> & {O+ or B- or K+ or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or K+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+
+giving.g sending.g bringing.g
+lending.g issuing.g handing.g pouring.g:
+ (<vc-give> & <verb-ge>) or <verb-ge-d>;
+
+giving.v sending.v bringing.v
+lending.v issuing.v handing.v pouring.v:
+ <verb-pg> & <vc-give>;
+
+% ditransitive, but everything is optional. For example:
+% If you bought after the crash, you were smart
+% If you telegraphed after Sunday, I'd already left.
+<vc-pass>:
+ {(B- & {O+ or K+}) or
+ <vc-opt-ditrans> or
+ (O+ & K+) or
+ (K+ & {{[[@MV+]]} & O*n+}) or
+ ([[@MV+ & O*n+]])} & {@MV+};
+
+pass.v buy.v pay.v sell.v deal.v telegraph.v wire.v:
+ ((<verb-pl,i> & (<vc-pass>)) or
+ (<verb-and-pl-> & ([(<vc-pass>)] or ())) or
+ ((<vc-pass>) & <verb-and-pl+>));
+
+passes.v buys.v pays.v sells.v deals.v telegraphs.v wires.v:
+ ((<verb-s> & (<vc-pass>)) or
+ (<verb-and-sp-i-> & (([<vc-pass>]) or ())) or
+ ((<vc-pass>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+passed.v-d bought.v-d paid.v-d payed.v-d sold.v-d dealt.v-d
+telegraphed.v-d wired.v-d:
+
+ ((<verb-sp,pp> & (<vc-pass>)) or
+ (<verb-and-sp-i-> & (([<vc-pass>]) or ())) or
+ ((<vc-pass>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or B- or K+ or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or K+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+
+passing.g buying.g paying.g selling.g dealing.g telegraphing.g wiring.g:
+ (<vc-pass> & <verb-ge>) or <verb-ge-d>;
+
+passing.v buying.v paying.v selling.v dealing.v telegraphing.v wiring.v:
+ <verb-pg> & <vc-pass>;
+
+% ditransitive
+<vc-call>:
+ {(B- & {O+ or Pa+ or K+}) or
+ <vc-opt-ditrans> or
+ (O+ & (Pa+ or K+)) or
+ (K+ & {{[[@MV+]]} & O*n+}) or
+ ([[@MV+ & O*n+]])} & {@MV+};
+
+% This is not quite right:
+% "she called him" but "*she shouted him"
+call.v shout.v:
+ ((<verb-pl,i> & (<vc-call>)) or
+ (<verb-and-pl-> & ([(<vc-call>)] or ())) or
+ ((<vc-call>) & <verb-and-pl+>));
+calls.v shouts.v:
+ ((<verb-s> & (<vc-call>)) or
+ (<verb-and-sp-i-> & (([<vc-call>]) or ())) or
+ ((<vc-call>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+called.v-d shouted.v-d:
+
+ ((<verb-sp,pp> & (<vc-call>)) or
+ (<verb-and-sp-i-> & (([<vc-call>]) or ())) or
+ ((<vc-call>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or (<verb-pv-b> & {O+ or B- or K+ or Pa+ or [[@MV+ & O*n+]]} & {@MV+})
+ or ({O+ or K+ or Pa+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+
+calling.g shouting.g: (<vc-call> & <verb-ge>) or <verb-ge-d>;
+calling.v shouting.v: <verb-pg> & <vc-call>;
+
+% Minimal ditransitive extenstion of words.v.6
+% ditransitive: "Please paint it lime green"
+<vc-color>:
+ <vc-fill> or
+ <vc-ditrans>;
+
+color.v colour.v paint.v:
+ ((<verb-pl,i> & (<vc-color>)) or
+ (<verb-and-pl-> & ([(<vc-color>)] or ())) or
+ ((<vc-color>) & <verb-and-pl+>));
+colors.v colours.v paints.v:
+ ((<verb-s> & (<vc-color>)) or
+ (<verb-and-sp-i-> & (([<vc-color>]) or ())) or
+ ((<vc-color>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+colored.v-d coloured.v-d painted.v-d:
+
+ ((<verb-sp,pp> & (<vc-color>)) or
+ (<verb-and-sp-i-> & (([<vc-color>]) or ())) or
+ ((<vc-color>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or K+} & {@MV+}) or
+ ({K+} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+coloring.v colouring.v painting.v:
+ (<verb-pg> & <vc-color>) or
+ <verb-and-pg-> or <verb-and-pg+>;
+coloring.g colouring.g painting.g:
+ (<vc-color> & <verb-ge>) or <verb-ge-d>;
+
+% ditransitive
+% Writing -- direct and indirect object are optional:
+% 'he wrote' 'he wrote a letter' 'he wrote me a letter' 'he wrote me'
+% 'he wrote me that blah happend' but '*he drew me that blah happened'
+%
+% <vc-opt-ditrans> & TH+: "he wrote her that he loved her"
+<vc-write>:
+ ({(B- & {O+ or K+})
+ or (<vc-opt-ditrans> & {TH+})
+ or (O+ & K+)
+ or (K+ & {{[[@MV+]]} & O*n+})
+ or ([[@MV+ & O*n+]])
+ } & {@MV+})
+ or ({@MV+} & (TH+ or Ce+));
+
+write.v charge.v draw.v:
+ ((<verb-pl,i> & (<vc-write>)) or
+ (<verb-and-pl-> & ([(<vc-write>)] or ())) or
+ ((<vc-write>) & <verb-and-pl+>));
+writes.v reads.v charges.v draws.v:
+ ((<verb-s> & (<vc-write>)) or
+ (<verb-and-sp-i-> & (([<vc-write>]) or ())) or
+ ((<vc-write>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+wrote.v-d drew.v-d:
+ ((<verb-sp> & (<vc-write>)) or
+ (<verb-and-sp-i-> & (([<vc-write>]) or ())) or
+ ((<vc-write>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+
+read.v-d:
+
+ ((<verb-sp,pp> & (<vc-write>)) or
+ (<verb-and-sp-i-> & (([<vc-write>]) or ())) or
+ ((<vc-write>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-write>) or
+ (<verb-pv-b> & {O+ or B- or K+ or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or K+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+charged.v-d:
+
+ ((<verb-sp,pp> & (<vc-write>)) or
+ (<verb-and-sp-i-> & (([<vc-write>]) or ())) or
+ ((<vc-write>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or B- or K+ or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or K+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>);
+written.v drawn.v:
+
+ ((<verb-pp> & (<vc-write>)) or
+ (<verb-and-had-> & (([<vc-write>]) or ())) or
+ ((<vc-write>) & <verb-and-had+>)) or
+ (<verb-pv-b> & {O+ or B- or K+ or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or K+ or [[@MV+ & O*n+]]} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+
+writing.v reading.v charging.v drawing.v:
+ <verb-pg> & <vc-write>;
+writing.g reading.g charging.g drawing.g:
+ (<vc-write> & <verb-ge>) or <verb-ge-d>;
+
+% ditransitive
+% Singing: if there's an indirect object, then a direct object is
+% mandatory: '*she sang me'
+% but then: 'she sang soprano'
+<vc-sing>:
+ ({(B- & {O+ or K+}) or
+ <vc-opt-ditrans> or
+ (O+ & K+) or
+ (K+ & {{[[@MV+]]} & O*n+}) or
+ ([[@MV+ & O*n+]])} & {@MV+});
+sing.v dance.v cry.v:
+ ((<verb-pl,i> & (<vc-sing>)) or
+ (<verb-and-pl-> & ([(<vc-sing>)] or ())) or
+ ((<vc-sing>) & <verb-and-pl+>));
+sings.v dances.v cries.v:
+ ((<verb-s> & (<vc-sing>)) or
+ (<verb-and-sp-i-> & (([<vc-sing>]) or ())) or
+ ((<vc-sing>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+sang.v-d danced.v-d cried.v-d:
+ ((<verb-sp> & (<vc-sing>)) or
+ (<verb-and-sp-i-> & (([<vc-sing>]) or ())) or
+ ((<vc-sing>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+sung.v-d:
+ ((<verb-sp,pp> & (<vc-sing>)) or
+ (<verb-and-sp-i-> & (([<vc-sing>]) or ())) or
+ ((<vc-sing>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+singing.g dancing.g crying.g: (<vc-sing> & <verb-ge>) or <verb-ge-d>;
+singing.v dancing.v crying.v: <verb-pg> & <vc-sing>;
+
+% <vc-shout>: <vc-sing>;
+% shout.v: VERB_PLI(<vc-shout>);
+% shouts.v: VERB_S_T(<vc-shout>);
+% shouted.v: VERB_SP_T(<vc-shout>);
+% shouting.g: (<vc-shout> & <verb-ge>) or <verb-ge-d>;
+% shouting.v: <verb-pg> & <vc-shout>;
+
+% ditransitive
+<vc-allow>:
+ ((<vc-ditrans> or
+ ([[@MV+]] & O*n+)) & {@MV+}) or
+ ((O+ or B-) & {@MV+} & {B- or TOo+});
+
+allow.v:
+ ((<verb-pl,i> & (<vc-allow>)) or
+ (<verb-and-pl-> & ([(<vc-allow>)] or ())) or
+ ((<vc-allow>) & <verb-and-pl+>));
+allows.v:
+ ((<verb-s> & (<vc-allow>)) or
+ (<verb-and-sp-i-> & (([<vc-allow>]) or ())) or
+ ((<vc-allow>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+allowed.v-d:
+ ((<verb-sp,pp> & (<vc-allow>)) or
+ (<verb-and-sp-i-> & (([<vc-allow>]) or ())) or
+ ((<vc-allow>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+(<verb-pv-b> & (({O+ or B- or [[@MV+ & O*n+]]} & {@MV+}) or ({@MV+} & TO+)))
+or ({O+ or [[@MV+ & O*n+]] or ({@MV+} & TO+)} & <verb-phrase-opener>);
+allowing.g: (<vc-allow> & <verb-ge>) or <verb-ge-d>;
+allowing.v: <verb-pg> & <vc-allow>;
+
+% ditransitive
+<vc-promise>:
+ ({O+ or B-} & {@MV+} & {B- or TO+ or Ce+ or TH+ or RSe+ or Zs-}) or
+ ((<vc-ditrans> or
+ ([[@MV+ & O*n+]])) & {@MV+});
+
+promise.v:
+ ((<verb-pl,i> & (<vc-promise>)) or
+ (<verb-and-pl-> & ([(<vc-promise>)] or ())) or
+ ((<vc-promise>) & <verb-and-pl+>));
+promises.v:
+ ((<verb-s> & (<vc-promise>)) or
+ (<verb-and-sp-i-> & (([<vc-promise>]) or ())) or
+ ((<vc-promise>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+promised.v-d:
+ ((<verb-sp,pp> & (<vc-promise>)) or
+ (<verb-and-sp-i-> & (([<vc-promise>]) or ())) or
+ ((<vc-promise>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv-b> &
+(({O+ or B- or [[@MV+ & O*n+]]} & {@MV+}) or
+({@MV+} & (TO+ or Ce+ or TH+ or RSe+ or Zs-)))) or ({@E-} & A+) or
+({O+ or [[@MV+ & O*n+]] or ({{@MV+} & (TO+ or Ce+ or TH+)})} & <verb-phrase-opener>);
+promising.g: (<vc-promise> & <verb-ge>) or <verb-ge-d>;
+promising.v: <verb-pg> & <vc-promise>;
+
+% ditransitive
+<vc-show>:
+ ({O+ or B-} & ({@MV+} & (QI+ or Ce+ or TH+ or RSe+ or Zs- or B-))) or
+ ((
+ <vc-opt-ditrans> or
+ (O+ & K+) or
+ (K+ & (B- or ({[[@MV+]]} & O*n+))) or
+ ([[@MV+ & O*n+]]) or
+ [[()]]) & {@MV+});
+
+show.v:
+ ((<verb-pl,i> & (<vc-show>)) or
+ (<verb-and-pl-> & ([(<vc-show>)] or ())) or
+ ((<vc-show>) & <verb-and-pl+>));
+shows.v:
+ ((<verb-s> & (<vc-show>)) or
+ (<verb-and-sp-i-> & (([<vc-show>]) or ())) or
+ ((<vc-show>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+showed.v-d:
+ ((<verb-sp> & (<vc-show>)) or
+ (<verb-and-sp-i-> & (([<vc-show>]) or ())) or
+ ((<vc-show>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+shown.v:
+
+ ((<verb-pp> & (<vc-show>)) or
+ (<verb-and-had-> & (([<vc-show>]) or ())) or
+ ((<vc-show>) & <verb-and-had+>)) or
+ (<verb-s-pv-b> &
+ (({O+ or K+ or B- or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({@MV+} & (QI+ or Ce+ or TH+ or RSe+ or Zs-)))) or
+ ({O+ or K+ or [[@MV+ & O*n+]] or ({@MV+} & (QI+ or Ce+ or TH+))} & <verb-phrase-opener>);
+showing.g: (<vc-show> & <verb-ge>) or <verb-ge-d>;
+showing.v: <verb-pg> & <vc-show>;
+
+% ditransitive
+<vc-teach>:
+ ((O+ or B-) & ({@MV+} & (QI+ or Ce+ or TH+ or RSe+ or Zs- or B- or TOo+)))
+ or ({
+ <vc-opt-ditrans>
+ or (B- & {[[@MV+]]} & O*n+)
+ or ([[@MV+ & O*n+]])} & {@MV+});
+
+teach.v:
+ ((<verb-pl,i> & (<vc-teach>)) or
+ (<verb-and-pl-> & ([(<vc-teach>)] or ())) or
+ ((<vc-teach>) & <verb-and-pl+>));
+teaches.v:
+ ((<verb-s> & (<vc-teach>)) or
+ (<verb-and-sp-i-> & (([<vc-teach>]) or ())) or
+ ((<vc-teach>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+taught.v-d:
+
+ ((<verb-sp,pp> & (<vc-teach>)) or
+ (<verb-and-sp-i-> & (([<vc-teach>]) or ())) or
+ ((<vc-teach>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> &
+ (({O+ or B- or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({@MV+} & (QI+ or Ce+ or TH+ or RSe+ or Zs- or TO+)))) or
+ ({O+ or [[@MV+ & O*n+]] or ({@MV+} & (QI+ or Ce+ or TH+))} & <verb-phrase-opener>);
+teaching.g: (<vc-teach> & <verb-ge>) or <verb-ge-d>;
+teaching.v: <verb-pg> & <vc-teach>;
+
+<vc-compel>:
+ ((O+ or B-) & {@MV+} & TOo+);
+
+compel.v:
+ ((<verb-pl,i> & (<vc-compel>)) or
+ (<verb-and-pl-> & ([(<vc-compel>)] or ())) or
+ ((<vc-compel>) & <verb-and-pl+>));
+compels.v:
+ ((<verb-s> & (<vc-compel>)) or
+ (<verb-and-sp-i-> & (([<vc-compel>]) or ())) or
+ ((<vc-compel>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+compelled.v-d:
+ ((<verb-sp,pp> & (<vc-compel>)) or
+ (<verb-and-sp-i-> & (([<vc-compel>]) or ())) or
+ ((<vc-compel>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & TO+)
+or ({@MV+} & TO+ & <verb-phrase-opener>);
+compelling.v: <verb-pg> & <vc-compel>;
+compelling.g: (<vc-compel> & <verb-ge>) or <verb-ge-d>;
+
+<vc-force>:
+ (((O+ or B-) & (({@MV+} & TOo+) or K+ or [()])) or
+ (K+ & O*n+) or
+ ([[{K+} & @MV+ & O*n+]])) & {@MV+};
+
+force.v:
+ ((<verb-pl,i> & (<vc-force>)) or
+ (<verb-and-pl-> & ([(<vc-force>)] or ())) or
+ ((<vc-force>) & <verb-and-pl+>));
+forces.v:
+ ((<verb-s> & (<vc-force>)) or
+ (<verb-and-sp-i-> & (([<vc-force>]) or ())) or
+ ((<vc-force>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+forced.v-d willed.v-d:
+
+ ((<verb-sp,pp> & (<vc-force>)) or
+ (<verb-and-sp-i-> & (([<vc-force>]) or ())) or
+ ((<vc-force>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & ((K+ & {@MV+}) or
+ ({@MV+} & TO+))) or
+ ((K+ or ({@MV+} & TO+)) & <verb-phrase-opener>) or
+ ({@E-} & A+);
+forcing.g: (<vc-force> & <verb-ge>) or <verb-ge-d>;
+forcing.v: <verb-pg> & <vc-force>;
+
+% -----------------------------------------
+
+<vc-design>:
+ ((O+ or B-) & {@MV+} & {TOo+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+design.v permit.v authorize.v use.v cause.v enable.v
+pressure.v train.v sentence.v prompt.v spur.v disincline.v
+invite.v reelect.v encourage.v draft.v hire.v entice.v inspire.v aid.v
+forbid.v employ.v educate.v tempt.v condemn.v commission.v counsel.v induce.v instruct.v
+license.v incite.v nominate.v destine.v provoke.v challenge.v exhort.v
+implore.v motivate.v impel.v:
+
+ ((<verb-pl,i> & (<vc-design>)) or
+ (<verb-and-pl-> & ([(<vc-design>)] or ())) or
+ ((<vc-design>) & <verb-and-pl+>));
+designs.v permits.v pressures.v trains.v sentences.v causes.v enables.v
+authorizes.v uses.v prompts.v spurs.v disinclines.v
+invites.v reelects.v encourages.v drafts.v hires.v entices.v inspires.v aids.v
+forbids.v employs.v educates.v tempts.v condemns.v commissions.v counsels.v induces.v
+instructs.v licenses.v incites.v nominates.v destines.v provokes.v
+challenges.v exhorts.v implores.v motivates.v impels.v:
+
+ ((<verb-s> & (<vc-design>)) or
+ (<verb-and-sp-i-> & (([<vc-design>]) or ())) or
+ ((<vc-design>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+designed.v-d permitted.v-d pressured.v-d trained.v-d
+sentenced.v-d caused.v-d enabled.v-d
+authorized.v-d prompted.v-d spurred.v-d invited.v-d disinclined.v-d
+reelected.v-d encouraged.v-d drafted.v-d hired.v-d
+enticed.v-d inspired.v-d aided.v-d employed.v-d
+educated.v-d tempted.v-d condemned.v-d commissioned.v-d
+counseled.v-d induced.v-d instructed.v-d
+licensed.v-d incited.v-d nominated.v-d destined.v-d
+provoked.v-d challenged.v-d exhorted.v-d
+implored.v-d motivated.v-d impelled.v-d:
+
+ ((<verb-sp,pp> & (<vc-design>)) or
+ (<verb-and-sp-i-> & (([<vc-design>]) or ())) or
+ ((<vc-design>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {TO+}) or
+ ({@E-} & A+) or
+ ({{@MV+} & TO+} & <verb-phrase-opener>);
+forbade.v-d:
+ ((<verb-sp> & (<vc-design>)) or
+ (<verb-and-sp-i-> & (([<vc-design>]) or ())) or
+ ((<vc-design>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+forbidden.v:
+
+ ((<verb-pp> & (<vc-design>)) or
+ (<verb-and-had-> & (([<vc-design>]) or ())) or
+ ((<vc-design>) & <verb-and-had+>)) or
+ (<verb-pv> & {TO+}) or
+ ({@E-} & A+) or
+ ({{@MV+} & TO+} & <verb-phrase-opener>);
+designing.g permitting.g pressuring.g causing.g enabling.g
+training.g sentencing.g authorizing.g prompting.g
+spurring.g inviting.g disinclining.g
+reelecting.g encouraging.g drafting.g hiring.g
+enticing.g inspiring.g aiding.g employing.g educating.g tempting.g
+condemning.g commissioning.g counseling.g inducing.g instructing.g
+licensing.g inciting.g nominating.g destining.g provoking.g challenging.g
+exhorting.g imploring.g motivating.g impelling.g:
+(<vc-design> & <verb-ge>) or <verb-ge-d>;
+designing.v permitting.v pressuring.v causing.v enabling.v
+training.v sentencing.v authorizing.v using.v prompting.v disinclining.v
+spurring.v inviting.v reelecting.v encouraging.v drafting.v hiring.v
+enticing.v inspiring.v aiding.v employing.v educating.v tempting.v
+condemning.v commissioning.v counseling.v inducing.v instructing.v
+licensing.v inciting.v nominating.v destining.v provoking.v challenging.v
+exhorting.v imploring.v motivating.v impelling.v:
+<verb-pg> & <vc-design>;
+used.v-d:
+
+ ((<verb-sp,pp> & (<vc-design>)) or
+ (<verb-and-sp-i-> & (([<vc-design>]) or ())) or
+ ((<vc-design>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {TOo+}) or
+ (<verb-sp> & TO+) or
+ ({@MV+} & {TOo+} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+using.g: (<vc-design> & (<verb-ge> or MVs-)) or <verb-ge-d>;
+
+% --------------------------------------------------
+
+<vc-elect>:
+ ((O+ or B-) & (({@MV+} & {TOo+}) or
+ ({[[@MV+]]} & (O*n+ or TI+)))) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+elect.v appoint.v:
+ ((<verb-pl,i> & (<vc-elect>)) or
+ (<verb-and-pl-> & ([(<vc-elect>)] or ())) or
+ ((<vc-elect>) & <verb-and-pl+>));
+elects.v appoints.v:
+ ((<verb-s> & (<vc-elect>)) or
+ (<verb-and-sp-i-> & (([<vc-elect>]) or ())) or
+ ((<vc-elect>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+elected.v-d appointed.v-d:
+ ((<verb-sp,pp> & (<vc-elect>)) or
+ (<verb-and-sp-i-> & (([<vc-elect>]) or ())) or
+ ((<vc-elect>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv-b> & (({B- or
+(O+ or TI+ or [[@MV+ & (O*n+ or TI+)]])} & {@MV+}) or ({@MV+} & TO+)))
+or (({O+ or TI+ or [[@MV+ & (O*n+ or TI+)]]} or ({@MV+} & TO+)) & <verb-phrase-opener>)
+or ({@E-} & A+);
+electing.g appointing.g: (<vc-elect> & <verb-ge>) or <verb-ge-d>;
+electing.v appointing.v: <verb-pg> & <vc-elect>;
+
+% vc-name is a ditransitive extension of vc-trans (with an extra TI+)
+<vc-name>:
+ ( <vc-opt-ditrans> or
+ (O+ & {[[@MV+]]} & TI+) or
+ (B- & {O+ or TI+}) or
+ ([[@MV+ & O*n+]])) & {@MV+};
+
+name.v designate.v label.v:
+ ((<verb-pl,i> & (<vc-name>)) or
+ (<verb-and-pl-> & ([(<vc-name>)] or ())) or
+ ((<vc-name>) & <verb-and-pl+>));
+names.v designates.v labels.v:
+ ((<verb-s> & (<vc-elect>)) or
+ (<verb-and-sp-i-> & (([<vc-elect>]) or ())) or
+ ((<vc-elect>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+named.v-d designated.v-d labelled.v-d labeled.v-d:
+
+ ((<verb-sp,pp> & (<vc-name>)) or
+ (<verb-and-sp-i-> & (([<vc-name>]) or ())) or
+ ((<vc-name>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & ({B- or (O+ or TI+ or [[@MV+ & (O*n+ or TI+)]])}) & {@MV+}) or
+ ({O+ or TI+ or [[@MV+ & (O*n+ or TI+)]]} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+naming.g designating.g labelling.g labeling.g: (<vc-name> & <verb-ge>) or <verb-ge-d>;
+naming.v designating.v labelling.v labeling.v: <verb-pg> & <vc-name>;
+
+% optionally ditransitive, modeled on "name.v"
+<vc-tag>: <vc-name> or <vc-intrans>;
+tag.v:
+ ((<verb-pl,i> & (<vc-tag>)) or
+ (<verb-and-pl-> & ([(<vc-tag>)] or ())) or
+ ((<vc-tag>) & <verb-and-pl+>));
+tags.v:
+ ((<verb-s> & (<vc-tag>)) or
+ (<verb-and-sp-i-> & (([<vc-tag>]) or ())) or
+ ((<vc-tag>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+tagged.v-d:
+
+ ((<verb-sp,pp> & (<vc-tag>)) or
+ (<verb-and-sp-i-> & (([<vc-tag>]) or ())) or
+ ((<vc-tag>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ ((<verb-pv-b> & ({B- or (O+ or TI+ or [[@MV+ & (O*n+ or TI+)]])}) & {@MV+}) or <verb-pv>) or
+ ({O+ or TI+ or [[@MV+ & (O*n+ or TI+)]]} & <verb-phrase-opener>) or
+ ({@E-} & A+);
+tagging.g:
+ (<vc-tag> & <verb-ge>) or
+ ({@E-} & A+) or
+ <verb-ge-d>;
+tagging.v: <verb-pg> & <vc-tag>;
+
+<vc-program>:
+ {((O+ or B-) & {@MV+} & {TOo+}) or
+ @MV+ or
+ ([[@MV+ & O*n+ & {@MV+}]])};
+
+program.v oblige.v:
+ ((<verb-pl,i> & (<vc-program>)) or
+ (<verb-and-pl-> & ([(<vc-program>)] or ())) or
+ ((<vc-program>) & <verb-and-pl+>));
+programs.v obliges.v:
+ ((<verb-s> & (<vc-program>)) or
+ (<verb-and-sp-i-> & (([<vc-program>]) or ())) or
+ ((<vc-program>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+programed.v-d programmed.v-d obliged.v-d:
+
+ ((<verb-sp,pp> & (<vc-program>)) or
+ (<verb-and-sp-i-> & (([<vc-program>]) or ())) or
+ ((<vc-program>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {TO+}) or
+ ({@E-} & A+) or
+ ({{@MV+} & TO+} & <verb-phrase-opener>);
+programing.g programming.g obliging.g: (<vc-program> & <verb-ge>) or <verb-ge-d>;
+programing.v programming.v obliging.v: <verb-pg> & <vc-program>;
+
+<vc-convince>:
+ ((O+ or B-) & {@MV+} & {TOo+ or TH+ or Ce+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+convince.v persuade.v:
+ ((<verb-pl,i> & (<vc-convince>)) or
+ (<verb-and-pl-> & ([(<vc-convince>)] or ())) or
+ ((<vc-convince>) & <verb-and-pl+>));
+convinces.v persuades.v:
+ ((<verb-s> & (<vc-convince>)) or
+ (<verb-and-sp-i-> & (([<vc-convince>]) or ())) or
+ ((<vc-convince>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+convinced.v-d persuaded.v-d:
+
+ ((<verb-sp,pp> & (<vc-convince>)) or
+ (<verb-and-sp-i-> & (([<vc-convince>]) or ())) or
+ ((<vc-convince>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {TO+ or TH+ or Ce+}) or
+ ({{@MV+} & (TO+ or TH+ or Ce+)} & <verb-phrase-opener>);
+convincing.g persuading.g: (<vc-convince> & <verb-ge>) or <verb-ge-d>;
+convincing.v persuading.v: <verb-pg> & <vc-convince>;
+
+% K+ is for "tell him off"
+% bare MVp+ for "Today, we will tell about ..."
+% OF+ for "They have told of the soldiers' fear"
+% (QI+ & {MV+}): "I did not tell why until recently"
+
+<vc-tell>:
+ (((O+ & {O*n+ or K+}) or B-) & {@MV+} & {TH+ or Ce+ or RSe+ or Zs- or TOo+ or QI+ or BW-}) or
+ OF+ or
+ (QI+ & {MV+}) or
+ ([[@MV+ & {O*n+} & {@MV+}]]);
+
+tell.v:
+ ((<verb-pl,i> & (<vc-tell>)) or
+ (<verb-and-pl-> & ([(<vc-tell>)] or ())) or
+ ((<vc-tell>) & <verb-and-pl+>));
+tell.w: {@E-} & I- & {@MV+} & (QI+ or TH+ or Ce+ or RSe+ or Zs-);
+tells.v:
+ ((<verb-s> & (<vc-tell>)) or
+ (<verb-and-sp-i-> & (([<vc-tell>]) or ())) or
+ ((<vc-tell>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+told.v-d:
+ ((<verb-sp,pp> & (<vc-tell>)) or
+ (<verb-and-sp-i-> & (([<vc-tell>]) or ())) or
+ ((<vc-tell>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {TH+ or Ce+ or RSe+ or Zs- or TO+ or QI+ or BW-}) or
+ (<verb-pv-b> & O+ & {@MV+}) or
+ ({{@MV+} & (Ce+ or TO+ or QI+ or TH+)} & <verb-phrase-opener>);
+telling.g: (<vc-tell> & <verb-ge>) or <verb-ge-d>;
+telling.v: <verb-pg> & <vc-tell>;
+
+% (QI+ & {MV+}): "I did not ask why until recently"
+<vc-ask>:
+ ({(O+ & {O*n+}) or B-} & {@MV+} & {TS+ or TOo+ or (QI+ & {MV+}) or BW-}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+ask.v:
+ ((<verb-pl,i> & (<vc-ask>)) or
+ (<verb-and-pl-> & ([(<vc-ask>)] or ())) or
+ ((<vc-ask>) & <verb-and-pl+>));
+asks.v:
+ ((<verb-s> & (<vc-ask>)) or
+ (<verb-and-sp-i-> & (([<vc-ask>]) or ())) or
+ ((<vc-ask>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+asked.v-d:
+ ((<verb-sp,pp> & (<vc-ask>)) or
+ (<verb-and-sp-i-> & (([<vc-ask>]) or ())) or
+ ((<vc-ask>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {TO+ or QI+ or BW- or TH+ or TS+}) or
+ (<verb-pv-b> & O+ & {@MV+}) or
+ ({{@MV+} & (TO+ or QI+ or TH+ or TS+)} & <verb-phrase-opener>);
+asking.g: (<vc-ask> & <verb-ge>) or <verb-ge-d>;
+asking.v: <verb-pg> & <vc-ask>;
+
+<vc-help>:
+ ({O+ or B-} & {@MV+} & {TO+ or I+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+help.v:
+ ((<verb-pl,i> & (<vc-help>)) or
+ (<verb-and-pl-> & ([(<vc-help>)] or ())) or
+ ((<vc-help>) & <verb-and-pl+>));
+helps.v:
+ ((<verb-s> & (<vc-help>)) or
+ (<verb-and-sp-i-> & (([<vc-help>]) or ())) or
+ ((<vc-help>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+helped.v-d:
+ ((<verb-sp,pp> & (<vc-help>)) or
+ (<verb-and-sp-i-> & (([<vc-help>]) or ())) or
+ ((<vc-help>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & {TO+}) or
+({{@MV+} & TO+} & <verb-phrase-opener>);
+helping.g: (<vc-help> & <verb-ge>) or <verb-ge-d>;
+helping.v: <verb-pg> & <vc-help>;
+
+<vc-remind>:
+ ((O+ or B-) & {@MV+} & (TOo+ or TH+ or Ce+ or (OF+ & {@MV+}))) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+remind.v:
+ ((<verb-pl,i> & (<vc-remind>)) or
+ (<verb-and-pl-> & ([(<vc-remind>)] or ())) or
+ ((<vc-remind>) & <verb-and-pl+>));
+reminds.v:
+ ((<verb-s> & (<vc-remind>)) or
+ (<verb-and-sp-i-> & (([<vc-remind>]) or ())) or
+ ((<vc-remind>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+reminded.v-d:
+ ((<verb-sp,pp> & (<vc-remind>)) or
+ (<verb-and-sp-i-> & (([<vc-remind>]) or ())) or
+ ((<vc-remind>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & {TO+ or TH+ or Ce+ or
+(OF+ & {@MV+})}) or ({{@MV+} & (Ce+ or TO+ or TH+ or
+(OF+ & {@MV+}))} & <verb-phrase-opener>);
+reminding.g: (<vc-remind> & <verb-ge>) or <verb-ge-d>;
+reminding.v: <verb-pg> & <vc-remind>;
+
+<vc-inform>:
+ ((O+ or B-) & {@MV+} & {(OF+ & {@MV+}) or TH+ or Zs- or Ce+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+inform.v reassure.v alert.v guarantee.v notify.v forewarn.v:
+
+ ((<verb-pl,i> & (<vc-inform>)) or
+ (<verb-and-pl-> & ([(<vc-inform>)] or ())) or
+ ((<vc-inform>) & <verb-and-pl+>));
+informs.v reassures.v alerts.v guarantees.v notifies.v forewarns.v:
+
+ ((<verb-s> & (<vc-inform>)) or
+ (<verb-and-sp-i-> & (([<vc-inform>]) or ())) or
+ ((<vc-inform>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+informed.v-d reassured.v-d alerted.v-d guaranteed.v-d
+notified.v-d forewarned.v-d:
+
+ ((<verb-sp,pp> & (<vc-inform>)) or
+ (<verb-and-sp-i-> & (([<vc-inform>]) or ())) or
+ ((<vc-inform>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> &
+{Ce+ or TH+ or Zs- or (OF+ & {@MV+})}) or ({{@MV+} & (Ce+ or
+TH+ or OF+)} & <verb-phrase-opener>) or ({@E-} & A+);
+informing.g reassuring.g alerting.g guaranteeing.g notifying.g forewarning.g:
+(<vc-inform> & <verb-ge>) or <verb-ge-d>;
+informing.v reassuring.v alerting.v guaranteeing.v notifying.v forewarning.v:
+<verb-pg> & <vc-inform>;
+
+<vc-assure>:
+ ((O+ or B-) & {@MV+} & {(OF+ & {@MV+}) or TH+ or Zs- or Ce+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]) or
+ ({@MV+} & (TH+ or Ce+));
+
+assure.v:
+ ((<verb-pl,i> & (<vc-assure>)) or
+ (<verb-and-pl-> & ([(<vc-assure>)] or ())) or
+ ((<vc-assure>) & <verb-and-pl+>));
+assures.v:
+ ((<verb-s> & (<vc-assure>)) or
+ (<verb-and-sp-i-> & (([<vc-assure>]) or ())) or
+ ((<vc-assure>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+assured.v-d:
+ ((<verb-sp,pp> & (<vc-assure>)) or
+ (<verb-and-sp-i-> & (([<vc-assure>]) or ())) or
+ ((<vc-assure>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> &
+{(OF+ & {@MV+}) or Ce+ or TH+ or Zs-}) or ({{@MV+} & (Ce+ or
+TH+ or OF+)} & <verb-phrase-opener>);
+assuring.g: (<vc-assure> & <verb-ge>) or <verb-ge-d>;
+assuring.v: <verb-pg> & <vc-assure>;
+
+<vc-let>:
+ ((B- or O+) & {@MV+} & {I+ or ((K+ or Pp+) & {@MV+})}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+let.v-d:
+
+ ((<verb-sp,pp> & (<vc-let>)) or
+ (<verb-and-sp-i-> & (([<vc-let>]) or ())) or
+ ((<vc-let>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-let>) or
+ (<verb-pv-b> & ((K+ or Pp+) & {@MV+})) or
+ ((K+ or Pp+) & <verb-phrase-opener>);
+lets.v:
+ ((<verb-s> & (<vc-let>)) or
+ (<verb-and-sp-i-> & (([<vc-let>]) or ())) or
+ ((<vc-let>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+letting.g: (<vc-let> & <verb-ge>) or <verb-ge-d>;
+letting.v: <verb-pg> & <vc-let>;
+
+let's let’s: ({Ic-} & Wi- & {N+} & I+) or ({Ic-} & Wi- & N+);
+
+<vc-watch>:
+ ((B- or O+) & {@MV+} & {I*j+ or Pg+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]) or
+ {@MV+};
+
+watch.v:
+ ((<verb-pl,i> & (<vc-watch>)) or
+ (<verb-and-pl-> & ([(<vc-watch>)] or ())) or
+ ((<vc-watch>) & <verb-and-pl+>));
+watches.v:
+ ((<verb-s> & (<vc-watch>)) or
+ (<verb-and-sp-i-> & (([<vc-watch>]) or ())) or
+ ((<vc-watch>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+watched.v-d:
+
+ ((<verb-sp,pp> & (<vc-watch>)) or
+ (<verb-and-sp-i-> & (([<vc-watch>]) or ())) or
+ ((<vc-watch>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ <verb-pv> or
+ <verb-phrase-opener>;
+
+watching.g: (<vc-watch> & <verb-ge>) or <verb-ge-d>;
+watching.v: <verb-pg> & <vc-watch>;
+
+<vc-appreciate>:
+ ((B- or O+) & {@MV+} & {Pg+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+appreciate.v spend.v:
+ ((<verb-pl,i> & (<vc-appreciate>)) or
+ (<verb-and-pl-> & ([(<vc-appreciate>)] or ())) or
+ ((<vc-appreciate>) & <verb-and-pl+>));
+appreciates.v spends.v:
+ ((<verb-s> & (<vc-appreciate>)) or
+ (<verb-and-sp-i-> & (([<vc-appreciate>]) or ())) or
+ ((<vc-appreciate>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+appreciated.v-d spent.v-d:
+
+ ((<verb-sp,pp> & (<vc-appreciate>)) or
+ (<verb-and-sp-i-> & (([<vc-appreciate>]) or ())) or
+ ((<vc-appreciate>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {Pg+}) or
+ ({{@MV+} & Pg+} & <verb-phrase-opener>);
+appreciating.g spending.g: (<vc-appreciate> & <verb-ge>) or <verb-ge-d>;
+appreciating.v spending.v: <verb-pg> & <vc-appreciate>;
+
+% Pa**j is used for predicative adjectives
+% ditransitive
+<vc-make>:
+ ((B- or O+ or OX+) & {
+ ({@MV+} & {I*j+ or Pa**j+ or B-})
+ or ((K+ or AF-) & {@MV+})})
+ or ((
+ <vc-ditrans>
+ or (K+ & {[[@MV+]]} & O*n+)
+ or K+
+ or Vm+
+ or ([[{K+} & @MV+ & O*n+]])
+ ) & {@MV+})
+ or [[()]];
+
+make.v:
+ ((<verb-pl,i> & (<vc-make>)) or
+ (<verb-and-pl-> & ([(<vc-make>)] or ())) or
+ ((<vc-make>) & <verb-and-pl+>));
+makes.v:
+ ((<verb-s> & (<vc-make>)) or
+ (<verb-and-sp-i-> & (([<vc-make>]) or ())) or
+ ((<vc-make>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+made.v-d:
+
+ ((<verb-sp,pp> & (<vc-make>)) or
+ (<verb-and-sp-i-> & (([<vc-make>]) or ())) or
+ ((<vc-make>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>
+ or (<verb-s-pv-b> & (({@MV+} & Pa+) or ({O+ or K+} & {@MV+})))
+ or ({({@MV+} & Pa+) or K+} & <verb-phrase-opener>);
+
+built_of built_up_of composed_of constructed_of formed_of made_of
+made_up_of:
+ (<verb-pv-b> & (B- or O+) & {@MV+}) or (O+ & <verb-phrase-opener>);
+
+making.g: (<vc-make> & <verb-ge>) or <verb-ge-d>;
+making.v: <verb-pg> & <vc-make>;
+
+<vc-render>:
+ (((B- or O+) & {({@MV+} & Pa+) or AF-}) or
+ ([[@MV+ & O*n+]])) & {@MV+};
+
+render.v deem.v:
+ ((<verb-pl,i> & (<vc-render>)) or
+ (<verb-and-pl-> & ([(<vc-render>)] or ())) or
+ ((<vc-render>) & <verb-and-pl+>));
+renders.v deems.v:
+ ((<verb-s> & (<vc-render>)) or
+ (<verb-and-sp-i-> & (([<vc-render>]) or ())) or
+ ((<vc-render>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+rendered.v-d deemed.v-d:
+ ((<verb-sp,pp> & (<vc-render>)) or
+ (<verb-and-sp-i-> & (([<vc-render>]) or ())) or
+ ((<vc-render>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or (<verb-pv> & {Pa+ or AF-})
+or ({{@MV+} & Pa+} & <verb-phrase-opener>);
+rendering.g deeming.g: (<vc-render> & <verb-ge>) or <verb-ge-d>;
+rendering.v deeming.v: <verb-pg> & <vc-render>;
+
+<vc-deprive>:
+ (((O+ or B-) & {{@MV+} & OF+}) or
+ ([[@MV+ & O*n+]])) & {@MV+};
+
+deprive.v accuse.v acquit.v purge.v disabuse.v exonerate.v absolve.v rob.v
+convict.v:
+ ((<verb-pl,i> & (<vc-deprive>)) or
+ (<verb-and-pl-> & ([(<vc-deprive>)] or ())) or
+ ((<vc-deprive>) & <verb-and-pl+>));
+deprives.v accuses.v acquits.v purges.v disabuses.v
+exonerates.v absolves.v robs.v convicts.v:
+ ((<verb-s> & (<vc-deprive>)) or
+ (<verb-and-sp-i-> & (([<vc-deprive>]) or ())) or
+ ((<vc-deprive>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+deprived.v accused.v acquitted.v purged.v disabused.v exonerated.v absolved.v robbed.v
+convicted.v-d:
+
+ ((<verb-sp,pp> & (<vc-deprive>)) or
+ (<verb-and-sp-i-> & (([<vc-deprive>]) or ())) or
+ ((<vc-deprive>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {OF+} & {@MV+}) or
+ ({@E-} & A+) or
+ ({{@MV+} & OF+} & <verb-phrase-opener>);
+depriving.g accusing.g acquitting.g purging.g disabusing.g exonerating.g
+absolving.g robbing.g convicting.g:
+(<vc-deprive> & <verb-ge>) or <verb-ge-d>;
+depriving.v accusing.v acquitting.v purging.v disabusing.v
+exonerating.v absolving.v robbing.v convicting.v: <verb-pg> & <vc-deprive>;
+
+<vc-clear>:
+ (((O+ or B-) & {({@MV+} & OF+) or K+}) or
+ ({K+} & O*n+) or
+ K+ or
+ ([[{K+} & @MV+ & O*n+]])) & {@MV+};
+
+clear.v:
+ ((<verb-pl,i> & (<vc-clear>)) or
+ (<verb-and-pl-> & ([(<vc-clear>)] or ())) or
+ ((<vc-clear>) & <verb-and-pl+>));
+clears.v:
+ ((<verb-s> & (<vc-clear>)) or
+ (<verb-and-sp-i-> & (([<vc-clear>]) or ())) or
+ ((<vc-clear>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+cleared.v-d:
+
+ ((<verb-sp,pp> & (<vc-clear>)) or
+ (<verb-and-sp-i-> & (([<vc-clear>]) or ())) or
+ ((<vc-clear>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {({@MV+} & OF+) or K+} & {@MV+}) or
+ ({K+ or ({@MV+} & OF+)} & <verb-phrase-opener>);
+clearing.g: (<vc-clear> & <verb-ge>) or <verb-ge-d>;
+clearing.v: <verb-pg> & <vc-clear>;
+
+<vc-bet>:
+ ({(O+ & {O*n+}) or (B- & {O+})} & {@MV+} & {TH+ or Ce+ or RSe+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+bet.v-d:
+
+ ((<verb-sp,pp> & (<vc-bet>)) or
+ (<verb-and-sp-i-> & (([<vc-bet>]) or ())) or
+ ((<vc-bet>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-bet>) or
+ (<verb-pv> & {O+ or B-} & {@MV+} & {TH+ or Ce+ or RSe+ or @MV+});
+bets.v:
+ ((<verb-s> & (<vc-bet>)) or
+ (<verb-and-sp-i-> & (([<vc-bet>]) or ())) or
+ ((<vc-bet>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+betted.v-d:
+
+ ((<verb-sp,pp> & (<vc-bet>)) or
+ (<verb-and-sp-i-> & (([<vc-bet>]) or ())) or
+ ((<vc-bet>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or B-} & {@MV+} & {TH+ or Ce+ or RSe+ or @MV+}) or
+ ({O- or [[@MV+ & O*n+]] or TH+ or Ce+} & <verb-phrase-opener>);
+betting.g: (<vc-bet> & <verb-ge>) or <verb-ge-d>;
+betting.v: <verb-pg> & <vc-bet>;
+
+<vc-bother>:
+ ({@MV+} & TO+) or
+ ((O+ or B-) & {@MV+} & {THi+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+bother.v:
+ ((<verb-s-pl,i> & (<vc-bother>)) or
+ (<verb-and-sp-i-> & ([(<vc-bother>)] or ())) or
+ ((<vc-bother>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+bothers.v: <verb-s-s> & <vc-bother>;
+bothered.v-d: (<verb-s-sp,pp> & <vc-bother>) or <verb-pv> or <verb-phrase-opener>;
+bothering.v: <verb-s-pg> & <vc-bother>;
+bothering.g: (<vc-bother> & <verb-ge>) or <verb-ge-d>;
+
+<vc-surprise>:
+ ((O+ or B-) & {@MV+} & {THi+}) or
+ ([[@MV+ & O*n+]]);
+
+surprise.v alarm.v amaze.v amuse.v astonish.v astound.v excite.v depress.v
+disgust.v distress.v dismay.v irritate.v embarrass.v annoy.v:
+
+ ((<verb-s-pl,i> & (<vc-surprise>)) or
+ (<verb-and-sp-i-> & ([(<vc-surprise>)] or ())) or
+ ((<vc-surprise>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+surprises.v alarms.v amazes.v amuses.v astonishes.v astounds.v excites.v depresses.v
+disgusts.v distresses.v dismays.v irritates.v embarrasses.v annoys.v:
+ <verb-s-s> & <vc-surprise>;
+surprised.v alarmed.v amazed.v amused.v astonished.v astounded.v excited.v
+depressed.v disgusted.v distressed.v dismayed.v irritated.v embarrassed.v
+annoyed.v-d:
+ (<verb-s-sp,pp> & <vc-surprise>) or <verb-pv> or <verb-phrase-opener>;
+surprising.v alarming.v amazing.v amusing.v astonishing.v astounding.v
+exciting.v depressing.v disgusting.v distressing.v dismaying.v
+embarrassing.v annoying.v:
+ <verb-s-pg> & <vc-surprise>;
+surprising.g alarming.g amazing.g amusing.g astonishing.g astounding.g
+exciting.g depressing.g disgusting.g distressing.g dismaying.g
+embarrassing.g annoying.g:
+ (<vc-surprise> & <verb-ge>) or <verb-ge-d>;
+
+<vc-prove>:
+ ((O+ or B- or [[@MV+ & O*n+]]) & {@MV+}) or
+ ((O+ or OX+ or B-) & {@MV+} & (TOo+ or [[Pa+]])) or
+ ({@MV+} & (TOf+ or TH+ or Ce+ or RSe+ or Zs- or Pa+));
+
+prove.v:
+ ((<verb-x-pl,i> & (<vc-prove>))
+ or (<verb-and-sp-i-> & ([(<vc-prove>)] or ()))
+ or ((<vc-prove>) & <verb-and-sp-i+>));
+proves.v:
+ ((<verb-x-s> & (<vc-prove>))
+ or (<verb-and-s-> & ([(<vc-prove>)] or ()))
+ or ((<vc-prove>) & <verb-and-s+>));
+proved.v-d:
+
+ ((<verb-x-sp,pp> & (<vc-prove>)) or
+ (<verb-and-sp-i-> & (([<vc-prove>]) or ())) or
+ ((<vc-prove>) & <verb-and-sp-i+>))
+ or (<verb-s-pv> & {THi+ or TOf+})
+ or ({@E-} & A+)
+ or ({{@MV+} & Pa+} & <verb-phrase-opener>);
+proven.v:
+ (<verb-x-pp> & <vc-prove>) or
+ (<verb-s-pv> & {THi+ or TOf+ or Pa+}) or
+ ({@E-} & A+) or
+ ({{@MV+} & Pa+} & <verb-phrase-opener>);
+proving.g: (<vc-prove> & <verb-ge>) or <verb-ge-d>;
+proving.v: <verb-x-pg> & <vc-prove>;
+
+<vc-suggest>:
+ ((O+ or B- or [[@MV+ & O*n+]]) & {@MV+}) or
+ ({@MV+} & (Pg+ or TH+ or Ce+ or RSe+ or Zs- or TS+ or ((SI*j+ or SFI**j+) & I*j+)));
+
+suggest.v anticipate.v recommend.v:
+ ((<verb-pl,i> & (<vc-suggest>)) or
+ (<verb-and-pl-> & ([(<vc-suggest>)] or ())) or
+ ((<vc-suggest>) & <verb-and-pl+>));
+suggests.v anticipates.v recommends.v:
+ ((<verb-s> & (<vc-suggest>)) or
+ (<verb-and-sp-i-> & (([<vc-suggest>]) or ())) or
+ ((<vc-suggest>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+suggested.v-d anticipated.v-d recommended.v-d:
+
+ ((<verb-sp,pp> & (<vc-suggest>)) or
+ (<verb-and-sp-i-> & (([<vc-suggest>]) or ())) or
+ ((<vc-suggest>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-s-pv> & {THi+ or TSi+ or Z-}) or
+ ({@E-} & A+) or
+ <verb-phrase-opener>;
+suggesting.g anticipating.g recommending.g: (<vc-suggest> & <verb-ge>) or <verb-ge-d>;
+suggesting.v anticipating.v recommending.v: <verb-pg> & <vc-suggest>;
+
+% ditransitive
+<vc-deny>:
+ ((<vc-opt-ditrans> or
+ (B- & {O+}) or
+ [[@MV+ & O*n+]]) & {@MV+}) or
+ ({@MV+} & (Pg+ or TH+ or Ce+ or RSe+));
+
+deny.v:
+ ((<verb-pl,i> & (<vc-deny>)) or
+ (<verb-and-pl-> & ([(<vc-deny>)] or ())) or
+ ((<vc-deny>) & <verb-and-pl+>));
+denies.v:
+ ((<verb-s> & (<vc-deny>)) or
+ (<verb-and-sp-i-> & (([<vc-deny>]) or ())) or
+ ((<vc-deny>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+denied.v-d:
+
+ ((<verb-sp,pp> & (<vc-deny>)) or
+ (<verb-and-sp-i-> & (([<vc-deny>]) or ())) or
+ ((<vc-deny>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv-b> & {O+ or B- or [[@MV+ & O*n+]]} & {@MV+}) or
+ ({O+ or ([[@MV+ & O*n+]])} & <verb-phrase-opener>);
+denying.g: (<vc-deny> & <verb-ge>) or <verb-ge-d>;
+denying.v: <verb-pg> & <vc-deny>;
+
+<vc-describe>:
+ ((O+ or B-) & {@MV+} & {AZ+}) or
+ ({@MV+} & (QI+ or Z-)) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+describe.v:
+ ((<verb-pl,i> & (<vc-describe>)) or
+ (<verb-and-pl-> & ([(<vc-describe>)] or ())) or
+ ((<vc-describe>) & <verb-and-pl+>));
+describes.v:
+ ((<verb-s> & (<vc-describe>)) or
+ (<verb-and-sp-i-> & (([<vc-describe>]) or ())) or
+ ((<vc-describe>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+described.v-d:
+
+ ((<verb-sp,pp> & (<vc-describe>)) or
+ (<verb-and-sp-i-> & (([<vc-describe>]) or ())) or
+ ((<vc-describe>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {AZ+ or Z-}) or
+ ({@E-} & A+) or
+ ({@MV+} & {AZ+} & <verb-phrase-opener>);
+describing.g: (<vc-describe> & <verb-ge>) or <verb-ge-d>;
+describing.v: <verb-pg> & <vc-describe>;
+
+<vc-portray>:
+ ((O+ or B-) & {@MV+} & {AZ+}) or
+ ([[@MV+ & O*n+ & {@MV+}]]);
+
+portray.v depict.v regard.v view.v characterize.v:
+ ((<verb-pl,i> & (<vc-portray>)) or
+ (<verb-and-pl-> & ([(<vc-portray>)] or ())) or
+ ((<vc-portray>) & <verb-and-pl+>));
+portrays.v depicts.v regards.v views.v characterizes.v:
+ ((<verb-s> & (<vc-portray>)) or
+ (<verb-and-sp-i-> & (([<vc-portray>]) or ())) or
+ ((<vc-portray>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+portrayed.v-d depicted.v-d regarded.v-d viewed.v-d characterized.v-d:
+
+ ((<verb-sp,pp> & (<vc-portray>)) or
+ (<verb-and-sp-i-> & (([<vc-portray>]) or ())) or
+ ((<vc-portray>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-pv> & {AZ+}) or
+ ({@E-} & A+) or
+ ({@MV+} & {AZ+} & <verb-phrase-opener>);
+portraying.g depicting.g regarding.g viewing.g characterizing.g:
+ (<vc-portray> & <verb-ge>) or <verb-ge-d>;
+portraying.v depicting.v regarding.v viewing.v characterizing.v:
+<verb-pg> & <vc-portray>;
+
+% -------------------------------------------------------------------------------
+% IDIOMATIC VERBS
+
+do_so take_place show_up take_office do_battle give_way make_way
+take_part catch_up catch_on file_suit pick_up take_off break_free
+take_over jump_ship see_fit take_note:
+
+ ((<verb-pl,i> & (<vc-intrans>)) or
+ (<verb-and-pl-> & ([(<vc-intrans>)] or ())) or
+ ((<vc-intrans>) & <verb-and-pl+>));
+does_so takes_place shows_up pleads_guilty pleads_innocent
+takes_office does_battle gives_way makes_way takes_part catches_up
+catches_on files_suit picks_up takes_off breaks_free takes_over
+jumps_ship sees_fit lets_go takes_note comes_true comes_clean
+comes_of_age:
+
+ ((<verb-s> & (<vc-intrans>)) or
+ (<verb-and-sp-i-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+
+showed_up pleaded_guilty pleaded_innocent made_way caught_up caught_on
+filed_suit picked_up jumped_ship:
+
+ ((<verb-sp,pp> & (<vc-intrans>)) or
+ (<verb-and-sp-i-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-sp-i+>));
+
+plead_guilty plead_innocent:
+
+ ((<verb-sp,pp> & (<vc-intrans>)) or
+ (<verb-and-sp-i-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-sp-i+>)) or
+ (<verb-ico> & <vc-intrans>);
+
+let_go:
+
+ ((<verb-sp,pp> & (<vc-intrans>)) or
+ (<verb-and-sp-i-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-sp-i+>)) or
+ (<verb-ico> & <vc-intrans>) or
+ <verb-pv>;
+
+did_so took_place took_office did_battle gave_way took_part took_off
+broke_free took_over saw_fit took_note came_true came_clean came_of_age:
+
+ ((<verb-sp> & (<vc-intrans>)) or
+ (<verb-and-sp-i-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-sp-i+>));
+
+done_so taken_place shown_up taken_office done_battle given_way
+taken_part taken_off broken_free taken_over seen_fit taken_note:
+
+ ((<verb-pp> & (<vc-intrans>)) or
+ (<verb-and-had-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-had+>));
+
+come_true come_clean come_of_age:
+
+ ((<verb-pl,i> & (<vc-intrans>)) or
+ (<verb-and-pl-> & ([(<vc-intrans>)] or ())) or
+ ((<vc-intrans>) & <verb-and-pl+>)) or
+
+ ((<verb-pp> & (<vc-intrans>)) or
+ (<verb-and-had-> & (([<vc-intrans>]) or ())) or
+ ((<vc-intrans>) & <verb-and-had+>));
+
+doing_so taking_place showing_up pleading_guilty pleading_innocent
+taking_office
+doing_battle giving_way making_way taking_part catching_up catching_on
+filing_suit picking_up taking_off breaking_free taking_over jumping_ship
+seeing_fit letting_go taking_note coming_true coming_clean coming_of_age:
+ (<vc-intrans> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-put-up-with>: (O+ or B- or [[@MV+ & O*n+]]) & {@MV+};
+allow_for bring_about get_rid_of let_go_of take_note_of:
+
+ ((<verb-pl,i> & (<vc-trans>)) or
+ (<verb-and-pl-> & ([(<vc-trans>)] or ())) or
+ ((<vc-trans>) & <verb-and-pl+>));
+puts_up_with allows_for brings_about gets_rid_of lets_go_of
+takes_note_of:
+
+ ((<verb-s> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+put_up_with let_go_of:
+
+ ((<verb-sp,pp> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or
+ (<verb-ico> & <vc-trans>);
+allowed_for brought_about got_rid_of took_note_of:
+ ((<verb-sp,pp> & (<vc-trans>)) or
+ (<verb-and-sp-i-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+gotten_rid_of taken_note_of:
+ ((<verb-pp> & (<vc-trans>)) or
+ (<verb-and-had-> & (([<vc-trans>]) or ())) or
+ ((<vc-trans>) & <verb-and-had+>));
+putting_up_with allowing_for bringing_about getting_rid_of letting_go_of
+taking_note_of:
+ (<vc-trans> & (<verb-ge> or <verb-pg>)) or <verb-ge-d>;
+
+<vc-take-it>: {[@MV+]} & TH+;
+take_it make_out point_out give_notice serve_notice:
+ ((<verb-pl,i> & (<vc-take-it>)) or
+ (<verb-and-pl-> & ([(<vc-take-it>)] or ())) or
+ ((<vc-take-it>) & <verb-and-pl+>));
+takes_it makes_out points_out gives_notice serves_notice:
+ ((<verb-s> & (<vc-take-it>)) or
+ (<verb-and-s-> & ([(<vc-take-it>)] or ())) or
+ ((<vc-take-it>) & <verb-and-s+>));
+ made_out pointed_out served_notice:
+
+ ((<verb-sp,pp> & (<vc-take-it>)) or
+ (<verb-and-sp-i-> & (([<vc-take-it>]) or ())) or
+ ((<vc-take-it>) & <verb-and-sp-i+>)) or <verb-pv> or <verb-phrase-opener>;
+took_it gave_notice:
+ ((<verb-sp> & (<vc-take-it>)) or
+ (<verb-and-sp-i-> & (([<vc-take-it>]) or ())) or
+ ((<vc-take-it>) & <verb-and-sp-i+>));
+taken_it given_notice:
+ ((<verb-pp> & (<vc-take-it>)) or
+ (<verb-and-had-> & (([<vc-take-it>]) or ())) or
+ ((<vc-take-it>) & <verb-and-had+>));
+taking_it making_out pointing_out giving_notice serving_notice:
+ (<vc-take-it> & <verb-pg,ge>) or <verb-ge-d>;
+
+<vc-turn-out>: {[@MV+]} & THi+;
+turn_out:
+ ((<verb-s-pl,i> & (<vc-turn-out>)) or
+ (<verb-and-sp-i-> & ([(<vc-turn-out>)] or ())) or
+ ((<vc-turn-out>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+turns_out: <verb-s-s> & <vc-turn-out>;
+turned_out: <verb-s-sp,pp> & <vc-turn-out>;
+turning_out: <verb-s-pg> & <vc-turn-out>;
+
+% (QI+ & {MV+}): "I did not figure out why until recently"
+<vc-find-out>: {[@MV+]} & (TH+ or (QI+ & {MV+}) or Ce+);
+find_out figure_out:
+ ((<verb-pl,i> & (<vc-find-out>)) or
+ (<verb-and-pl-> & ([(<vc-find-out>)] or ())) or
+ ((<vc-find-out>) & <verb-and-pl+>));
+finds_out figures_out:
+ ((<verb-s> & (<vc-find-out>)) or
+ (<verb-and-s-> & ([(<vc-find-out>)] or ())) or
+ ((<vc-find-out>) & <verb-and-s+>));
+found_out figured_out:
+
+ ((<verb-sp,pp> & (<vc-find-out>)) or
+ (<verb-and-sp-i-> & (([<vc-find-out>]) or ())) or
+ ((<vc-find-out>) & <verb-and-sp-i+>)) or
+ <verb-pv> or
+ <verb-phrase-opener>;
+finding_out figuring_out: (<vc-find-out> & <verb-pg,ge>) or
+<verb-ge-d>;
+
+<vc-keep-on>: {Pg+ or @MV+};
+keep_on give_up go_around:
+ ((<verb-s-pl,i> & (<vc-keep-on>)) or
+ (<verb-and-sp-i-> & ([(<vc-keep-on>)] or ())) or
+ ((<vc-keep-on>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+keeps_on gives_up goes_around: <verb-s-s> & <vc-keep-on>;
+kept_on: <verb-s-sp,pp> & <vc-keep-on>;
+gave_up went_around: <verb-s-sp> & <vc-keep-on>;
+given_up gone_around: <verb-s-pp> & <vc-keep-on>;
+keeping_on giving_up going_around: (<vc-keep-on> & <verb-pg,ge>) or <verb-ge-d>;
+
+% XXX TODO need to provide and-able links for these.
+<vc-end-up>: Pg+ or Pa+ or ({AF-} & {@MV+});
+end_up:
+ ((<verb-s-pl,i> & (<vc-end-up>)) or
+ (<verb-and-sp-i-> & ([(<vc-end-up>)] or ())) or
+ ((<vc-end-up>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t>;
+ends_up: <verb-s-s> & <vc-end-up>;
+ended_up: <verb-s-sp,pp> & <vc-end-up>;
+ending_up: (<vc-end-up> & <verb-pg,ge>) or <verb-ge-d>;
+
+/en/words/words.v.1.p: <verb-pv> or <verb-phrase-opener>; % two-word passives
+% done_for accounted_for adhered_to arrived_at barked_at belched_at catered_to
+
+<vc-paraph>:
+ {@MV+} & (((Xd- or Xq-) & (Xc+ or <costly-null>) & (COq+ or (CP- & {CC+}) or Eq+)) or
+ [(Xc+ or Xe+) & Ce+]);
+
+<vc-paraph-inv>:
+ {@MV+} & (((Xd- or Xq-) & (Xc+ or <costly-null>) & (COq+ or (CPx- & {CC+}) or Eq+)) or
+ [(Xc+ or Xe+) & Ce+]);
+
+<vc-it-paraph>:
+ {@MV+} & (Xd- or Xq-) & (Xc+ or <costly-null>) & (COqi+ or (CPi- & {CC+}) or Eqi+);
+
+% paraphrasing verbs like "say", "reply"
+% acknowledge.q add.q admit.q affirm.q agree.q announce.q argue.q
+/en/words/words.v.10.1:
+ [[{@E-} & (((Sp- or I-) & <vc-paraph>) or (SIpj+ & <vc-paraph-inv>))]];
+
+/en/words/words.v.10.2:
+ [[{@E-} & ((Ss- & <vc-paraph>) or (SIsj+ & <vc-paraph-inv>))]];
+
+/en/words/words.v.10.3:
+ <marker-past>
+ or ({@E-} & (
+ ((S- or PP-) & <vc-paraph>)
+ or (SI*j+ & <vc-paraph-inv>)
+ or [[Pvf- & <vc-it-paraph>]]));
+
+read.q-d:
+ <marker-past>
+ or ({@E-} & (((S- or I- or PP-) & <vc-paraph>) or (SI*j+ & <vc-paraph-inv>)));
+
+wrote.q-d:
+ <marker-past>
+ or ({@E-} & ((S- & <vc-paraph>) or (SI*j+ & <vc-paraph-inv>)));
+
+written.q: {@E-} & PP- & <vc-paraph>;
+
+/en/words/words.v.10.4: [[{@E-} & Pg- & <vc-paraph>]];
+
+seem.q appear.q: [[{@E-} & (SFp- or If-) & <vc-it-paraph>]];
+seems.q appears.q: [[{@E-} & SFs- & <vc-it-paraph>]];
+seemed.q-d appeared.q-d: <marker-past> or ({@E-} & (SF- or PPf-) & <vc-it-paraph>);
+seeming.q appearing.q: [[{@E-} & Pgf- & <vc-it-paraph>]];
+
+say.q: {@E-} & (((Sp- or I-) & <vc-paraph>) or (SIpj+ & <vc-paraph-inv>));
+says.q: {@E-} & ((Ss- & <vc-paraph>) or (SIsj+ & <vc-paraph-inv>));
+said.q-d: <marker-past> or ({@E-} & (((S- or PP-) & <vc-paraph>) or (SI*j+ & <vc-paraph-inv>)));
+saying.q: {@E-} & Pg- & <vc-paraph>;
+
+avow.q:
+ [[{@E-} & (((Sp- or I-) & <vc-paraph>) or (SIpj+ & <vc-paraph-inv>))]];
+
+tell.q: [[{@E-} & (Sp- or I- or SIpj+) & O+ & <vc-paraph>]];
+tells.q: [[{@E-} & (Ss- or SIsj+) & O+ & <vc-paraph>]];
+told.q-d: <marker-past> or ({@E-} & (((S- or PP- or SI*j+) & O+) or Pv-) & <vc-paraph>);
+telling.q: [[{@E-} & Pg- & O+ & <vc-paraph>]];
+
+ask.q: [[{@E-} & (((Sp- or I-) & {O+}) or SIpj+) & <vc-paraph>]];
+asks.q: [[{@E-} & ((Ss- & {O+}) or SIsj+) & <vc-paraph>]];
+asked.q-d: <marker-past> or ({@E-} & (((S- or PP-) & {O+}) or Pv- or SI*j+) & <vc-paraph>);
+asking.q: [[{@E-} & Pg- & {O+} & <vc-paraph>]];
+
+% idiomatic "voted yes/no" expressions using the V link.
+<vc-vote>: Vv+ & {@MV+};
+say.w vote.w:
+ ((<verb-pl,i> & (<vc-vote>)) or
+ (<verb-and-pl-> & ([(<vc-vote>)] or ())) or
+ ((<vc-vote>) & <verb-and-pl+>));
+says.w votes.w:
+ ((<verb-s> & (<vc-vote>)) or
+ (<verb-and-s-> & ([(<vc-vote>)] or ())) or
+ ((<vc-vote>) & <verb-and-s+>));
+said.w-d voted.w-d:
+ ((<verb-sp,pp> & (<vc-vote>)) or
+ (<verb-and-sp-i-> & (([<vc-vote>]) or ())) or
+ ((<vc-vote>) & <verb-and-sp-i+>));
+saying.w voting.w:
+ (<vc-vote> & <verb-pg,ge>);
+
+% ---------------------------------------------------------
+% :.w "My answer: yes"
+is.w ":.w":
+ <verb-x-s,u> & <vc-vote>;
+
+was.w-d:
+ <marker-past>
+ or (<verb-x-s,u> & <vc-vote>);
+
+been.w: {@E-} & PPf- & <vc-vote>;
+
+be.w:
+ {@E-} & (Ix- or ({Ic-} & Wi-) or [S*x-]) & <vc-vote>;
+
+% S- & Vv+ & Xc+ & Ce+: "The answer being yes, ..."
+% S- & Xd- & MVg- & Vv+: "..., the answer being yes"
+being.w:
+ (S- & Vv+ & Xc+ & Ce+)
+ or (S- & Xd- & MVg- & Vv+);
+
+% E-: "The answer is surely yes"
+% A- & Ds-: "His answer was an emphatic yes"
+% Ds- & Jv-: "He replied with a yes"
+yes.vote no.vote maybe.vote:
+ (({E-} or (A- & Ds-)) & Vv-)
+ or ({A-} & Ds- & Jv-);
+
+double.v triple.v quadruple.v quintuple.v:
+ {EN-} &
+ ((<verb-pl,i> & (<vc-fill>)) or
+ (<verb-and-pl-> & ([(<vc-fill>)] or ())) or
+ ((<vc-fill>) & <verb-and-pl+>));
+doubles.v triples.v quadruples.v quintuples.v:
+ {EN-} &
+ ((<verb-s> & (<vc-fill>)) or
+ (<verb-and-sp-i-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-sp-i+>) or
+ <verb-and-sp-t>);
+doubled.v-d tripled.v-d quadrupled.v-d quintupled.v-d:
+ {EN-} & (
+ ((<verb-sp,pp> & (<vc-fill>)) or
+ (<verb-and-sp-i-> & (([<vc-fill>]) or ())) or
+ ((<vc-fill>) & <verb-and-sp-i+>)) or
+ <verb-and-sp-t> or <verb-pv> or ({@E-} & A+) or <verb-phrase-opener>);
+doubling.v tripling.v quadrupling.v quintupling.v:
+ {EN-} & (<verb-pg> & <vc-fill>);
+doubling.g tripling.g quadrupling.g quintupling.g:
+ {EN-} & ((<vc-fill> & <verb-ge>) or ({@E-} & A+) or <verb-ge-d>);
+
+% ===================================================================
+% PREPOSITIONS
+
+% conjoin preps: "prep and prep": "the coverage on TV and on the radio..."
+<conjoin-preps>: MJrp- or MJlp+;
+
+% alter-preps: "it is somewhere in or near the house"
+% The "or" must take a prep object.
+% XXX TODO: most preps below need this rule.
+<alter-preps>: MJrj- or MJlj+;
+
+<prep-main-b>:
+ <conjoin-preps>
+ or [Mp-] or Pp- or MVp-
+ or [({Xc+ & {Xd-}} & CO+)]
+ or (Xd- & Xc+ & (MX*x- or MVx-));
+
+<prep-main-a>:
+ <prep-main-b> or
+ (Cs+ & (Mj- or (Xd- & Xc+ & MX*j-))) or
+ (Wj- & Qd+) or
+ [Wq- & PF+];
+
+<prep-main-t>:
+ <conjoin-preps> or
+ [Mpn-] or Pp- or MVpn- or
+ [({Xc+ & {Xd-}} & CO*n+)] or
+ (Xd- & Xc+ & (MX- or MVx-));
+
+<prep-main-e>:
+ <conjoin-preps> or
+ [Mp-] or Pp- or MVa- or
+ [({Xc+ & {Xd-}} & CO+)] or
+ (Xd- & Xc+ & (MX*x- or MVx-));
+
+under beneath: ({Yd-} & {JQ+} & J+ & (<prep-main-a> or FM-)) or [MVp- & B-] or (Yd- & Pp-);
+below above behind.p: ({Yd-} & {{JQ+} & J+} & (<prep-main-a> or FM-)) or [MVp- & B-];
+within: ({JQ+} & J+ & <prep-main-a>) or [MVp- & B-];
+during: ({JQ+} & J+ & (<prep-main-a> or UN-)) or [MVp- & B-];
+
+from:
+ ({Yd-} & {JQ+} & (FM+ or J+ or Mgp+) & (<prep-main-a> or Mp-))
+ or [MVp- & B-]
+ or NIr+;
+
+at toward towards without:
+ ({JQ+} & (J+ or Mgp+) & <prep-main-a>)
+ or [MVp- & B-];
+
+%
+% XXX fixme: MVp- & J+ is wrong: "*I saw John except Fred"
+% XXX (The MVp- coming from prep-main-a)
+% So give J+ a cost, to minimize this, for now ...
+% Could this be fixable in postprocessing?
+% {EBm+} & J+: "but not very much"
+% [[EBm+]]: "but not very"
+except but.misc-ex:
+ ({JQ+} & (({EBm+} & [[J+]]) or [[EBm+]] or Mgp+) & <prep-main-a>)
+ or [MVp- & B-]
+ or ((MVp+ or TO+) & <prep-main-a>);
+
+against beyond beside:
+ ({JQ+} & (J+ or Mgp+) & <prep-main-a>)
+ or [MVp- & B-];
+
+between:
+ ({JQ+} & (J+ or Mgp+) & <prep-main-a>)
+ or [MVp- & B-]
+ or NIr+;
+
+with:
+ ({JQ+} & (J+ or Mgp+) & (<prep-main-a> or RJrv-))
+ or (Jw+ & (RJrj- or RJlj+))
+ or [MVp- & B-]
+ or (J+ & {EBm+} & ([P+] or [[O*n+]]) & (
+ MVp-
+ or [({Xc+ & {Xd-}} & CO+)]
+ or (Xd- & Xc+ & (MX*x- or MVx-))));
+
+among:
+ ({JQ+} & (J+ or Mgp+) & (<prep-main-a> or FM-))
+ or [MVp- & B-];
+
+% FL+ "for long"
+for.p:
+ ({JQ+} & (J+ or Mgp+ or TI+) & (<prep-main-a> or Mp-))
+ or (J+ & (RJrj- or RJlj+))
+ or [MVp- & B-]
+ or (MG- & JG+)
+ or (MVp- & FL+);
+
+into: ({JQ+} & (J+ or Mgp+ or QI+) & <prep-main-a>) or [MVp- & B-];
+
+about:
+ ({JQ+} & (J+ or Mgp+ or QI+) & <prep-main-a>)
+ or EN+
+ or EW+
+ or EZ+
+ or [MVp- & B-]
+ or (TOf+ & (Mp- or MVp- or Pp-))
+ or MVa-;
+
+% Grep also for "just_about", used as syonym for "nearly", "almost"
+just_about nearly_about almost_about right_about:
+ ({JQ+} & (J+ or Mgp+ or QI+) & <prep-main-a>)
+ or EW+;
+
+% EN- & Pp-: "you are half-way through"
+% EN- & J-: "He stopped, about half-way through"
+through.r:
+ ({JQ+} & J+ & (<prep-main-a> or FM-))
+ or (EN- & (Pp- or J-))
+ or [MVp- & B-];
+
+<prep-across>:
+ ({JQ+} & J+ & (<prep-main-a> or FM-))
+ or K-
+ or [MVp- & B-];
+
+across along: <prep-across>;
+
+off:
+ <prep-across>
+ or (MVp+ & {Xc+ & {Xd-}} & COp+);
+
+past.p:
+ ({Yd-} & {JQ+} & J+ & (<prep-main-a> or FM-))
+ or K-
+ or [MVp- & B-];
+
+around:
+ <alter-preps>
+ or ({JQ+} & (J+ or Mgp+) & (<prep-main-a> or FM-))
+ or K-
+ or [MVp- & B-]
+ or [EN+] or MVa-;
+
+% "They ran the motor flat out"
+% EN- & Pp-: "you are halfway out"
+% EN- & J-: "We stopped, about halfway up"
+out.r flat_out up.r down.r:
+ ({Yd-} & {JQ+} & ([J+] or [[MVp+]]) & (({Xd- & Xc+} & MVa-) or FM-))
+ or K-
+ or ({Yd-} & Pp-)
+ or (EN- & (Pp- or J-))
+ or [MVp- & B-];
+
+by:
+ <alter-preps>
+ or ({JQ+} & (J+ or Mgp+ or JT+) & (<prep-main-a> or FM-))
+ or K-
+ or [MVp- & B-];
+
+% EN- & Pp-: "you are halfway in"
+% EN- & J-: "we stopped, about halfway in"
+in.r:
+ <alter-preps>
+ or ({JQ+} & (J+ or Mgp+ or IN+) & (<prep-main-a> or FM-))
+ or K-
+ or (EN- & (Pp- or J-))
+ or [MVp- & B-]
+ or (MG- & JG+);
+
+on upon:
+ <alter-preps>
+ or ({JQ+} & (J+ or Mgp+ or ON+ or [QI+]) & <prep-main-a>)
+ or K-
+ or [MVp- & B-];
+
+over:
+ ({Yd-} & {JQ+} & (J+ or Mgp+ or QI+ or [[MVp+]]) & (<prep-main-a> or FM-))
+ or K-
+ or EN+
+ or [MVp- & B-]
+ or (Yd- & Pp-);
+
+just_over just_under well_over: EN+;
+
+% XXX original LG recommends using the LI link, however the
+% <prep-main-b> sort of clobbers this. Should this be "fixed"?
+like.p: ({[EA-]} & (((J+ or Mgp+ or [[Mp+ or MVs+]]) & <prep-main-b>)
+or (Vf- & Mgp+) or (LI- & (J+ or Cs+)))) or [MVp- & B-];
+unlike: J+ & (MVp- or Pp- or [({Xc+ & {Xd-}} & CO+)] or
+(Xd- & Xc+ & (E+ or MVx-)));
+
+% (OFd- & Jd+): "I have a lot of cookies", forces "lot" to be determiner;
+% The Jd+ forces a link to the object as well.
+of:
+ ({JQ+}
+ & (J+ or Mgp+ or QI+)
+ & (Mp-
+ or OFj-
+ or OFw-
+ or (Xd- & Xc+ & MX*x-)
+ or (Cs+ & (Mj- or (Xd- & Xc+ & MX*j-)))
+ or [[({Xc+ & {Xd-}} & CO+)]]))
+ or (OFd- & Jd+)
+ or ((OFj- or Mp-) & B-)
+ or (MG- & JG+)
+ or (NF- & NJ+)
+ or (Mp- & TI+);
+
+of_them: (ND- or MF-) & (J+ or Pa+) & Xd- & (MX*x- or MVx-) & Xc+;
+
+% MX-PHRASE: The blah, to be blahed, will be blah.
+% TO- & Xc+: "I'd like to, I want to." (null infinitive)
+% give [J+] a cost, so that numeric intervals are peferred
+to.r:
+ ({@E-} & {NT-} & I+ &
+ (TO- or
+ [{Xd- & Xc+} & MVi-] or
+ <MX-PHRASE> or
+ [<OPENER>] or
+ [[R-]] or
+ (SFsx+ & <S-CLAUSE>))) or
+ (TO- & Xc+) or
+ I*a+ or
+ ({JQ+} & ([J+] or Mgp+) & <prep-main-a>) or
+ VJ+ or
+ [MVp- & B-];
+
+so_as_to: I+ & {Xd- & Xc+} & MVi-;
+
+% --------------------------------------------------------
+% Preps suggesting comparative relations, orderings
+
+besides: {J+ or Mgp+} & ([({Xc+ & {Xd-}} & CO+)] or MVp- or [Wq- & PF+]);
+throughout: {J+} & ([({Xc+ & {Xd-}} & CO+)] or MVp- or [Wq- & PF+]);
+
+versus: (J+ & Mp-) or (G- & G+);
+vs: {Xi+} & G- & G+;
+
+worth.p: (Mp- & (J+ or OF+)) or (Paf- & Mgp+) or (Pa- & (J+ or B-));
+opposite.p: J+ & <prep-main-b>;
+better_off worse_off: {EC-} & Pa- & {Pg+};
+
+off_of out_of: ({JQ+} & J+ & <prep-main-b>) or [MVp- & B-];
+
+despite notwithstanding
+other_than apart_from aside_from:
+ (J+ or Mgp+) & (MVp- or (Xd- & Xc+ & (MVx- or E+))
+ or [({Xc+ & {Xd-}} & CO+)]);
+
+rather_than:
+ (J+ or Mgp+ or Mp+ or I+) &
+ ((Xd- & Xc+ & (E+ or MVx-)) or MVp- or [({Xc+ & {Xd-}} & CO+)]);
+
+instead_of because_of prior_to:
+ (J+ or Mgp+)
+ & (MVp- or Pp- or [({Xc+ & {Xd-}} & CO+)] or (Xd- & Xc+ & (E+ or MVx-)));
+
+as_well_as:
+ (J+ or Mgp+) & (MG- or Mp- or MVp- or [({Xc+ & {Xd-}} & CO+)] or (Xd- & Xc+ & (MX*x- or MVx-)));
+
+according_to as_of in_case_of in_response_to unbeknownst_to thanks_to:
+ J+ & (MVp- or Pp- or [({Xc+ & {Xd-}} & CO+)] or (Xd- & Xc+ & (E+ or MVx-)));
+
+due_to along_with en_route_to in_connection_with:
+ J+ & <prep-main-b>;
+
+regardless_of as_to irrespective_of:
+ (J+ or QI+) & (MVp- or [({Xc+ & {Xd-}} & CO+)] or (Xd- & Xc+ & (E+ or MVx-)));
+
+as_usual to_date on_average in_turn so_far
+in_particular in_response in_general thus_far in_reply:
+ <prep-main-b>;
+
+such_as:
+ J+ & (
+ MVa-
+ or Mp-
+ or (Xc+ & Xd- & (MVx- or MX*x-)));
+
+lest:
+ (Cs+ or Mgp+ or Mv+) & (
+ ({Xc+ & {Xd-}} & CO*s+)
+ or ({Xd- & Xc+} & MVs-)
+ or (Xd- & Xc+ & E+));
+
+albeit:
+ (Cs+ & {Xc+ & {Xd-}} & CO*s+)
+ or ({Xd-} & CC- & Wd+);
+
+no_matter:
+ QI+ & ((Xc+ & {Xd-} & CO+) or ({Xd- & Xc+} & MVs-));
+
+% --------------------------------------------------------
+% Preps that specify time-like relations
+
+recently:
+ {EE- or EF+} & (
+ ({Xd- & Xc+} & MVp-)
+ or Pp-
+ or E+
+ or ({Xc+ & {Xd-}} & CO+)
+ or EB-
+ or JT-
+ or Ca+
+ or Qe+
+ or [[Mp-]]);
+
+now.r:
+ ({Xd- & Xc+} & MVp-)
+ or Pp-
+ or E+
+ or ({Xc+ & {Xd-}} & CO+)
+ or EB-
+ or [[Mp-]];
+
+then.r:
+ ({Xd- & Xc+} & MVp-)
+ or Pp-
+ or E+
+ or ({Xc+ & {Xd-}} & CO+)
+ or EB-
+ or (S+ & Xd- & Xc+ & MVs-)
+ or [[Mp-]];
+
+later earlier:
+ ({ECa- or Yt-} &
+ (E+ or
+ Mp- or
+ Pp- or
+ MVb- or
+ [({Xc+ & {Xd-}} & CO+)] or
+ (Xd- & Xc+ & (MX*x- or MVx-)) or
+ ({[[@Ec-]]} & {Xc+} & A+) or
+ AJrc- or AJlc+)) or
+ (Yt- & (Ca+ or Qe+));
+
+% --------------------------------------------------------
+% Preps that specify space-like relations
+everywhere anywhere:
+ {EL+} & (
+ (Cs+ & (({Xc+ & {Xd-}} & CO+) or ({Xd- & Xc+} & MVs-)))
+ or (MVp- or Pp- or FM- or (Xc+ & Xd- & MVx-)));
+
+% Pp-: "We are finally getting somewhere."
+% Pp- & {EL+}: "I want to be somewhere else"
+% MVp-: "The record skips somewhere else, too."
+% EE+: "somewhere near, a mouse scratched."
+% MVp+ & COp+: "Somewhere, far away, a dog barked."
+% almost like <prep-main-b> ...
+somewhere someplace:
+ ({EL+} & (
+ FM-
+ or Pp-
+ or MVp-
+ or [({Xc+ & {Xd-}} & CO+)]
+ or (Xc+ & Xd- & MVx-)
+ ) & Mp+)
+ or ({EL+} & (MVp- or Pp-))
+ or ({EL+} & {Xc+ & {Xd-}} & MVp+ & {Xc+ & {Xd-}} & COp+)
+ or ({EL+} & {Xc+ & {Xd-}} & [[CO+]])
+ or EE+;
+
+nowhere:
+ {EL+} & (MVp- or Pp- or FM- or (Xc+ & Xd- & MVx-));
+
+% EE- & COp+: "somewhere near, a mouse scratched."
+% EE- & FM-: "The ticking came from somewhere near."
+near.p:
+ ({EE- or EF+} & (
+ <alter-preps>
+ or (J+ & (<prep-main-b> or FM- or [Wq- & PF+]))))
+ or (EE- & {Xc+} & COp+)
+ or (EE- & FM-);
+
+% SF*p+: "nearby is another temple" (using p for 'prep')
+% SFpp+: "nearby are more ruins"
+% {EE-} & {Xc+} & COp+: "{somewhere} nearby, a mouse scratched"
+% {EE-} & FM-: "The ticking came from {somewhere} nearby."
+nearby:
+ A+
+ or MVp-
+ or Pp-
+ or (SF*p+ & <CLAUSE>)
+ or ({EE-} & FM-)
+ or ({EE-} & {Xc+} & COp+);
+
+close_by:
+ (SF*p+ & <CLAUSE>)
+ or ({EE-} & {Xc+} & COp+);
+
+% XXX almost like <prep-main-b> .... is it?
+all_over all_around:
+ {J+} & (MVp- or Mp- or Pp- or FM- or [({Xc+ & {Xd-}} & CO+)]);
+
+% Consider "Here's the ball." We have two choices: SFst+ as a filler-it,
+% or the more questionable [Wq- & PF+]. Note that (Wd- & PF+) is barred
+% by the post-processing rules. Maybe PF is reasonable.. but SFst seems
+% better at the moment.
+here: J- or <prep-main-b> or (SFst+ & <CLAUSE>);
+
+% EN- & Pp-: "you are halfway there"
+% EN- & J-: "we stopped about halway there"
+% Wi-: "There!"
+there.r:
+ J-
+ or <prep-main-b>
+ or ((SFst+ or SFp+ or SFut+) & <CLAUSE>)
+ or SFIst-
+ or SFIp-
+ or OXt-
+ or (EN- & (Pp- or J-))
+ or Wi-;
+
+away: ({Yd-} & (MVp- or Pp- or ({Xc+ & {Xd-}} & CO+))) or K-;
+aboard: ((MVp- or Mp- or Pp-) & {J+}) or K-;
+apart: {Yd-} & K-;
+
+inside.r outside.r underneath alongside:
+ {J+} & (<prep-main-b> or FM-);
+amid plus.p minus.p via onto:
+ J+ & (<prep-main-b> or [Wq- & PF+]);
+
+% Bare-naked MVp-: "I want it back"
+back.r: ({Yd-} & K-) or (MVp+ & (MVp- or FM-)) or MVp-;
+forth aside.p: K- or MVa-;
+
+next_to in_back_of in_front_of close_to on_top_of outside_of
+inside_of atop:
+ <alter-preps> or
+ (J+ & (<prep-main-b> or FM- or [Wq- & PF+]));
+
+ahead_of by_way_of akin_to betwixt vis-a-vis in_lieu_of on_account_of
+in_place_of in_search_of:
+ <alter-preps> or
+ (J+ & (<prep-main-b> or [Wq- & PF+]));
+
+% --------------------------------------------------------
+% More complex space-like prepositional phrases
+
+overhead.r midway in_public in_private en_route
+a_la_mode a_la_carte side_by_side from_coast_to_coast: <prep-main-b>;
+
+abroad upstairs.r downstairs.r overseas.r next_door:
+ <prep-main-b> or FM-;
+
+elsewhere:
+ <prep-main-b> or FM- or [[J-]];
+
+ahead at_hand in_store in_reverse in_place in_town
+under_way in_office out_of_office out_of_reach
+in_reach within_reach on_guard at_large in_hand on_hand for_free
+in_line in_loco_parentis on_board en_route in_bed
+out_of_bed on_strike on_top from_afar at_stake in_question
+at_issue on_lease on_trial in_league in_cahoots in_front in_back
+on_break on_camera in_command in_concert by_association in_association
+on_deck on_disk on_file on_foot on_location on_line online.r:
+ MVp- or Mp- or Pp- or (Xc+ & Xd- & (MX*x- or MVx-));
+
+uptown downtown.r offshore.r underground.r out_of_town:
+ MVp- or Mp- or Pp- or FM- or (Xc+ & Xd- & MVx-);
+
+<common-prep>: MVp- or Pp- or (Xc+ & Xd- & MVx-);
+
+/en/words/words-medical.prep.1: <common-prep>;
+
+forward.r backward forwards.r backwards sideways ashore abreast aft
+half-way.r halfway.r
+two-fold downhill southward underfoot westward eastward
+northward overnight.r on_hold on_track in_situ in_toto off_balance
+in_check on_course off_course under_oath at_end by_example on_holiday
+by_invitation on_patrol on_stage in_step in_tempo on_schedule
+behind_schedule ahead_of_schedule for_good for_keeps
+out_of_step out_of_phase in_tune out_of_tune in_session out_of_session
+in_phase neck_and_neck under_contract:
+ <common-prep>;
+
+
+% 5' 3' are DNA ends
+upstream downstream 5' 3':
+ A+ or
+ NIfp+ or NItp- or
+ ({Yd- or EZ- or EE- or EI-} & {MVp+ or OF+} &
+ (({Xc+ & Xd-} & (Ma- or MJra-)) or
+ MJra+ or
+ (Wq- & PF+) or
+ MVp- or
+ Pp- or
+ FM- or
+ (Xc+ & Xd- & (MVx- or MX-))));
+
+%upstream downstream 3' 5':
+%A+ or
+%((EZ- or Y-) & (MVp+ or OF+) & (MV- or MV+)) or
+%(EI- or EZ- or Y- & Ma- & (MVp+ or OF+)) or
+%(EE- or Y- & (FM- or TO-) & MVp+ or OF+);
+
+indoors outdoors underwater.r:
+ MVp- or Pp- or FM- or (Xc+ & Xd- & MVx-);
+
+% --------------------------------------------------------
+% Patronymics and misc french/spanish/german connectives
+% Many of these are already in the adjectives list
+à auf aus aux comte comtes
+dans de de_la del della delle der des du duc
+la las le.c los nach noch och os ou på por
+sans te über un une vom von zum zur zu:
+ {G-} & G+;
+
+% Spanish/Italian: "Dolce y Gabbana"
+y.and: G- & G+;
+
+% ====================================================================
+% TIME AND PLACE EXPRESSIONS
+
+% (Xd- & {Xc+} & MV+ & MVx-): "We are ready, this time for sure."
+this_time this_one_time this_once that_time these_days:
+ <prep-main-t>
+ or (Xd- & {Xc+} & MV+ & MVx-)
+ or [[E+]];
+
+last_time next_time:
+ <prep-main-t>
+ or JT-
+ or YS+
+ or [[<noun-main-s>]];
+
+% Js-: "show results from last week"
+day.r week.r month.r year.r weekend.r morning.r afternoon.r evening.r
+night.r semester.r term.r season.r session.r:
+ ((DTn- or DTi-) & (<prep-main-t> or [[E+]]))
+ or (DTi- & (JT- or YS+ or Js- or [[<noun-main-s>]]))
+ or (DTa- & <prep-main-t>);
+
+the_next the_previous the_following this_past:
+ DTn+;
+
+% Js- links "show results from today"
+<relative-date>:
+ <prep-main-t> or JT- or Js- or YS+ or [[<noun-main-s>]];
+
+today tonight:
+ <relative-date> or [[E+]];
+
+yesterday:
+ {TD+} & (<relative-date> or [[E+]]);
+
+tomorrow:
+ {TD+} & <relative-date>;
+
+Monday Tuesday Wednesday Thursday Friday Saturday Sunday.i:
+ ((DTn- or DTie- or [()]) & {G-} & {TD+ or TW+} & (<relative-date> or ON-))
+ or [[AN+]];
+
+morning.i afternoon.i night.i evening.i:
+ TD-;
+
+January.i February March April.i May.i June.i
+July August.i September.i October November December:
+ ((DTn- or DTie- or ({TA-} & {TY+})) &
+ (JT-
+ or Jp-
+ or YS+
+ or IN-
+ or [<noun-and-s>]
+ or [[<noun-main-s>]]))
+ or ((DTn- or DTie-) & <prep-main-t>)
+ or (TM+ & {TY+} &
+ ((Xd- & Xc+ & TW-)
+ or ON-
+ or JT-
+ or [[<noun-main-s> or MVp- or Mp- or AN+]]))
+ or AN+;
+
+AM.ti PM.ti am.ti pm.ti a.m. p.m. o'clock: ND- & {@MX+} & <noun-main-s> & {TZ+} ;
+
+% Time-zone names
+A.tz ACDT.tz ACST.tz ADT.tz AEDT.tz AEST.tz AKDT.tz AKST.tz AST.tz
+AWDT.tz AWST.tz B.tz BST.tz C.tz CDT.tz CEDT.tz CEST.tz CET.tz CST.tz
+CXT.tz D.tz E.tz EDT.tz EEDT.tz EEST.tz EET.tz EST.tz F.tz G.tz
+GMT.tz H.tz HAA.tz HAC.tz HADT.tz HAE.tz HAP.tz HAR.tz HAST.tz HAT
+HAY.tz HNA.tz HNC.tz HNE.tz HNP.tz HNR.tz HNT.tz HNY.tz I.tz IST.tz
+K.tz L.tz M.tz MDT.tz MESZ.tz MEZ.tz MSD MSK.tz MST.tz N.tz NDT.tz
+NFT.tz NST.tz O.tz P.tz PDT.tz PST.tz Q.tz R.tz S.tz T.tz U.tz UTC.tz
+V.tz W.tz WDT.tz WEDT WEST.tz WET.tz WST.tz X.tz Y.tz Z.tz:
+{Xd-} & TZ-;
+
+% Abbreviated month names.
+Jan.x Feb.x Mar.x Apr.x May.x Jun.x Jul.x Aug.x Sep.x Sept.x Oct.x Nov.x Dec.x:
+ {Xi+} & TM+ & {TY+} &
+ ((Xd- & Xc+ & TW-) or
+ ON- or
+ JT- or
+ [[<noun-main-s> or MVpn- or Mp- or AN+]]);
+
+fall.i spring.i winter.i summer.i:
+ ((DTn- or DTi-) & <prep-main-t>) or
+ (DTi- & (JT- or YS+ or [[<noun-main-s>]]));
+
+weeks.i days.i hours.i minutes.i seconds.i months.i years.i decades.i
+centuries.i semesters.i terms.i nights.i:
+((ND- or [[EN-]] or [()]) & (Yt+ or (OT- & {Mp+}))) or (ND- & Ye-) or (TQ- & BT+);
+week.i day.i hour.i minute.i second.i month.i year.i decade.i century.i
+semester.i term.i night.u:
+(NS- & (({NJ-} & {EN-} & (Yt+ or OT-)) or (EN- & J-))) or
+(NSa- & [[Mp- or Ys-]]) or ({NR- or TT-} & DG- & ((Cs+ & (({Xc+ & {Xd-}} & CO+)
+or MVp- or (Xd- & Xc+ & MVx-))) or Yt+));
+year_and_a_half: NSa- & {EN-} & (Yt+ or OT-);
+moment.u: (NS- & (({EN-} & (Yt+ or OT-)) or (EN- & J-))) or
+({NR- or TT-} & DG- & ((Cs+ & (({Xc+ & {Xd-}} & CO+)
+or MVp- or (Xd- & Xc+ & MVx-))) or Yt+));
+a_while: J- or Yt+ or OT- or MVa-;
+now.i then.i: JT- or FM-;
+now_on then_on there_on: FM-;
+from_now: Yt- & <prep-main-t>;
+
+a_long_time some_time a_few_moments moments.u:
+ Yt+ or OT-;
+
+ago:
+ Yt- & (<prep-main-e> or Ca+ or Qe+ or JT- or Js-);
+
+every.i: {EN-} & Ye+ & <prep-main-t>;
+times.i x.i:
+ (ND- & (({Xc+ & {Xd-}} & CO+) or MVp- or EC+ or EZ+ or Ca+ or Qe+)) or
+ (((({ND-} & DG-) & {Cs+}) or (ND- & Ys+)) &
+ (({Xc+ & {Xd-}} & CO+) or MVp- or (Xd- & Xc+ & MVx-)));
+
+time.i:
+ {TT- or NR-} & DG- & {Cs+} &
+ (({Xc+ & {Xd-}} & CO+) or MVp- or (Xd- & Xc+ & MVx-));
+
+the_year: TY+ & <noun-main-s>;
+every_time:
+ {EN-} & (Cs+ & (({Xc+ & {Xd-}} & CO+) or MVp- or (Xd- & Xc+ & MVx-)));
+
+week.n moment.n hour.n minute.n year.n instant.n period.n month.n
+second.n decade.n century.n:
+ {NM+} & ((<noun-modifiers> &
+ ((Ds- & {@M+} & {WN+ or TH+ or [[Ce+]] or (R+ & Bs+)} & {@MXs+} &
+ (<noun-main-s> or
+ <rel-clause-s> or
+ <noun-and-s>)) or
+ Us- or
+ (YS+ & Ds-) or
+ (GN+ & (DD- or [()])))) or
+ AN+);
+
+day.n night.n:
+ {NM+} & ((<noun-modifiers> &
+ (({D*u-} & {@M+} & {WN+ or TH+ or [[Ce+]] or (R+ & Bs+)} & {@MXs+} &
+ (<noun-main-m> or
+ <rel-clause-s> or
+ <noun-and-x>)) or
+ Us- or
+ (YS+ & {D*u-}) or
+ (GN+ & (DD- or [()])))) or
+ AN+);
+
+days.n weeks.n moments.n hours.n minutes.n years.n instants.n periods.n months.n
+nights.n seconds.n decades.n centuries.n:
+ {NM+} & ((<noun-modifiers> &
+ (({Dmc-} & {@M+} & {WN+ or TH+ or Ce+ or (R+ & Bp+)} & {@MXp+} &
+ (<noun-main-p> or
+ <rel-clause-p> or
+ <noun-and-p>)) or
+ Up- or
+ (YP+ & {Dmc-}) or
+ (GN+ & (DD- or [()])))) or
+ [[AN+]]);
+
+% XXX A major problem here is that the dict entries for miles.n, feet.n
+% create a mass of parses that are wrong & interfere with the below.
+<units-funky-plural>:
+((ND- or [()] or [[EN-]]) & (Yd+ or Ya+ or EC+ or [[MVp-]] or OD-)) or
+(ND- & (NIfu+ or NItu- or EQt+ or EQt-));
+
+% AU is abbreviation for "astronomical units"
+blocks.i feet.i miles.i yards.i inches.i
+meters.i millimeters.i centimeters.i micrometers.i kilometers.i
+microns.i Angstroms.i wavelengths.i
+AU.i au.i astronomical_units light-years.i: <units-funky-plural>;
+
+block.i foot.i mile.i yard.i inch.i
+meter.i millimeter.i centimeter.i micrometer.i kilometer.i
+micron.i Angstrom.i wavelength.i
+astronomical_unit light-year.i:
+ (NS- & {NJ-} & {EN-} & (Yd+ or EC+ or [[MVp-]] or Ya+ or OD-)) or Us-;
+
+% make sure that mile.i always has precedence over mile.n
+% XXX TODO: probably same for the other .i's above...
+mile.n:
+ <marker-common-entity> or [<common-noun>];
+
+a_long_way: Yd+;
+point.i percentage_point:
+(NS- or NIe-) & {NJ-} & (Yd+ or OD-);
+points.u percentage_points: ND- & (Yd+ or MVp-);
+
+dollars.i cents.i: NIn- & (EC+ or Yd+ or OD-);
+1_dollar one_dollar a_dollar 1_cent
+one_cent a_cent: {NJ-} & (EC+ or Yd+ or OD-);
+share.i pound.i ounce.i gallon.i barrel.i head.x: NSa- & Mp-;
+
+twofold threefold fourfold fivefold sixfold sevenfold eightfold ninefold
+tenfold a_hundredfold a_thousandfold: {EN-} & (MVp- or Em+ or EC+ or [Pa-] or A+ or
+(Xd- & (Xc+ or <costly-null>) & MX-) or NIfn+ or NItn-);
+
+% Add cost to Op-, try to use any other linkage before making
+% a unit be a plain-old object.
+<units-suffix>:
+((ND- or NS- or NIe-) & (NIfu+ or NItu-)) or
+((ND- or NS- or NIe-) & (AN+ or EQt+ or EQt-)) or
+((ND- or NS- or NIe-) & (DD- or EN-) & {Wd-} & ({Mp+} & Sp+ )) or
+((ND- or NS- or NIe-) & ([[{DD-} & Op-]] or Jp-) & {Mp+}) or
+((ND- or NS- or NIe-) & Xd- & MX- & Xc+) or
+((ND- or NS-) & {NJ-} & (EC+ or Y+ or OD- or (Us- & {Mp+}))) or Us-;
+
+% Abbreviations of scientific units that follow numbers
+% km².u mi².u in².u ft².u m².u cm².u
+/en/words/units.1: <units-suffix>;
+UNITS: <units-suffix>;
+
+% Units abbreviations that can be followed by a period:
+% ft. tbsp. yds.
+/en/words/units.1.dot: {Xi+} & <units-suffix>;
+
+% Abbreviations that form noun-like things "degrees_Fahrenheit" etc.
+/en/words/units.3: ND- & <noun-main-s>;
+
+% Time unit abbreviations:
+<time-units>: <units-suffix> or ((ND- or NS-) & {NJ-} & OT-);
+/en/words/units.4: <time-units>;
+/en/words/units.4.dot: {Xi+} & <time-units>;
+
+% money, similar to units, above.
+% Ds-: "We are talking about the dollar"
+/en/words/currency:
+ ((NIm- or NIn- or NIe-) & AN+)
+ or ((NIm- or NIn- or NIe- or Ds-) & (Op- or Jp-) & {Mp+})
+ or ((NIm- or NIn-) & {NJ-} & (EC+ or Yd+ or OD-))
+ or Us-;
+
+/en/words/currency.p:
+ ((NIn- or NIe-) & AN+)
+ or ((NIn- or NIe-) & (Op- or Jp-) & {Mp+})
+ or ((NIn-) & {NJ-} & (EC+ or Yd+ or OD-))
+ or Us-;
+
+% number-and-unit combinations, such as "50-kDa". The linking requirements
+% should largely follow those for units except not allowing a numeric
+% determiner.
+% TODO: the <noun-main-x> linking requirements are likely rarely used, and
+% it might be beneficial to cost them. If this is done, make the same
+% modification for unit ranges also.
+% NUMBER-AND-UNIT:
+% ((({D*u-} or {Dmc-}) & <noun-sub-x> &
+% (<noun-main-x> or Bsm+)) or (({D*u-} or {Dmc-}) & Us- & {Mp+})) or A+;
+% Above screw up the usual units processing.
+
+% ======================================================================
+% QUESTION WORDS
+
+% QI- & (): "I do not know who"
+% Ws- & Bsw+ & Sp*w+: "Who have bought your flat from?"
+% {EL+ & {N+}} & Wd-: "Who?" "Who else?" "Who else not?"
+who:
+ (R- & (({MVp+ or MVx+} & RS+) or Cr+))
+ or [QI-]
+ or ({EL+} & ((S**w+ & {Bsw+}) or (R+ & B*w+)) & {EW-} & (Ws- or Wq- or QI*d- or BIqd-))
+ or ({EL+ & {N+}} & Wd-)
+ or ({MVp+ or MVx+} & (S**w+ or (R+ & B*w+))
+ & (Xd- & (Xc+ or <costly-null>) & MX*r-));
+
+% Sp+: "what are the answers?"
+% Wd-: Dr. Who: "What!"
+% {EL+} & Wd-: "What else?" "What the fuck?"
+% <directive-opener>: "What, were you expecting Santa?"
+% Wd- & O+: "What a jerk!"
+% QI-: "I'll tell you what", "Say what?"
+what:
+ ({EL+} &
+ (D**w+
+ or Ss*w+
+ or Sp*w+
+ or (R+ & (Bsw+ or BW+)))
+ & {EW-} & (Wq- or Ws- or QI*d- or BIqd- or QJ+ or QJ-))
+ or ({EL+} & Wd-)
+ or ((Ss*d+ or (R+ & (Bsd+ or BW+)))
+ & (<noun-main2-s-no-punc> or (Ss*t+ & <CLAUSE>) or SIs*t-))
+ or (D+ & JQ-)
+ or (Wd- & O+)
+ or [QI-]
+ or <directive-opener>;
+
+% QI- & (): "I do not know which"
+which:
+ ((Jr- or R-) & (({MVp+ or MVx+} & RS+) or Cr+))
+ or ((D**w+ or ({OF+} & (S**w+ or (R+ & B*w+)))) & {EW-} & (Wq- or Ws- or QI*d- or BIqd-))
+ or (JQ- & D+)
+ or ({MVp+ or MVx+} & (S**w+ or B*w+) & ((Xc+ or <costly-null>) & Xd- & MX*r-))
+ or [QI-]
+ or Jw-;
+
+whom:
+ (R- & Cr+)
+ or (R+ & B*w+ & {EW-} & (Wq- or QI*d- or BIqd- or ((Xc+ or <costly-null>) & Xd- & MX*r-)))
+ or (Jr- & (RS+ or Cr+))
+ or Jw-;
+
+whose:
+ (D**w+ & (
+ Mr-
+ or ({EW-} & Wq-)
+ or Ws-
+ or QI*d-
+ or BIqd-
+ or ((Xc+ or <costly-null>) & Xd- & MX*d-)))
+ or (JQ- & D+)
+ or (U+ & Jr- & (RS+ or Cr+));
+
+% Os-: "I'll hire whomever I can find" "I'll hire whomever"
+% EL+ & SJr-: "Bring him and whomever else"
+% ({EL+} & Os- & Bsd+): Bring whomever else you care to.
+whomever:
+ (R- & Cr+)
+ or (B*w+ & (Wq- or QI*d- or BIqd- or ((Xc+ or <costly-null>) & Xd- & MX*r-)))
+ or ({EL+} & SJr-)
+ or ({EL+} & (Ss*d+ or Bsd+ or {[[]]}) & Os-)
+ or (Jr- & (RS+ or Cr+))
+ or Jw-;
+
+% EL+ & SJr-: "Bring him and whomever else"
+whoever: {EL+} &
+ (((Ss*d+ or Bsd+ or [[CX+]] or {[[]]}) &
+ (<noun-main-s> or (Xc+ & {Xd-} & CO+) or ({Xd- & Xc+} & MVs-)))
+ or ({EL+} & SJr-)
+ or [[(O- or J-) & CX+]]);
+
+whatever.c:
+ ({EL+} & (((Ss*d+ or Bsd+ or BW+ or D**w+)
+ & (<noun-main-s> or (Xc+ & {Xd-} & CO+) or ({Xd- & Xc+} & MVs-)))
+ or [[(O- or J-) & CX+]]))
+ or ((ALx+ & J+) & (({Xd-} & Xc+ & CO+) or ({Xd- & Xc+} & MVs-)));
+
+whenever wherever however.c:
+ {EL+} & (Cs+ & (({Xc+ & {Xd-}} & CO+) or ({Xd- & Xc+} & MVs-)));
+
+whyever:
+ ({EL+} & (
+ (Wq- & Q+)
+ or (QI- & (Cs+ or TOn+))
+ or (Cs+ & ((SFsx+ & <S-CLAUSE>) or WY- or BIq-))))
+ or [[{@CO-} & Wc- & Wi+]];
+
+whichever:
+ ({EL+} & (((Ss*d+ or Bsd+ or BW+ or D**w+)
+ & (<noun-main-s> or (Xc+ & {Xd-} & CO+) or ({Xd- & Xc+} & MVs-)))
+ or [[(O- or J-) & CX+]]))
+ or ((ALx+ & J+) & (({Xd-} & Xc+ & CO+) or ({Xd- & Xc+} & MVs-)));
+
+whence whither:
+ {EL+} & (Cs+ & (({Xc+ & {Xd-}} & CO+)
+ or ({Xd- & Xc+} & MVs-)));
+
+although in_as_much_as whilst whereas whereof wherein:
+ (Cs+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-)))
+ or ({Xd-} & CC- & Wd+);
+
+% QI- & (): "I do not know when"
+% (Mv- & Cs+): "an examination when it happened revealed chicanery"
+when:
+ ((WN- or BIh-) & Cs+)
+ or ((PF+ or TOn+ or Cs+) & (BIq- or QI- or (SFsx+ & <S-CLAUSE>)))
+ or (Mv- & Cs+)
+ or [QI-]
+ or QJ- or QJ+
+ or ({EW-} & Wq- & (Q+ or PF+))
+ or ((Cs+ or Mp+ or Mgp+ or Mv+) &
+ (({Xd- & Xc+} & MVs-) or ({Xc+ & {Xd-}} & CO*s+) or (Xd- & Xc+ & E+)));
+
+% QI- & (): "I do not know why"
+% <directive-opener> or Wi-: "Why, of course it will!"
+% N-: "why not?" "Why the hell not?"
+why:
+ ({EL+} & (
+ ({EW-} & Wq- & Q+)
+ or (QI- & (Cs+ or TOn+ or [()]))
+ or (Cs+ & ((SFsx+ & <S-CLAUSE>) or WY- or BIq- or QJ+ or QJ-))
+ or ((Wi- or <directive-opener>) & {N+})
+ ))
+ or QJ- or QJ+;
+
+% QI- & (): "I do not know where"
+% R+ & Bsw+: "Where does it go to?"
+% Cs+ & Bsw+ & QI-: "Can you tell us where those strange ideas came from?"
+% {EW-}: "about where did you put it?"
+where:
+ {EL+}
+ & (
+ ({EW-} & Wq- & ((Rw+ & WR+) or (R+ & Bsw+) or ({Rw+} & PF+) or Q+))
+ or [QI-]
+ or QJ-
+ or QJ+
+ or (Cs+ & Bsw+ & QI-)
+ or ((WR+ or Cs+ or TOn+ or PF+) & (BIq- or QI- or (SFsx+ & <S-CLAUSE>)))
+ or ((Cs+ or PF+ or WR+) & <prep-main-b>));
+
+whether: (((QI- or BIq-) & (Cs+ or TOn+)) or (Cs+ & SFsx+ & <S-CLAUSE>))
+or [[(Cs+ or MV+) & (({Xd- & Xc+} & MVs-) or ({Xc+ & {Xd-}} & CO*s+))]];
+whether_or_not: ((QI- or BIq-) & (Cs+ or TOn+)) or
+(Cs+ & (({Xd- & Xc+} & MVs-) or ({Xc+ & {Xd-}} & CO*s+)));
+
+% QI- & (): "I do not know how"
+% EL+: "How else would you say that?"
+how:
+ ((((EAh+ or EEh+) & {HA+}) or H+ or AFh+) &
+ {EW-} & (BIqd- or QI*d- or Wq- or Ws-))
+ or ({EW-} & Wq- & (({EL+} & Q+) or AF+))
+ or [QI-]
+ or QJ- or QJ+
+ or ((Cs+ or TOn+) & (QI- or BIq- or (SFsx+ & <S-CLAUSE>)));
+
+% ----------------------------------------------------
+% CONJUNCTIONS & ADVERBS
+
+that.j-c:
+ (Cet+ & ([SFsx+ & <S-CLAUSE>] or TH- or [[MVh-]] or RJ*t+ or RJ*t-)) or
+ (TS- & (SI*j+ or SFI**j+) & I*j+);
+that.j-d: [{AL-} & D*u+];
+
+% Xd-: iffy punctuation, e.g "The man, that you saw laugh...
+that.j-r:
+ ({[Xd-]} & R- & (({MVp+ or MVx+} & RS+) or Cr+))
+ or EE+
+ or (EA+ & {HA+})
+ or DTn+;
+
+that.j-p: ({[[M+]]} & <noun-main-h>) or <noun-and-s>;
+
+% "No one is sitting at that there table"
+that_there: Ds+;
+
+% (Rnx+ & <CLAUSE-E>): "Because I said so"
+because:
+ (Cs+ & (({Xc+ & {Xd-}} & CO*s+) or BIh- or ({Xd- & Xc+} & MVs-))) or
+ (OF+ & (({Xc+ & {Xd-}} & CO+) or BIh- or ({Xd- & Xc+} & MVa-))) or
+ (Rnx+ & <CLAUSE-E>);
+
+now_that just_as if_only in_case whereby whereupon insofar_as
+inasmuch_as ere on_the_grounds_that on_grounds_that in_that
+in_the_event_that in_the_event:
+ Cs+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-));
+
+if_only:
+ ((MVp+ or MVa+ or MVs+) & ({Xd- & Xc+} & MVp-)) or (Wd+ & Wc-);
+
+on_condition:
+ (TH+ or TS+) & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-));
+
+unless though.c even_though:
+ (Cs+ or Mgp+ or Mv+)
+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-) or (Xd- & Xc+ & E+));
+
+as_if as_though:
+ ((Cs+ or Mgp+ or Mv+ or Mp+)
+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-) or (Xd- & Xc+ & E+)))
+ or ((BIh- or LI-) & Cs+);
+
+as_soon_as:
+ Cs+ & {Xc+ & {Xd-}} & CO*s+;
+
+% J+ & CO+: "Until yesterday, ..."
+until 'til ’til ‘til `til til:
+ ((Mgp+ or J+ or JT+ or UN+)
+ & (({Xc+ & {Xd-}} & CO+) or ({Xd- & Xc+} & MVp-) or [Mp-]))
+ or (Cs+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-)));
+
+since:
+ ((Mgp+ or J+ or JT+ or UN+)
+ & (({Xc+ & {Xd-}} & CO+) or ({Xd- & Xc+} & MVp-) or [Mp-]))
+ or (Cs+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-)))
+ or [[MVa-]] or [[E+]];
+
+ever_since:
+ (J+ or Mgp+ or Cs+)
+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-));
+
+after:
+ {EI- or Yt-}
+ & (((Mgp+ or J+ or JT+) & (<prep-main-b> or UN- or Ca+ or Qe+))
+ or (Cs+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-))));
+
+before:
+ ({EI- or Yt-}
+ & (({Mgp+ or J+ or JT+} & (<prep-main-b> or UN-))
+ or (Cs+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-)))))
+ or (Yt- & (Ca+ or Qe+));
+
+if only_if if_and_only_if iff:
+ (Cs+ & {Xc+ & {Xd-}} & (Wd- & (Qd+ or Ws+ or Wq+)))
+ or ((Cs+ or [Mgp+] or [Mv+])
+ & (({Xd- & Xc+} & MVs-) or ({Xc+ & {Xd-}} & CO*s+)))
+ or (QI- & Cs+);
+
+% Perhaps the below is a cop-out, but getting the links just
+% right between commas, buts, nots and onlys is proving to be hard.
+but_only_if but_not_if:
+ Cs+ & (Xd- or [[()]]) & Xc+ & MVs-;
+
+if_possible if_necessary:
+ MVp-
+ or (Xd- & Xc+ & (MVx- or E+))
+ or ({Xc+ & {Xd-}} & CO+);
+
+if_so:
+ ({Xc+ & {Xd-}} & CO+);
+
+no_wonder: Wd+ & Wc-;
+
+while:
+ ((Cs+ or Mgp+ or Mp+)
+ & (({Xc+ & {Xd-}} & CO*s+) or ({Xd- & Xc+} & MVs-) or (Xd- & Xc+ & E+)));
+
+<adverb-join>: RJlv+ or RJrv-;
+
+% once as adverb
+once.e:
+ ({Cs+ or Mp+} &
+ (({Xc+ & {Xd-}} & CO*s+) or
+ ({Xd- & Xc+} & MVs-) or
+ (Xd- & Xc+ & E+))) or
+ <adverb-join> or
+ E+ or
+ EB-;
+
+% --------------------------------------------------------------------------
+% Conjunctions
+
+% Should these be treated as clause-openers (taking CO link)?
+% e.g. "Also on this list is the Colossus of Rhodes."
+% Currently, they take Wc- as they are "coordinating conjuctions"
+% that are tied to previous sentences (i.e. to the left-wall).
+% Another possibility: (Rnx+ & <CLAUSE-E>) "Because I say so"
+% XXX should review these, they probably overlap the other conjunction
+% usages below.
+%
+% not.ij seems to result in bad parses quite often, do we need it?
+%
+but.ij and.ij or.ij not.ij also.ij but_not and_not and_yet:
+ [[(({Xd-} & CC-) or Wc-) & {Xc+} & (Wdc+ or Qd+ or Ws+ or Wq+)]];
+
+and/or: [(({Xd-} & CC-) or Wc-) & (Wdc+ or Qd+ or Ws+ or Wq+)];
+
+% and used as a conjunction in proper names:
+% The Great Southern and Western Railroad
+% Hmm, Maybe should use MG- & JG+ here, to be consistent with "of", "for":
+% "The Society of Engineers", "The League for Abstinence"
+and.j-g: [[G- & G+]];
+
+% Conjoined adjectival modifiers.
+% The black and white cat sleeps
+% She ran hot and cold.
+% The {EBb+} link handles "not", "yet" after the "and" -- "blah and not blah"
+% See also <comma-adj-conjunction> for similar structures.
+% The {Xd-} allows "blah blah, and blah"
+% MVa is given a cost, so that Pa is used, if possible.
+% (In general, we want to never use MVa if Pa is possible... )
+% AJla- & AJr*+ allows "he is clever and funnier than Mike."
+%
+% AJ*a: ordinary adjectives
+% AJ*c: comparative adjectives
+% AJ*s: superlative adjectives
+%
+and.j-a but.j-a yet.j-a and_yet:
+ ({Xd-} & AJla- & {EBb+} & AJr+) & (A+ or Pa- or [MVa-] or AJra-);
+
+or.j-a:
+ ({Xd-} & AJla- & AJra+) & (A+ or Pa- or [MVa-] or AJra-);
+
+% The SJn, Dn links are propagated through the linkage, guaranteeing that
+% "neither" will be used together with "nor".
+nor.j-a: AJn- & AJ+ & (A+ or Pa- or [MVa-]);
+
+% compartives:
+% he is bigger, and badder, than the pope.
+% If one comma is there, then the other must be also.
+and.j-c or.j-c but.j-c yet.j-c:
+ ((AJlc- & AJrc+) or
+ (Xd- & AJlc- & AJrc+ & Xc+)) &
+ (((Pam- or Mam- or AFm+) & {@MV+}) or
+ ({[ECa-]} & MVb-) or
+ Am+);
+
+and.j-s:
+ (AJls- & AJrs+ & La-) or
+ (AJld- & AJrd+ & (D+ or DD+));
+
+% conjoined post-nominal modifiers
+% [Ma-]: it is more grammatically correct to have commas ...
+% {EBb+}: "blah but not blah", "blah and not blah"
+but.j-m and.j-m or.j-m:
+ (({Xd-} & MJla- & {EBb+} & MJra+) & ([Ma-] or (Xd- & Xc+ & MX*a-))) or
+ (({Xd-} & MJlp- & {EBb+} & MJrp+) & (Mp- or MVp- or (Xc+ & CO+))) or
+ (({Xd-} & MJlj- & {EBb+} & MJrj+ & {Xc+}) & J+ & ([Mp-] or Pp- or MVp-));
+
+% Conjoined question words.
+% When and where is the party?
+% How and why did you do that?
+and.j-q: (QJ- & QJ+) & ((Wq- & (Q+ or PF+)) or QI-);
+
+% conjoined adverbs/prepositional phrases
+% RJ*v: adverbs
+% RJ*t: that "He said that ... and that ..."
+% RJ*c: subordinate clauses: "Although he said ... and he did ..., ..."
+% RJ*j: prep-object-relative (Mj): "the man for whom and with whom ..."
+% RJ*r: "those" relative clauses: "...: those who do and those who don't"
+and.j-r or.j-r:
+ ((RJlv- & RJrv+) & MVr-) or
+ ((RJlt- & RJrt+) & TH-) or
+ ((RJlc- & RJrc+) & Cs-) or
+ ((RJlj- & RJrj+) & Mj- & Cs+) or
+ (({Xd-} & RJlr- & RJrr+) & J-);
+
+% Conjoined nouns/noun phrases.
+% "The cost and reliability were questioned" (Spx+)
+% "He wrote for piano and flute." (Ju-)
+% "Where is the sickle and hammer?" (SIs-)
+% Op- has a cost, so that "they verbed X and verbed Y" gets the VJ link
+% at zero cost, and the SJ link at higher cost (since a "verbed Y" can be
+% understood as a modified noun). Acutally, should probably have some
+% post-processing rule to disallow this XXX to do fix above. Example of
+% bad SJ usage: "He bangs drums and played piano" i.e "he bangs a played piano"
+%
+% <noun-conjunction>: ({Xd-} & SJl- & SJr+) & etc.
+% would allow "X , and Y" constructions, but these have tricky rules...
+%
+% noun-conj-dep-s & SI-: Are a dog and a cat here?
+%
+% XXX There should be a noun-sub-u but this requires a lot of work ...
+<noun-conj-dep-s>: ({Xd-} & SJls- & SJrs+ & {[[Xc+]]});
+<noun-conj-dep-p>: ({Xd-} & SJlp- & SJr+ & {[[Xc+]]}) or
+ ({Xd-} & SJls- & SJrp+ & {[[Xc+]]});
+<noun-conj-dep-u>: ({Xd-} & SJlu- & SJr+ & {[[Xc+]]}) or
+ ({Xd-} & SJlp- & SJru+ & {[[Xc+]]}) or
+ ({Xd-} & SJls- & SJru+ & {[[Xc+]]});
+
+% Give AN+ a cost, because in general, we don't want to conjoind nouns,
+% and then use the resulting phrase to modify another noun ...
+<noun-conj-head>: Ju- or SJl+ or [[AN+]];
+
+% XXX WTF? why does [O-] have a cost that the post-nominal doesn't?
+% Having this cost messes up the following parse:
+% "The Spirit, a liner carrying crew members and passengers, was attacked."
+% I'm guessing the costly [O-] is needed to avoid some other screwup ..?
+% {Dm-}: "I have a number of pennies and dimes"
+% "I saw the (dog and pony) show"
+%
+% and_not ,_not: "I saw John, not Mary"
+% We treat this her as an idiom, even though it's explicitly hanled for
+% AJ nd RJ conjunctions. Its just easier, for now.
+%
+% {Jd- & Dm-}: "A number of recommendations and suggestions were made"
+% with "number of" modifying the and.j-n
+% [[<noun-conj-head>]] costs so that above is prefered:
+% "there was enough of the beer and sandwiches"
+
+and.j-n but_not and_not ,_not:
+ (<noun-conj-dep-s> & <noun-sub-s> & (
+ <noun-conj-head>
+ or (Spx+ & <CLAUSE>)
+ or SIp-
+ or [{Ds-} & Os-]
+ or <post-nominal-s>))
+ or (<noun-conj-dep-p> & <noun-sub-p> & (
+ [[<noun-conj-head>]]
+ or ({Jd- & Dm-} & Spx+ & <CLAUSE>)
+ or SIp-
+ or [{{Jd-} & Dmc-} & Op-]
+ or <post-nominal-p>))
+ or (<noun-conj-dep-u> & <noun-sub-x> & (
+ [[<noun-conj-head>]]
+ or ({Jd- & Dm-} & Sux+ & <CLAUSE>)
+ or SIu-
+ or [{{Jd-} & Dmu-} & Ou-]
+ or <post-nominal-u>));
+
+or.j-n:
+ (<noun-conj-dep-s> & <noun-sub-s> &
+ (<noun-conj-head> or (S*x+ & <CLAUSE>) or SI- or [Os-] or <post-nominal-s>)) or
+ (<noun-conj-dep-p> & <noun-sub-p> &
+ (<noun-conj-head> or (Spx+ & <CLAUSE>) or SIp- or [Op-] or <post-nominal-p>));
+
+% The SJn, Dn links are propagated through the linkage, guaranteeing that
+% "neither" will be used together with "nor".
+nor.j-n: SJn- & SJ+ & ((Wd- & S*x+) or SI- or Os- or SJn+);
+
+% The Dn- link is used for both nouns, as above, and on neither..nor for verbs
+% e.g. "We neither ate nor drank"
+neither.j: Dn+;
+
+% Force use of commas: "Mary, but not Louise, is coming to the party"
+% Not John, but Mary led the way.
+but.j-n:
+ ((Xd- & SJl- & EBb+ & SJr+ & Xc+) & (Wd- & Ssx+)) or
+ ((Xd- & SJl- & EBy- & SJr+) & (Wd- & Ssx+)) or
+ (({Xd-} & SJl- & EBy- & SJr+) & Ou-);
+
+% --------------------------------------------------------------------------
+% Conjoined verbs/verb phrases
+% "Oscar Peterson played piano and wrote music."
+% Pass through singular/plural agreement of subject.
+% The weirdo (B- & {B+}) allows the following to parse:
+% "This is a problem Moscow created and failed to solve."
+<verb-conjunction>:
+ (({Xd-} & VJlsi- & VJrsi+) & (({@MV+} & Ss-) or (I- & {@MV+}) or ({Xd-} & VJrsi-))) or
+ (({Xd-} & VJlpi- & VJrpi+) & (({@MV+} & Sp-) or (I- & {@MV+}) or ({Xd-} & VJrpi-))) or
+ (({Xd-} & VJlst- & VJrst+) & ((({@MV+} & Ss-) or (I- & {@MV+})) & (O+ or (B- & {B+})))) or
+ (({Xd-} & VJlpt- & VJrpt+) & ((({@MV+} & Sp-) or (I- & {@MV+})) & (O+ or (B- & {B+})))) or
+ (({Xd-} & VJlh- & VJrh+) & (PP- & {@MV+})) or
+ ((VJlg- & VJrg+) & (J-)) or
+ ((VJlp- & VJrp+) & <verb-ico>) or
+ ((VJls- & VJrs+) & <verb-ico>);
+
+and.j-v or.j-v: <verb-conjunction>;
+
+% ditransitive conjunction: "I gave Bob a doll and Mary a gun"
+% Actually, optionally ditransitive, to cover more cases.
+% "I taught these mice to jump, and those mice to freeze"
+% "I taught these mice to jump, and those to freeze"
+<ditransitive-conjunction>:
+ {Xd-} & VJd- & O+ & {O*n+};
+
+and.j-o or.j-o: <ditransitive-conjunction>;
+
+% The VJn- gaurentees that nor.j-v is used with neither.j-v
+nor.j-v:
+ (VJn*i- & VJr*i+ & ({@MV+} & S-)) or
+ (VJn*t- & VJr*t+ & ({@MV+} & S- & O+));
+
+% Similar to and, but allows optional comma before "but"
+% "blah blah, but blah"
+but.j-v:
+ ((({Xd-} & VJls-) & VJrs+) & (Ss- or ({Xd-} & VJrs-))) or
+ ((({Xd-} & VJlp-) & VJrp+) & (Sp- or ({Xd-} & VJrp-))) or
+ ((VJl- & VJr+) & (I- or <verb-ico>));
+
+% The VJb- guarentees that bit.j-b is used with not_only
+% "We not only X'ed but also Y'ed".
+% This is the same pattern as the neither..nor... pattern above.
+but.j-b:
+ (VJb*i- & VJr*i+ & ({@MV+} & S-));
+not_only: Db+;
+
+% XJ: collocations with holes, i.e. "... blah blah X um um Y"
+% where "blah blah" is always used with "um um".
+% XJ*i: with infinitives
+% ... not only X, but Y
+% "you should not only ask for your money back, but demand it"
+not_only: I- & I+ & XJi+;
+but.j-r: {Xd-} & XJi- & I+;
+
+% XXX to-do: should have special linkage for either... or ....
+% instead of dependeingg on the E+ link. See neither..nor... for examples.
+either.r: Ds+ or E+ or ({OF+} & <noun-main-x>) or ({Xd+ & Xc-} & MVa-);
+neither.r: Ds+ or E+ or ({OF+} & <noun-main-x>);
+nor.r: ((Xd- & CC-) or Wd-) & Qd+;
+for.r: [[(({Xd-} & CC-) or Wc-) & (Wd+ or Qd+ or Ws+ or Wq+)]];
+yet.r: ((({Xd-} & CC-) or Wc-) & Wd+) or E+ or MVa- or ({Xd-} & Xc+ & CO+);
+
+thus therefore: ({Xc+ & {Xd-}} & CO+) or ({Xd-} & CC- & Wd+) or
+({Xd- & Xc+} & (E+ or EB-)) or (Xd- & Xc+ & MVa-);
+
+% EBy+ link is for "verbed not X but Y" "I saw not Mary, but John"
+%
+% EB- & EA+: modify both the verb, via EB- and the adjective, via EA+
+% it is not sweet
+% *it tastes not sweet
+% it tastes bitter, not sweet % "not" is modifying comma
+% it tastes bitter and not sweet
+% EB- & EE+: "but not very much"
+% optional {EA+} to make "he is not a good programmer"
+% FIXME: it would be nice to have some + link for this case, also.
+not.e:
+ (EBm- & {EA+ or EE+})
+ or (EBb- & {EA+})
+ or (EBx- & {EA+})
+ or ({@E-} & N-)
+ or NT+
+ or EBy+
+ or [[((Ma+ or Mg+ or Mv+ or Mp+) & CO+)
+ or (Mg- & Mgn+)
+ or (Mv- & Mvn+)
+ or (Mp- & Mp+)
+ or (Ma- & Ma*n+)]];
+
+% We include this, though it's not one of the strippable strings
+n't n’t: N- or EB-;
+
+%ADJECTIVES
+
+% Common disjuncts shared by virtually all adjectives.
+% Dn- & AJn+: for neither...nor constructions.
+<adj-op>: [[{@E-} & Wq- & {@MV+} & PF+ & {@MV+} & {CC+}]] or
+ (AJra- & {@MV+}) or
+ ({@MV+} & AJla+) or
+ (Dn- & AJn+) or
+ ({@E-} & {@MV+} & ([[<OPENER>]] or (Xd- & Xc+ & MX*a-)));
+
+% Ordinary adjectives
+% abject.a abnormal.a abominable.a abortive.a abrasive.a abrupt.a
+% "the rich and powerful": [[{DD-} & <noun-and-p>]]
+
+<ordinary-adj>:
+ {EA- or EF+} &a