http://qs321.pair.com?node_id=205997


in reply to Re: Parsing CCL (Common Command Language) commands
in thread Parsing CCL (Common Command Language) commands

Just keep in mind that Parse::RecDescent is painfully slow for anything beyond a toy. It's not for nothing that Damian Conway is planning on writing a Parse::FastDescent.

In the meantime, you'll get good mileage out of Parse::Yapp, which basically redoes yacc(1) in Perl.


print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'
  • Comment on Re:x2 Parsing CCL (Common Command Language) commands

Replies are listed 'Best First'.
Re: Re:x2 Parsing CCL (Common Command Language) commands
by e_bachmann (Novice) on Oct 18, 2002 at 09:50 UTC
    Thank you for alle the surgestions!

    print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'
    This REALLY says all about my relations to parsers! :-(

    I've gone for the YAPP and taken the Calp.yp example and replaced the grammer with the CCL grammer (leaving out the "Set" statement for now). Compiled it using:

    yapp -v myParser.yp
    with one message:
    1 shift/reduce conflict
    Then I've written a test:
    use MyParser; $parser=new MyParser(); $value=$parser->YYParse(yylex => \&lexer_sub, yyerror => \&error_sub +); $nberr=$parser->YYNberr(); $parser->YYData->{DATA}= [ 'a and ( b or c)' ]; $data=$parser->YYData->{DATA}[0];
    All this gives is a:
    Syntax error. Can't locate object method "new" via package "MyParser" (perhaps you f +orgot to l oad "MyParser"?) at myparser.pl line 2, <STDIN> line 1.
    • How do I really activate this parser?
    • How do I add my functions to process the searching?
    "If there are two or more ways to do something and one of them can lead to a disaster, then one or more persons will do it"
    Edgar A. Murphy, Captain in U.S. Air Force (1949)