# La classe Parle\Parser

(PECL parle >= 0.5.1)

## Introduction

Classe d'analyse syntaxique. Les règles peuvent être définies à la volée. Une fois finalisée, une instance de Parle\Lexer est requise pour fournir le flux de jetons.

## Synopsis de la classe

class Parle\Parser {
/* Constantes */
const int ACTION_ERROR = 0;
const int ACTION_SHIFT = 1;
const int ACTION_REDUCE = 2;
const int ACTION_GOTO = 3;
const int ACTION_ACCEPT = 4;
const int ERROR_SYNTAX = 0;
const int ERROR_NON_ASSOCIATIVE = 1;
const int ERROR_UNKNOWN_TOKEN = 2;
/* Propriétés */
public int $action = 0;
public int $reduceId = 0;
/* Méthodes */
public advance(): void
public build(): void
public consume(string `$data`, Parle\Lexer `$lexer`): void
public dump(): void
public errorInfo(): Parle\ErrorInfo
public left(string `$tok`): void
public nonassoc(string `$tok`): void
public precedence(string `$tok`): void
public push(string `$name`, string `$rule`): int
public reset(int `$tokenId` = ?): void
public right(string `$tok`): void
public sigil(int `$idx`): string
public sigilCount(): int
public sigilName(int `$idx`): string
public token(string `$tok`): void
public tokenId(string `$tok`): int
public trace(): string
public validate(string `$data`, Parle\Lexer `$lexer`): bool
}

## Constantes pré-définies

`Parle\Parser::ACTION_ERROR`

`Parle\Parser::ACTION_SHIFT`

`Parle\Parser::ACTION_REDUCE`

`Parle\Parser::ACTION_GOTO`

`Parle\Parser::ACTION_ACCEPT`

`Parle\Parser::ERROR_SYNTAX`

`Parle\Parser::ERROR_NON_ASSOCIATIVE`

`Parle\Parser::ERROR_UNKNOWN_TOKEN`

## Propriétés

action

  Les actions du parseur actuel qui correspondent à l'une des constantes de classe d'action, en lecture seule.

reduceId

  Les règles de grammaire id juste traitées dans l'action de réduction. La valeur correspond soit à un jeton, soit à un identifiant de production. En lecture seule.

## Sommaire

- Parle\Parser::advance — Traite la règle suivante de l'analyseur
- Parle\Parser::build — Finalise les règles de grammaire
- Parle\Parser::consume — Consomme les données pour le traitement
- Parle\Parser::dump — Affiche la grammaire
- Parle\Parser::errorInfo — Récupère les informations d'erreur
- Parle\Parser::left — Déclare un jeton avec une associativité à gauche
- Parle\Parser::nonassoc — Déclare un jeton sans associativité
- Parle\Parser::precedence — Déclare une règle de précédence
- Parle\Parser::push — Ajoute une règle de grammaire
- Parle\Parser::reset — Réinitialise l'état de l'analyseur
- Parle\Parser::right — Déclare un jeton avec une associativité à droite
- Parle\Parser::sigil — Récupère une partie correspondante d'une règle
- Parle\Parser::sigilCount — Nombre d'éléments dans la règle correspondante
- Parle\Parser::sigilName — Récupère un nom de règle ou de jeton
- Parle\Parser::token — Déclare un jeton
- Parle\Parser::tokenId — Renvoie l'identifiant du jeton
- Parle\Parser::trace — Trace l'opération de l'analyseur
- Parle\Parser::validate — Valide une entrée