Parse::LexEvent.3pm

Langue: en

Autres versions - même langue

Version: 2010-03-26 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

"Parse::LexEvent" - Generator of event-oriented lexical analyzers (1.00 ALPHA)

SYNOPSIS

   use Parse::LexEvent;
 
   sub string {
     print $_[0]->name, ": $_[1]\n";
   }
   sub comment {
     print $_[0]->name, ": $_[1]\n";
   }
   sub remainder {
     print $_[0]->name, ": $_[1]\n";
   }
 
   $lexer = Parse::LexEvent->new()->configure(
        From => \*DATA,
        Tokens =>
          [
           Type => 'Simple', Name => 'ccomment', Handler => 'comment',
                Regex => '//.*\n',
           Type => 'Delimited', Name => 'comment', Handler => 'comment',
                Start => '/[*]', End => '[*]/',
           Type => 'Quoted', Name => 'squotes', Handler => 'string', Quote => qq!\'!,
           Type => 'Quoted', Name => 'dquotes', Handler => 'string', Quote => qq!\"!,
           Type => 'Simple', Name => 'remainder',
                Regex => '(?s:[^/\'\"]+)', ReadMore => 1,
          ]
       )->parse();
   __END__
   /*
     C comment
   */
   // C++ comment
   var d = "string in double quotes";
   var s = 'string in single quotes';
   var i = 10;
   var y = 100;
 
 

DESCRIPTION

"Parse::LexEvent" generates lexical analyzers in the fashion of "Parse::Lex", but the generated analyzers emit an event at the finish of recognition of each token. This event corresponds to the call of a procedure whose name is that of the token. It is possible to give a different name to this procedure by making use of the "Handler" parameter when defining a token.

An application using "Parse::LexEvent" must define the required procedures. These procedures take the token object as first argument and the recognized character string as the second.

"Parse::LexEvent" inherits from "Parse::ALex" and possesses all the methods described in the documentation of the "Parse::Lex" class, except for the methods "analyze()", "every()" "next()", and "nextis()".

Methods

parse()
This method runs the analysis of data specified by "from()".

EXAMPLES

cparser.pl - This analyzer recognizes three types of structures: C ou C++ comments, strings within quotation marks, and the rest. It emits an event specific to each. You can use it, for example, to analyze C, C++ or Javascript programs.

SEE ALSO

"Parse::Lex", "Parse::Token".

AUTHOR

Philippe Verdret. Copyright (c) 1999 Philippe Verdret. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.