Token.fr


NAME

Parse::Token - Classe difinissant les tokens utilisis par Parse::Lex.pm (1.18).


SYNOPSIS

require 5.000; use Parse::Lex; @token = qw( ADDOP [-+] INTEGER [1-9][0-9]* ); $lexer = Parse::Lex->new(@token); $lexer->from(\*DATA); $content = $INTEGER->next; if ($INTEGER->status) { print "$content\n"; } $content = $ADDOP->next; if ($ADDOP->status) { print "$content\n"; } if ($INTEGER->isnext(\$content)) { print "$content\n"; } __END__ 1+2


DESCRIPTION

Le package Token permet de difinir les lexhmes utilisis par Parse::Lex. La mithode Lex::new du package Parse::Lex crie indirectement un objet de type Token par lexhme ` reconnantre. Les mithodes next ou isnext du package Token permettent d'interfacer aisiment l'analyseur lexical avec un analyseur syntaxique.

Le package Parse::Token n'est pas destini ` jtre directement utilisi. L'inclusion de ce package se fait par le biais d'un use Parse::Lex.

Mithodes

get EXPR
get permet d'obtenir la valeur de l'attribut risultant de l'ivaluation d'EXPR. Il est igalement possible d'utiliser le nom de l'attribut comme nom de mithode.

getstring
Retourne la channe de caracthres reconnue au moyen de l'objet Token.

Synonyme de la mithode text() .

isnext EXPR

isnext
Retourne le statut du token. La channe consommie est disponible dans EXPR s'il s'agit d'une rifirence ` un scalaire.

mean
Retourne la fonction anonyme difinie dans l'objet Token.

name
Retourne le nom symbolique de l'objet Token.

next
Active la recherche du lexhme difini par l'expression rigulihre contenue dans l'objet. Si ce lexhme est reconnu sur le flot de caracthre ` analyser alors next retourne la channe trouvie et met le statut de l'objet ` vrai.

new SYMBOL_NAME, REGEXP, SUB
Crie un objet de type Token. Les arguments de la mithode new sont dans l'ordre : un nom symbolique, une expression rigulihre et une fonction anonyme.

REGEXP est soit une expression rigulihre simple, soit une rifirence ` un tableau contenant de une ` trois expressions rigulihres. Dans ce dernier cas le lexhme peut jtre riparti sur plusieurs enregistrements. Ce peut jtre par exemple une channe de caracthres dilimitie par des guillemets, des commentaires d'un programme C, etc.

Les expressions rigulihres sont utilisies pour reconnantre :

1. le dibut du lexhme,

2. le ``corps'' du lexhme, si cette seconde expression est absente Parse::Lex utilise ``(?:.*?)'',

3. la fin du lexhme, si cette dernihre expression est absente on utilise la premihre. (Attention ! La fin du lexhme ne peut jtre ` cheval sur plusieurs enregistrements).

Exemple.

qw(STRING), [qw(" (?:[^"\\\\]+|\\\\(?:.|\n))* ")],

Les expressions rigulihres peuvent reconnantre des channes multilignes dilimities par des guillemets, sachant que le contre-oblique est utilisi pour littiraliser les guillements qui apparaissent au sein de la channe. Remarquez le quadruplement du contre-oblique.

Voici une variante de l'exemple pricident qui utilise l'option s pour inclure la nouvelle-ligne dans les caracthres reconnus par ``.'' :

qw(STRING), [qw(" (?s)(?:[^"\\\\]+|\\\\.)* ")],

La fonction anonyme est exicutie au moment ou le lexhme est reconnu par l'analyseur lexical. Cette fonction posshde deux arguments : $_[0] contient l'objet Token, $_[1] la channe reconnue par l'expression rigulihre. Le scalaire retourni par la fonction anonyme difinit la channe de caracthres mimorisie dans l'objet Token.

Dans la fonction anonyme vous pouvez utiliser les variables positionnelles $1, $2,... sachant que $1 contient la channe reconnue par l'expression rigulihre de l'objet Token.

regexp
Retourne l'expression rigulihre difinie dans l'objet Token.

set HASH
Permet de dicorer un objet Token au moyen d'une liste d'attribut-valeurs.

Un nom d'attribut peut jtre utilisi comme nom de mithode.

setstring EXPR
La valeur de EXPR difinit la channe de caracthres associie au lexhme.

Synonyme de la mithode text(EXPR).

status EXPR

status
Indique si la dernihre recherche du lexhme a riussie ou ichouie. status EXPR permet de forcer le statut ` la valeur dinotie par EXPR.

text EXPR

text
text Retourne la channe de caracthres reconnue au moyen de l'objet Token. La valeur de EXPR difinit la channe de caracthres associie au lexhme.

trace OUTPUT

trace
Mithode de classe qui active/disactive une trace de l'analyse lexicale.

OUTPUT peut jtre un fichier ou une rifirence ` un filehandle vers laquelle la trace va jtre dirigie.


GESTION DES ERREURS

Pour traiter les cas de non reconnaissance de lexhme vous pouvez difinir un objet Token spicifique. Si la recherche de ce token riussie il est alors possible d'appeler une fonction divolue au traitement des erreurs.


AUTEUR

Philippe Verdret.


AVERTISSEMENT

Je considhre que la prisente version de Token.pm/Lex.pm est expirimentale. Ce module peut notablement ivoluer. J'aimerais recevoir vos remarques et vos suggestions.


REFERENCES

Friedl, J.E.F. Mastering Regular Expressions. O'Reilly & Associates 1996.

Mason, T & Brown, D. - Lex & Yacc. O'Reilly & Associates, Inc. 1990.


COPYRIGHT

Copyright (c) 1995-1997 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.