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: /[EMAIL PROTECTED]/ #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
[EMAIL PROTECTED] 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 "/[EMAIL PROTECTED]/" 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
[EMAIL PROTECTED] 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 "/[EMAIL PROTECTED]/" 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