Ik ben een applicatie aan het maken voor mijn opleiding. Dat moet een parser worden voor een bepaalde kennisdatabase. Deze code heb ik gebruikt om mijn parser te testen. Voor de volledigheid dit is een stukje code die een fuzzy logic set beschrijft:
Het bestand lees ik in door met java een bestand door te laten browsen naar een file en vervolgens als inputstream te sturen naar de lexer. Maar het wil ik niet werken. Ik blijf steeds dezelfde error krijgen:
Ik vermoede eerst dat het aan het inlezen ligt. Maar als ik token voor token af laat drukken op hetscherm laat hij de volledige inhoud van het bestand op het scherm zien.
Misschien is het wel een heel simpel probleem maar met behulp van de documentatie op Antlr en google kan ik er maar niet uitkomen.
Dit is de BNF code
Ik vermoed dat ik een fout maak in de structuur van mijn bestand. Op zich een heel simpele structuur! Wie kan mij verder helpen?
code:
1
2
3
4
5
6
7
| KB
UNIVERSE flux
SET little 0 0 0 8 SETEND
SET normal 0 8 8 16 SETEND
SET much 8 16 16 16 SETEND
UNIVERSEEND
KBEND |
Het bestand lees ik in door met java een bestand door te laten browsen naar een file en vervolgens als inputstream te sturen naar de lexer. Maar het wil ik niet werken. Ik blijf steeds dezelfde error krijgen:
code:
1
| line 1:1: expecting "KB", found 'K' |
Ik vermoede eerst dat het aan het inlezen ligt. Maar als ik token voor token af laat drukken op hetscherm laat hij de volledige inhoud van het bestand op het scherm zien.
Misschien is het wel een heel simpel probleem maar met behulp van de documentatie op Antlr en google kan ik er maar niet uitkomen.
Dit is de BNF code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
| class BNFparser extends Parser;
knowledgeBase
: "KB"
universeList
"KBEND"
;
universeList
: universe (universe)*
;
universe
: "UNIVERSE"
universeName
setList
"UNIVERSEEND"
;
setList
: set (set)*
;
set
: "SET"
setName
x1
x2
x3
x4
"SETEND"
;
universeName
: name
;
setName
: name
;
x1
: n:DIGIT
{ System.out.println("x1: "+n.getText()+"/n"); }
;
x2
: n:DIGIT
{ System.out.println("x2: "+n.getText()+"/n"); }
;
x3
: n:DIGIT
{ System.out.println("x3: "+n.getText()+"/n"); }
;
x4
: n:DIGIT
{ System.out.println("x4: "+n.getText()+"/n"); }
;
name
: LETTER
( LETTER
| DIGIT )
;
class BNFlexer extends Lexer;
LETTER
: ('a'..'z'|'A'..'Z')
;
DIGIT
: ('0'..'9')
; |
Ik vermoed dat ik een fout maak in de structuur van mijn bestand. Op zich een heel simpele structuur! Wie kan mij verder helpen?
http://hawvie.deviantart.com/