Ik ben bezig mezelf ANTLR te leren, en dat gaat tot dusver heel erg goed. Nu zit ik echter met een probleem. Stel, ik heb het volgende in m'n grammar-file staan:
Zoals je ziet parsed de onderste treewalk-rule alleen maar de eerste 'expr' in de parameterList (die er uiteindelijk dus zo uitziet : (1,2,3,4,5) ). Nu krijg ik alleen maar een lijst met alleen een '1', terug. Hoe zorg ik ervoor dat de anderen ook worden geAdd aan de lijst?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| class ExpressionParser extends Parser;
/* knip */
funcExpr : FUNCNAME LPAREN! parameterList RPAREN!;
protected parameterList: ((INT COMMA)* INT);
/* knip*/
class ExpressionLexer extends Lexer;
/* hele zooi tokens */
class ExpressionTreeWalker extends TreeParser;
expr returns [double r] { double a,b; r=0; ExpressionParameterList pl; }:
/* hele zooi rules voor expr */
;
parameterList returns [ExpressionParameterList l] {double a; }:
(a=expr) {
ExpressionVariable v(a);
l.Add(v);
}; |
Zoals je ziet parsed de onderste treewalk-rule alleen maar de eerste 'expr' in de parameterList (die er uiteindelijk dus zo uitziet : (1,2,3,4,5) ). Nu krijg ik alleen maar een lijst met alleen een '1', terug. Hoe zorg ik ervoor dat de anderen ook worden geAdd aan de lijst?