Bonjour,

Voici une grammaire antlr:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
program	:	PROGRAM i=id PV d=decls  c=code 
		-> program(id={$i.st},decls={$d.st},code={$c.st})
	;
 
decls	:	DECL_VARIABLES  DP  (d+=decl )+
		-> decls(decls={$d})
	;
 
decl	:	label=id DP (t=T_NUMBER|t=T_TEXT|t=T_BOOL) PV
		-> decl(id={$label.st},type={$t.text},typepos={$t.pos},typeline={$t.line})
	;
 
code	:	BEGIN (inst+=instruction)+ END PV?
		-> code(insts={$inst})
	;
voici une source que parse cette grammaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
programme hello;
variables:
a : booleen;
b : booleen;
c : booleen;
debut
	a := 1!=1 or ( 1=1 and 1=1+2);
	b := 1=1 and 1!=1;
et voici l'erreur que j'obtiens

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
     [java] line 3:0 required (...)+ loop did not match anything at input 'a'
     [java] line 7:1 required (...)+ loop did not match anything at input 'a'
Je ne vois pas l'erreur dans ma grammaire ou mon code.

Merci de votre aide.