# La classe Parle\Lexer

(PECL parle >= 0.5.1)

## Introduction

Classe d'analyse lexicale à état unique. Les lexèmes peuvent être définis à la volée. Si l'instance de lexer particulière est destinée à être utilisée avec Parle\Parser, les identifiants de jetons doivent être pris à partir de là. Sinon, des identifiants de jetons arbitraires peuvent être fournis. Ce lexer peut offrir un certain avantage de performance par rapport à Parle\RLexer, s'il n'y a pas besoin de plusieurs états. Il est à noter que Parle\RParser n'est pas compatible avec ce lexer.

## Synopsis de la classe

class Parle\Lexer {
/* Constantes */
const int ICASE = 1;
const int DOT_NOT_LF = 2;
const int DOT_NOT_CRLF = 4;
const int SKIP_WS = 8;
const int MATCH_ZERO_LEN = 16;
/* Propriétés */
public bool $bol = `false`;
public int $flags = 0;
public int $state = 0;
public int $marker = 0;
public int $cursor = 0;
/* Méthodes */
public advance(): void
public build(): void
public callout(int `$id`, callable `$callback`): void
public consume(string `$data`): void
public dump(): void
public getToken(): Parle\Token
public insertMacro(string `$name`, string `$regex`): void
public push(string `$regex`, int `$id`): void
public reset(int `$pos`): void
}

## Constantes pré-définies

`Parle\Lexer::ICASE`

`Parle\Lexer::DOT_NOT_LF`

`Parle\Lexer::DOT_NOT_CRLF`

`Parle\Lexer::SKIP_WS`

`Parle\Lexer::MATCH_ZERO_LEN`

## Propriétés

bol

  Début de l'indicateur d'entrée.

flags

  Drapeaux du lexer.

state

  Etat actuel du lexer, en lecture seule.

marker

  Position de la dernière correspondance de jeton, en lecture seule.

cursor

  Décalage d'entrée actuel, en lecture seule.

## Sommaire

- Parle\Lexer::advance — Avance à la règle suivante du lexer
- Parle\Lexer::build — Finalise l'ensemble de règles du lexer
- Parle\Lexer::callout — Définit une fonction de rappel de jeton
- Parle\Lexer::consume — Passe les données pour le traitement
- Parle\Lexer::dump — Affiche la machine d'état
- Parle\Lexer::getToken — Renvoie le jeton actuel
- Parle\Lexer::insertMacro — Insère une macro regex
- Parle\Lexer::push — Ajoute une règle d'analyse
- Parle\Lexer::reset — Réinitialise l'analyseur lexical