Bonjour,

Je suis en train de créer un nouveau langage (!)
J'ai fait la grammaire (que j'ai ensuite programmé sous javacc), ca semble marcher. Mais comme je ne suis pas du tout un expert du domaine (je me suis formé via des tutoriaux, le dragon compiler et quelques souvenir de DEA), j'aimerais des avis...

Voyez-vous des choses mal faites, ou à améliorer dans ma grammaire ? Des truc qu'on faisait comme ca il y a 20 ans, mais plus du tout maintenant ?

:-)


1 Définition des token

1.1 Expressions régulières
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
letterMaj		[A-Z]
letterMin		[a-z]
letter			letterMaj | letterMin
digit			[0_9]
digit_not_nul		[1_9]
other			é | è | ç | à | ê | ù               // on complètera
ascii			letter |digit | other
1.2 Types
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
LOGICAL		TRUE | FALSE
INTEGER		("-"|"+")? (digitNotNul digit* | "0")
NUMERIC		INTEGER "." digit+ ("E" INTEGER)?
CHARACTER	QUOTE1 ascii* QUOTE1 | QUOTE2 ascii* QUOTE2
1.3 Les mots clefs du langage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SET		set
GET		get
TYPE		type
IS_EQUAL	isEqual

1.4 Operateurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
PLUS		+
MULT		*
AND		AND
OR		OR
1.5 Identifiants
Code : Sélectionner tout - Visualiser dans une fenêtre à part
IDENTIFIANT	letter (letter|digit)*
1.6 Constantes

1.7 Ponctuation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
COMMA		,
OPEN_PAR	(
CLOSE_PAR	)
DOT		.
QUOTE1		'
QUOTE2		"
2 Règles syntaxiques
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
prog 		-> stmt*
stmt 		-> <IDENTIFIANT> <DOT> method <OPEN_PAR> args? <CLOSE_PAR> 
method		-> <SET> | <GET> | <TYPE> | <IS_EQUAL>
args 		-> expression (<COMMA> expression)* 
expression 	-> expression2 (operateur expression2)*
expression2	-> <OPEN_PAR> expression <CLOSE_PAR> | value
value 		-> <LOGICAL> | <INTEGER> | <NUMERIC> | <CHARACTER> | <IDENTIFIANT>