# empty command


# invalid commands
?

!!!.!!!....!!.....???

--balderdash--

(i=0; i<100; i++)

# This fails; in real life the parser adds quotes and reinjects.
say hi

# common forms
look
(verb="look")
look ball
(verb="look", direct_object=[ball])
look BaLl
(verb="look", direct_object=[ball])
Look at the ball.
(verb="look", do_preposition="at", direct_object=[ball])
say "hi"
(verb="say", quote="hi")
say "hi
(verb="say", quote="hi")
say {"hi"}
(verb="say", quote=""hi"")
say "hi" to ball
(verb="say", quote="hi", do_preposition="to", direct_object=[ball])
Say "hi" to the ball.
(verb="say", quote="hi", do_preposition="to", direct_object=[ball])
# for exits
ball
(direct_object=[ball])
get up
(verb="get", preposition="up")
sit down
(verb="sit", preposition="down")
kick ball
(verb="kick", direct_object=[ball])
Take the ball.
(verb="take", direct_object=[ball])
pick up the ball
(verb="pick", do_preposition="up", direct_object=[ball])
Pick up the ball.
(verb="pick", do_preposition="up", direct_object=[ball])
put the ball down
(verb="put", do_preposition="down", direct_object=[ball])
put down the ball
(verb="put", do_preposition="down", direct_object=[ball])
Put the ball down.
(verb="put", do_preposition="down", direct_object=[ball])
Put down the ball.
(verb="put", do_preposition="down", direct_object=[ball])
put the ball in the box
(verb="put", direct_object=[ball], io_preposition="in", indirect_object=[box])
Put the ball into the Box.
(verb="put", direct_object=[ball], io_preposition="into", indirect_object=[box])
# answers to questions
2
(number="2")
two
(number="2")
fifteenth
(number="15")
15th
(number="15")
the box
(direct_object=[box])
# involving fields
show the ball's name
(verb="show", direct_object=[ball], field="name")
Show the ball's name.
(verb="show", direct_object=[ball], field="name")
Show the ball's name!
(verb="show", direct_object=[ball], field="name")
show the ball name
(verb="show", direct_object=[ball], field="name")
show the ball's fifth alias
(verb="show", direct_object=[ball], field="alias", number="5")
Show the ball's 50th alias.
(verb="show", direct_object=[ball], field="alias", number="50")
Show ball's 50th alias.
(verb="show", direct_object=[ball], field="alias", number="50")
help foobar
(verb="help", field="foobar")
Help on foobar
(verb="help", do_preposition="on", field="foobar")
Help on foobar.
(verb="help", do_preposition="on", field="foobar")
help on fOOBAR!
(verb="help", do_preposition="on", field="fOOBAR")
help on fOOBAR.
(verb="help", do_preposition="on", field="fOOBAR")
# declarative commands
the ball is not hidden
(direct_object=[ball], verb="is", field="hidden", negated_verb="1")
the ball isn't hidden
(direct_object=[ball], verb="is", field="hidden", negated_verb="1")
the ball is hidden
(direct_object=[ball], verb="is", field="hidden")
the ball's hidden
(direct_object=[ball], verb="is", field="hidden")
I'm not benchmarked.
(direct_object=[avatar], verb="am", field="benchmarked", negated_verb="1")
I am not benchmarked.
(direct_object=[avatar], verb="am", field="benchmarked", negated_verb="1")
I'm benchmarked.
(direct_object=[avatar], verb="am", field="benchmarked")
# It would be nice if these worked, but they don't, currently.
#Im not benchmarked.
#(direct_object=[avatar], verb="am", field="benchmarked", negated_verb="1")
#Im benchmarked.
#(direct_object=[avatar], verb="am", field="benchmarked")
I am benchmarked.
(direct_object=[avatar], verb="am", field="benchmarked")
the ball's foo is "bar"
(direct_object=[ball], verb="is", field="foo", quote="bar")
ball's foo is "bar".
(direct_object=[ball], verb="is", field="foo", quote="bar")
ball foo is "bar".
(direct_object=[ball], verb="is", field="foo", quote="bar")
the ball's friend is the box
(direct_object=[ball], verb="is", field="friend", indirect_object=[box])
the ball's foo_method is mode 644
(direct_object=[ball], verb="is", field="foo_method", metadata="mode", number="644")
the ball's second friend is the box
(direct_object=[ball], verb="is", field="friend", indirect_object=[box], number="2")
the ball's 5th alias is "fred"
(direct_object=[ball], verb="is", field="alias", number="5", quote="fred")
the ball's name is "bob"
(direct_object=[ball], verb="is", field="name", quote="bob")
# used by signal
signal ball with nine
(verb="signal", direct_object=[ball], number="9")
Signal ball with 15.
(verb="signal", direct_object=[ball], number="15")
Signal the ball with 15.
(verb="signal", direct_object=[ball], number="15")
signal ball nine
(verb="signal", direct_object=[ball], number="9")
signal ball "foo_method" with nine
(verb="signal", direct_object=[ball], quote="foo_method", number="9")
Signal ball "foo_method" with 15.
(verb="signal", direct_object=[ball], quote="foo_method", number="15")
Signal the ball "foo_method" with 15.
(verb="signal", direct_object=[ball], quote="foo_method", number="15")
signal ball "foo_method" nine
(verb="signal", direct_object=[ball], quote="foo_method", number="9")
# final miscellaney
dial 911 on the phone
(verb="dial", number="911", do_preposition="on", direct_object=[phone])
signal fifteen to the ball
(verb="signal", number="15", do_preposition="to", direct_object=[ball])
call me "fred"
(verb="call", direct_object=[avatar], quote="fred")
call me "fred".
(verb="call", direct_object=[avatar], quote="fred")
call me "fred"
(verb="call", direct_object=[avatar], quote="fred")
dig "up" to "treehouse"
(verb="dig", quote="up", io_preposition="to", quote2="treehouse")
# oh, and field setting imprerative
Set my name to "fred".
(verb="set", direct_object=[avatar], field="name", quote="fred")
set my name to "fred"
(verb="set", direct_object=[avatar], field="name", quote="fred")
# a little ambiguity here...
set my name to "fred.
(verb="set", direct_object=[avatar], field="name", quote="fred.")
set the ball's description as "A ball. Round looking."
(verb="set", direct_object=[ball], field="description", quote="A ball. Round looking.")
set the ball's neighbor to the box
(verb="set", direct_object=[ball], field="neighbor", indirect_object=[box])
set the ball's eleventh alias as "turnip"
(verb="set", direct_object=[ball], number="11", field="alias", quote="turnip")
# eval with language
eval "echo rm -rf /" with shell
(verb="eval", quote="echo rm -rf /", io_preposition="with", field="shell")
eval {!!@@@@{{{{{{{{!!!!!!@$$$}}}}@!*#*#*#*@*#)#@(@EJdljLDKJLDK} using brainfuck
(verb="eval", quote="!!@@@@{{{{{{{{!!!!!!@$$$}}}}@!*#*#*#*@*#)#@(@EJdljLDKJLDK", io_preposition="using", field="brainfuck")
eval {print "oh no!"} using perl
(verb="eval", quote="print "oh no!"", io_preposition="using", field="perl")
# Regressions and easy mistakes.
# this was at one point accidentially parsed as a declaration
show here's fields
(verb="show", direct_object=[room], field="fields")
# make sure this is not parsed with the "then" as a field.
show ball then drop ball
(verb="show", direct_object=[ball]), (verb="drop", direct_object=[ball])
show the ball's name, then drop the ball
(verb="show", direct_object=[ball], field="name"), (verb="drop", direct_object=[ball])
show the ball's name; then drop the ball
(verb="show", direct_object=[ball], field="name"), (verb="drop", direct_object=[ball])
Show the ball's name. Drop the ball.
(verb="show", direct_object=[ball], field="name"), (verb="drop", direct_object=[ball])
# TODO: 
#       - sentences with multiple direct and indirect objects
#       - pronouns that expand to multiple objects
#       - compound sentences; all of the above can be compound,
#         and it often breaks..
#       - look through the rest of the parts of speech, for special cases
#         and odd things to test
#       - read through changelog and add regression tests
