Coloration syntaxique

Description

fichier d'entree : deux fichiers textes, la description de la bnf de la grammaire et le code a analyser
fichier de sortie : un fichier HTML ou le texte du code est colorie

ce programme permet de colorier des codes sources qui sont codes suivant des grammaires decrites par des BNF

voici la syntaxe de mes BNF:
pour definir une expression :
.expr = suite_de_symboles | suite_de_symboles | suite_de_symboles ...;

ensuite une suite de symboles est soit une intervalle ['a','z'] soit du texte "hello world" soit une expression .expr
attention ona le droit d'utiliser des definitions recursives, seulement cela ne doit pas etre la premiere
de la suite de symbole
par exemple les entiers peuvents etre definis ainsi:

.chiffre = ['0','9'];
.entier = .chiffre | .chiffre .entier;

et non par .entier = .chiffre | .entier .chiffre;

ensuite il y a deux extensions a cette notation :
les # qui permetten de repeter autant que l'on souhaite un symbole
donc on peut reecire la definition :
.entier = .chiffre # .chiffre;

et les symboles {} qui representent le symbole optionnel :
.toto = {"a"} # "x";
.toto sont les expressions de la forme :
"" "x" "xx" "xxx" ... et "a" "ax" "axx" ...

bref tous ceci permet de decrire assez rapidement des "petits" langages
en exemple un petit langage ou l'on peut definir des fonctions avec
quelques instructions (return, if, declaraction de variable, appels de fonctions...)

le coloriage s'effectue par expression, on peut associe a une expression une couleur
avec une priorite : .expr RGB(255,0,0) %3 = ...;
la couleur est rouge avec la priorite 3, on colorie toujours avec la couleur courante
le plus prioritaire

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.