NAME

Parse::LexEvent - Générateur d'analyseurs lexicaux événementiels (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 génère des analyseurs lexicaux à la manière de Parse::Lex, mais les analyseurs générés émettent un événement à l'issue de la reconnaissance de chacun des tokens. Cet événement correspond à l'appel d'une procédure qui porte le nom du token. Il est possible de donner un nom différent à cette procédure en utilisant le paramètre Handler lors de la définition d'un token.

Une application utilisatrice de Parse::LexEvent doit définir les procédures requises. Ces procédures reçoivent l'objet token en premier paramètre et la chaîne de caractères reconnue en second.

Parse::LexEvent hérite de Parse::ALex et possède toutes les méthodes décrites dans la documentation de la classe Parse::Lex à l'exception des méthodes analyze(), every() next(), et nextis().

Methodes

parse()

Cette méthode lance l'analyse des données spécifiées par from().

EXAMPLES

cparser.pl - Cet analyseur reconnaît trois types de structure : des commentaires C ou C++, des chaînes entre guillemets et le reste. Il emet un événement spécifique à chacune. On peut l'utiliser, par exemple, pour analyser des programmes C, C++ ou Javascript.

SEE ALSO

Parse::Lex, Parse::Token.

AUTHOR

Philippe Verdret.

COPYRIGHT

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.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 3:

Non-ASCII character seen before =encoding in 'Générateur'. Assuming CP1252