Dernière modification : Dec 08 , 2024
Dernière modification : Dec 08 , 2024

Pré-requis

L'environnement ANTLR doit avoir été installé.

  • Créer un projet Eclipse Java
  • Créer un fichier de grammaire
  • Création d'un fichier Calc.g4

Motif analysé

La grammaire doit pouvoir parser les motifs suivants :

expr = prim
    | expr ‘+’ prim
    | expr ‘-’ prim
    | expr ‘*’ prim
prim = num
    | id
    | ‘(’ expr ‘)’

Creation des règles de lexing

Identifier les tokens nécessaires et produisez les règles correspondantes.

Analyseur syntaxique

Créer les règles nécessaires pour parser les motifs.

Astuce, il est possible de définir le package du code génré en utilisant :

@header {
    package hello;
}

et pour le lexer :

@lexer::header {package org.xmlcml.cml.converters.antlr;}

Tester la grammaire

Ecrire un test unitaire pour vérifier la grammaire, voici un template pour vous aider :

// create a CharStream that reads from standard input
ANTLRInputStream input = new ANTLRInputStream(System.in);
// create a lexer that feeds off of input CharStream
ArrayInitLexer lexer = new ArrayInitLexer(input);
// create a buffer of tokens pulled from the lexer
CommonTokenStream tokens = new CommonTokenStream(lexer);
// create a parser that feeds off the tokens buffer
ArrayInitParser parser = new ArrayInitParser(tokens);
}
}
ParseTree tree = parser.init(); // begin parsing at init rule
System.out.println(tree.toStringTree(parser)); // print LISP-style tree

Ecrire un test unitaire avec une chaine invalide, vérifier ce qu'elle produit, comment détecter l'erreur ?