RE: Very odd parsing problem
[email protected] (Aaron Dalton) Wed, 17 Dec 2003 07:20:49 -0700 (MST)
| Newsgroups | perl.recdescent |
|---|---|
| Message-ID | <[email protected]> |
Thank you, Yves. I am only a hobby programmer and am always grateful for
style tips. I made the changes you suggested but I am still having
problems. I am attaching the trace output from both the correct and
incorrect parses. I am also including the grammar below. I thank you
again for any help you can offer.
#CODE IN QUESTION
my $parser = Parse::RecDescent->new($grammar);
my $parsetree = $parser->orderset($bodytxt);
if (! defined $parsetree)
{die "Grammar parse failed!\n";}
else
{
use YAML;
print Dump($parsetree), "\n";
#IF I UNCOMMENT THE BELOW CODE THE PARSE FAILS
#
#use Process;
#my $process = Process->new();
#$process->processTree($parsetree);
#print $process->{results}, "\n";
}
#END CODE
#BEGIN GRAMMAR
<autotree>
orderset: order(s) { $return = $item[1] }
order:
'auth' callsign password |
'confirm' confirmationCode |
'fire' weaponID targetSpec |
'game' gameID |
'help' help_topic |
'join' gameID fleetID |
'register' callsign password email |
'thrust' thruster number |
'unregister' |
'vacation' number
callsign: /[A-Za-z][A-Za-z0-9_']+/
confirmationCode: /[A-Za-z0-9]+/
email: /\S+\@\S+/ #This is of course not the correct regex. The parser is
expected to do complete verification.
fleetID: number
gameID: number
help_topic: /[A-Za-z0-9_]+/
hex: /\d+\.\d+/
number: /\-?[0-9]+/
password: /[A-Za-z0-9_-]+/
ship: callsign '.' /[A-Za-z0-9]+/
targetSpec: hex | ship
thruster: 'ne' | 'se' | 'sw' | 'nw' | 'spin' | 's' | 'n'
weaponID: number
eofile: /^\Z/
#END GRAMMAR
--
Aaron Dalton
[email protected]
http://aaron.finch.st
trace_correct.txt
(text/plain, 17 KB)
[aaron@chariss hv]$ ./tree.pl
Parse::RecDescent: Treating "<autotree>" as an autotree marker
Parse::RecDescent: Treating "orderset:" as a rule declaration
Parse::RecDescent: Treating "order(s)" as a one-or-more subrule match
Parse::RecDescent: Treating "{ $return = $item[1] }" as an action
Parse::RecDescent: Treating "order:" as a rule declaration
Parse::RecDescent: Treating "auth" as a literal terminal
Parse::RecDescent: Treating "callsign" as a subrule match
Parse::RecDescent: Treating "password" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "confirm" as a literal terminal
Parse::RecDescent: Treating "confirmationCode" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "fire" as a literal terminal
Parse::RecDescent: Treating "weaponID" as a subrule match
Parse::RecDescent: Treating "targetSpec" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "game" as a literal terminal
Parse::RecDescent: Treating "gameID" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "help" as a literal terminal
Parse::RecDescent: Treating "help_topic" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "join" as a literal terminal
Parse::RecDescent: Treating "gameID" as a subrule match
Parse::RecDescent: Treating "fleetID" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "register" as a literal terminal
Parse::RecDescent: Treating "callsign" as a subrule match
Parse::RecDescent: Treating "password" as a subrule match
Parse::RecDescent: Treating "email" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "thrust" as a literal terminal
Parse::RecDescent: Treating "thruster" as a subrule match
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "unregister" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "vacation" as a literal terminal
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "callsign:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z][A-Za-z0-9_']+/" as a /../ pattern
terminal
Parse::RecDescent: Treating "confirmationCode:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z0-9]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "email:" as a rule declaration
Parse::RecDescent: Treating "/\S+\@\S+/" as a /../ pattern terminal
Parse::RecDescent: Treating "#This is of course not the correct regex. The
parser is expected to do complete verification." as a
comment
Parse::RecDescent: Treating "fleetID:" as a rule declaration
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "gameID:" as a rule declaration
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "help_topic:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z0-9_]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "hex:" as a rule declaration
Parse::RecDescent: Treating "/\d+\.\d+/" as a /../ pattern terminal
Parse::RecDescent: Treating "number:" as a rule declaration
Parse::RecDescent: Treating "/\-?[0-9]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "password:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z0-9_-]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "ship:" as a rule declaration
Parse::RecDescent: Treating "callsign" as a subrule match
Parse::RecDescent: Treating "." as a literal terminal
Parse::RecDescent: Treating "/[A-Za-z0-9]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "targetSpec:" as a rule declaration
Parse::RecDescent: Treating "hex" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "ship" as a subrule match
Parse::RecDescent: Treating "thruster:" as a rule declaration
Parse::RecDescent: Treating "ne" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "se" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "sw" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "nw" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "spin" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "s" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "n" as a literal terminal
Parse::RecDescent: Treating "weaponID:" as a rule declaration
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "eofile:" as a rule declaration
Parse::RecDescent: Treating "/^\Z/" as a /../ pattern terminal
printing code (109351) to RD_TRACE
1| orderset |Trying rule: [orderset] |
1| orderset | |"thrust spin -1\nhelp
| | |thrust\n"
1| orderset |Trying production: [order] |
1| orderset |Trying repeated subrule: [order] |
2| order |Trying rule: [order] |
2| order |Trying production: ['auth' callsign |
| |password] |
2| order |Trying terminal: ['auth'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['confirm' |
| |confirmationCode] |
2| order |Trying terminal: ['confirm'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['fire' weaponID |
| |targetSpec] |
2| order |Trying terminal: ['fire'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['game' gameID] |
2| order |Trying terminal: ['game'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['help' help_topic]|
2| order |Trying terminal: ['help'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['join' gameID |
| |fleetID] |
2| order |Trying terminal: ['join'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['register' |
| |callsign password email] |
2| order |Trying terminal: ['register'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['thrust' thruster |
| |number] |
2| order |Trying terminal: ['thrust'] |
2| order |>>Matched terminal<< (return value: |
| |[thrust]) |
2| order | |" spin -1\nhelp thrust\n"
2| order |Trying subrule: [thruster] |
3| thruster |Trying rule: [thruster] |
3| thruster |Trying production: ['ne'] |
3| thruster |Trying terminal: ['ne'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['se'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['se'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['sw'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['sw'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['nw'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['nw'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['spin'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['spin'] |
3| thruster |>>Matched terminal<< (return value: |
| |[spin]) |
3| thruster | |" -1\nhelp thrust\n"
3| thruster |Trying action |
3| thruster |>>Matched action<< (return value: |
| |[thruster=HASH(0x841412c)]) |
3| thruster |>>Matched production: ['spin']<< |
3| thruster |>>Matched rule<< (return value: |
| |[thruster=HASH(0x841412c)]) |
3| thruster |(consumed: [ spin]) |
2| order |>>Matched subrule: [thruster]<< |
| |(return value: |
| |[thruster=HASH(0x841412c)] |
2| order |Trying subrule: [number] |
3| number |Trying rule: [number] |
3| number |Trying production: [/\-?[0-9]+/] |
3| number |Trying terminal: [/\-?[0-9]+/] |
3| number |>>Matched terminal<< (return value: [-|
| |1]) |
3| number | |"\nhelp thrust\n"
3| number |Trying action |
3| number |>>Matched action<< (return value: |
| |[number=HASH(0x815be64)]) |
3| number |>>Matched production: [/\-?[0-9]+/]<< |
3| number |>>Matched rule<< (return value: |
| |[number=HASH(0x815be64)]) |
3| number |(consumed: [ -1]) |
2| order |>>Matched subrule: [number]<< (return |
| |value: [number=HASH(0x815be64)] |
2| order |Trying action |
2| order |>>Matched action<< (return value: |
| |[order=HASH(0x8379f68)]) |
2| order |>>Matched production: ['thrust' |
| |thruster number]<< |
2| order |>>Matched rule<< (return value: |
| |[order=HASH(0x8379f68)]) |
2| order |(consumed: [thrust spin -1]) |
2| order |Trying rule: [order] |
2| order |Trying production: ['auth' callsign |
| |password] |
2| order |Trying terminal: ['auth'] |
2| order |<<Didn't match terminal>> |
2| order | |"help thrust\n"
2| order |Trying production: ['confirm' |
| |confirmationCode] |
2| order | |"\nhelp thrust\n"
2| order |Trying terminal: ['confirm'] |
2| order |<<Didn't match terminal>> |
2| order | |"help thrust\n"
2| order |Trying production: ['fire' weaponID |
| |targetSpec] |
2| order | |"\nhelp thrust\n"
2| order |Trying terminal: ['fire'] |
2| order |<<Didn't match terminal>> |
2| order | |"help thrust\n"
2| order |Trying production: ['game' gameID] |
2| order | |"\nhelp thrust\n"
2| order |Trying terminal: ['game'] |
2| order |<<Didn't match terminal>> |
2| order | |"help thrust\n"
2| order |Trying production: ['help' help_topic]|
2| order | |"\nhelp thrust\n"
2| order |Trying terminal: ['help'] |
2| order |>>Matched terminal<< (return value: |
| |[help]) |
2| order | |" thrust\n"
2| order |Trying subrule: [help_topic] |
3|help_topic|Trying rule: [help_topic] |
3|help_topic|Trying production: [/[A-Za-z0-9_]+/] |
3|help_topic|Trying terminal: [/[A-Za-z0-9_]+/] |
3|help_topic|>>Matched terminal<< (return value: |
| |[thrust]) |
3|help_topic| |"\n"
3|help_topic|Trying action |
3|help_topic|>>Matched action<< (return value: |
| |[help_topic=HASH(0x815bf24)]) |
3|help_topic|>>Matched production: [/[A-Za-z0- |
| |9_]+/]<< |
3|help_topic|>>Matched rule<< (return value: |
| |[help_topic=HASH(0x815bf24)]) |
3|help_topic|(consumed: [ thrust]) |
2| order |>>Matched subrule: [help_topic]<< |
| |(return value: |
| |[help_topic=HASH(0x815bf24)] |
2| order |Trying action |
2| order |>>Matched action<< (return value: |
| |[order=HASH(0x8413fa0)]) |
2| order |>>Matched production: ['help' |
| |help_topic]<< |
2| order |>>Matched rule<< (return value: |
| |[order=HASH(0x8413fa0)]) |
2| order |(consumed: [ help thrust]) |
2| order |Trying rule: [order] |
2| order |Trying production: ['auth' callsign |
| |password] |
2| order |Trying terminal: ['auth'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['confirm' |
| |confirmationCode] |
2| order |Trying terminal: ['confirm'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['fire' weaponID |
| |targetSpec] |
2| order |Trying terminal: ['fire'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['game' gameID] |
2| order |Trying terminal: ['game'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['help' help_topic]|
2| order |Trying terminal: ['help'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['join' gameID |
| |fleetID] |
2| order |Trying terminal: ['join'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['register' |
| |callsign password email] |
2| order |Trying terminal: ['register'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['thrust' thruster |
| |number] |
2| order |Trying terminal: ['thrust'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['unregister'] |
2| order |Trying terminal: ['unregister'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['vacation' number]|
2| order |Trying terminal: ['vacation'] |
2| order |<<Didn't match terminal>> |
2| order |<<Didn't match rule>> |
1| orderset |>>Matched repeated subrule: [order]<< |
| |(2 times) |
1| orderset |Trying action |
1| orderset |>>Matched action<< (return value: |
| |[ARRAY(0x84140e4)]) |
1| orderset |>>Matched production: [order]<< |
1| orderset |>>Matched rule<< (return value: |
| |[ARRAY(0x84140e4)]) |
1| orderset |(consumed: [thrust spin -1 help |
| |thrust]) |
--- #YAML:1.0
- !perl/order
__RULE__: order
__STRING1__: thrust
number: !perl/number
__VALUE__: -1
thruster: !perl/thruster
__VALUE__: spin
- !perl/order
__RULE__: order
__STRING1__: help
help_topic: !perl/help_topic
__VALUE__: thrust
trace_incorrect.txt
(text/plain, 13.7 KB)
[aaron@chariss hv]$ ./tree.pl
Parse::RecDescent: Treating "<autotree>" as an autotree marker
Parse::RecDescent: Treating "orderset:" as a rule declaration
Parse::RecDescent: Treating "order(s)" as a one-or-more subrule match
Parse::RecDescent: Treating "{ $return = $item[1] }" as an action
Parse::RecDescent: Treating "order:" as a rule declaration
Parse::RecDescent: Treating "auth" as a literal terminal
Parse::RecDescent: Treating "callsign" as a subrule match
Parse::RecDescent: Treating "password" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "confirm" as a literal terminal
Parse::RecDescent: Treating "confirmationCode" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "fire" as a literal terminal
Parse::RecDescent: Treating "weaponID" as a subrule match
Parse::RecDescent: Treating "targetSpec" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "game" as a literal terminal
Parse::RecDescent: Treating "gameID" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "help" as a literal terminal
Parse::RecDescent: Treating "help_topic" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "join" as a literal terminal
Parse::RecDescent: Treating "gameID" as a subrule match
Parse::RecDescent: Treating "fleetID" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "register" as a literal terminal
Parse::RecDescent: Treating "callsign" as a subrule match
Parse::RecDescent: Treating "password" as a subrule match
Parse::RecDescent: Treating "email" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "thrust" as a literal terminal
Parse::RecDescent: Treating "thruster" as a subrule match
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "unregister" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "vacation" as a literal terminal
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "callsign:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z][A-Za-z0-9_']+/" as a /../ pattern
terminal
Parse::RecDescent: Treating "confirmationCode:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z0-9]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "email:" as a rule declaration
Parse::RecDescent: Treating "/\S+\@\S+/" as a /../ pattern terminal
Parse::RecDescent: Treating "#This is of course not the correct regex. The
parser is expected to do complete verification." as a
comment
Parse::RecDescent: Treating "fleetID:" as a rule declaration
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "gameID:" as a rule declaration
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "help_topic:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z0-9_]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "hex:" as a rule declaration
Parse::RecDescent: Treating "/\d+\.\d+/" as a /../ pattern terminal
Parse::RecDescent: Treating "number:" as a rule declaration
Parse::RecDescent: Treating "/\-?[0-9]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "password:" as a rule declaration
Parse::RecDescent: Treating "/[A-Za-z0-9_-]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "ship:" as a rule declaration
Parse::RecDescent: Treating "callsign" as a subrule match
Parse::RecDescent: Treating "." as a literal terminal
Parse::RecDescent: Treating "/[A-Za-z0-9]+/" as a /../ pattern terminal
Parse::RecDescent: Treating "targetSpec:" as a rule declaration
Parse::RecDescent: Treating "hex" as a subrule match
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "ship" as a subrule match
Parse::RecDescent: Treating "thruster:" as a rule declaration
Parse::RecDescent: Treating "ne" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "se" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "sw" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "nw" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "spin" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "s" as a literal terminal
Parse::RecDescent: Treating "|" as a new production
Parse::RecDescent: Treating "n" as a literal terminal
Parse::RecDescent: Treating "weaponID:" as a rule declaration
Parse::RecDescent: Treating "number" as a subrule match
Parse::RecDescent: Treating "eofile:" as a rule declaration
Parse::RecDescent: Treating "/^\Z/" as a /../ pattern terminal
printing code (109368) to RD_TRACE
1| orderset |Trying rule: [orderset] |
1| orderset | |"thrust spin -1\nhelp
| | |thrust\n"
1| orderset |Trying production: [order] |
1| orderset |Trying repeated subrule: [order] |
2| order |Trying rule: [order] |
2| order |Trying production: ['auth' callsign |
| |password] |
2| order |Trying terminal: ['auth'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['confirm' |
| |confirmationCode] |
2| order |Trying terminal: ['confirm'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['fire' weaponID |
| |targetSpec] |
2| order |Trying terminal: ['fire'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['game' gameID] |
2| order |Trying terminal: ['game'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['help' help_topic]|
2| order |Trying terminal: ['help'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['join' gameID |
| |fleetID] |
2| order |Trying terminal: ['join'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['register' |
| |callsign password email] |
2| order |Trying terminal: ['register'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['thrust' thruster |
| |number] |
2| order |Trying terminal: ['thrust'] |
2| order |>>Matched terminal<< (return value: |
| |[thrust]) |
2| order | |" spin -1\nhelp thrust\n"
2| order |Trying subrule: [thruster] |
3| thruster |Trying rule: [thruster] |
3| thruster |Trying production: ['ne'] |
3| thruster |Trying terminal: ['ne'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['se'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['se'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['sw'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['sw'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['nw'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['nw'] |
3| thruster |<<Didn't match terminal>> |
3| thruster | |"spin -1\nhelp thrust\n"
3| thruster |Trying production: ['spin'] |
3| thruster | |" spin -1\nhelp thrust\n"
3| thruster |Trying terminal: ['spin'] |
3| thruster |>>Matched terminal<< (return value: |
| |[spin]) |
3| thruster | |" -1\nhelp thrust\n"
3| thruster |Trying action |
3| thruster |>>Matched action<< (return value: |
| |[thruster=HASH(0x84b1390)]) |
3| thruster |>>Matched production: ['spin']<< |
3| thruster |>>Matched rule<< (return value: |
| |[thruster=HASH(0x84b1390)]) |
3| thruster |(consumed: [ spin]) |
2| order |>>Matched subrule: [thruster]<< |
| |(return value: |
| |[thruster=HASH(0x84b1390)] |
2| order |Trying subrule: [number] |
3| number |Trying rule: [number] |
3| number |Trying production: [/\-?[0-9]+/] |
3| number |Trying terminal: [/\-?[0-9]+/] |
3| number |>>Matched terminal<< (return value: [-|
| |1]) |
3| number | |"\nhelp thrust\n"
3| number |Trying action |
3| number |>>Matched action<< (return value: |
| |[number=HASH(0x84b1444)]) |
3| number |>>Matched production: [/\-?[0-9]+/]<< |
3| number |>>Matched rule<< (return value: |
| |[number=HASH(0x84b1444)]) |
3| number |(consumed: [ -1]) |
2| order |>>Matched subrule: [number]<< (return |
| |value: [number=HASH(0x84b1444)] |
2| order |Trying action |
2| order |>>Matched action<< (return value: |
| |[order=HASH(0x85404d4)]) |
2| order |>>Matched production: ['thrust' |
| |thruster number]<< |
2| order |>>Matched rule<< (return value: |
| |[order=HASH(0x85404d4)]) |
2| order |(consumed: [thrust spin -1]) |
2| order |Trying rule: [order] |
2| order |Trying production: ['auth' callsign |
| |password] |
2| order |Trying terminal: ['auth'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['confirm' |
| |confirmationCode] |
2| order |Trying terminal: ['confirm'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['fire' weaponID |
| |targetSpec] |
2| order |Trying terminal: ['fire'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['game' gameID] |
2| order |Trying terminal: ['game'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['help' help_topic]|
2| order |Trying terminal: ['help'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['join' gameID |
| |fleetID] |
2| order |Trying terminal: ['join'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['register' |
| |callsign password email] |
2| order |Trying terminal: ['register'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['thrust' thruster |
| |number] |
2| order |Trying terminal: ['thrust'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['unregister'] |
2| order |Trying terminal: ['unregister'] |
2| order |<<Didn't match terminal>> |
2| order |Trying production: ['vacation' number]|
2| order |Trying terminal: ['vacation'] |
2| order |<<Didn't match terminal>> |
2| order |<<Didn't match rule>> |
1| orderset |>>Matched repeated subrule: [order]<< |
| |(1 times) |
1| orderset |Trying action |
1| orderset |>>Matched action<< (return value: |
| |[ARRAY(0x84b12d0)]) |
1| orderset |>>Matched production: [order]<< |
1| orderset |>>Matched rule<< (return value: |
| |[ARRAY(0x84b12d0)]) |
1| orderset |(consumed: [thrust spin -1]) |
--- #YAML:1.0
- !perl/order
__RULE__: order
__STRING1__: thrust
number: !perl/number
__VALUE__: -1
thruster: !perl/thruster
__VALUE__: spin