Dernière modification : Dec 08 , 2024

Construire une grammaire et le formalisme

La composition d'une grammaire

Une grammaire est composée :

  • d'un ensemble de terminaux
  • d'un ensemble de nom-terminaux
  • un ensemble de règles exprimées sous la forme :=

Certaines règles peuvent être récursives :

VariableList := COMMA 'VariableList'

La récursivité peut être à gauche ou à droite en fonction de l'arbre que vous souhaitez produire.

Les règles avec une récursivité à gauche ne sont pas parsables par les analyseurs de type LL(k).

Attention certains langages de programmations ne peuvent pas être exprimés formellement parce que la reconnaissance de l'instruction est trop complexe.

En général, les langages "colonnés" posent des soucis aux générateurs de parsers à cause de cette notion de colonnes.

On appelle ce type de grammaire contextuelle en opposition aux grammaires plus simples "non contextuelles" qui ne dépendent que de l'analyse des règles de la grammaire.

Il existe une forme de notation standard pour les grammaires, la notion EBNF

Il existe plusieurs types d'algorithmes d'analyses syntaxiques :

  • DFA
  • PEG
  • LL(x)
  • LR(x)
  • LALR(x)

ANTLR 4 est un générateur de parser Adaptive LL(k).

la différence entre un parseur LL et LR dépend de la façon que le parseur choisit de "résoudre les non-terminaux".

  • LL : analyse descendante ;
  • LR : analyse montante.
    S → S + S
    S → 1
    S → a`

    1+1+a
    S+S+S ? on résout lequel S en premier ?

Construire une grammaire et le formalisme

Created by Sylvain Leroy


Documentation et resources

  1. Coursera
  2. Compiler Generators