Her er fejlen: [javacc] Error: Line 383, Column 1: Left recursion detected: "Expression... --> Expression2... --> Expression3... --> Expression..."
(bemærk at linietallet ikke passer på javacc-filen men det output der kommer, og derfor kan det ikke bruges).
Mit problem er at jeg fra Expression() kan tage og ramme Expression() igen og derved få "left recursion". Hvis der er et hoved som er super god til at fjerne sådan noget ville jeg bleve meget glad. Synes jeg har googlet, og har da også fundet en masse regler, men det bliver jeg ikke meget mere klog på ud over at man skal lave nogle andre produktionsregler.
Det er din syntax der ikke er eentydig, eller også skal implementeres på en anden måde
Som den er vil du uvægerligt få en uendelig løkke der hvor compileren når den forventer en expression vil kalde igennem din daisychain og så starte forfra med at forvente en expression, osv osv. Det må ikke ske.
Det er ikke JavaCC der er noget galt med, men den syntax du prøver at implementere.
Hvis du har du mulighed for at vise os den her (fx skrevet i BNF format) skal der nok være mange der kan pege på en alternativ udformning af syntaksen så du slipper af med den venstrerekursion.
Jeg har godt set at det er grammaren der er noget galt med, men kan ikke lige løse det. Jeg har taget udgangspunkt i Java Language Specification til 1.5 (den man kan få med JavaCC). Så har jeg fjernet en smule for at tilpasse det til det jeg skal bruge. De skriver selv at det ikke er en LL(1) grammar, men derfor kunne det godt være en som kunne overskue det.
BNF'en fremgår vel af ovenstående kode-stump (har ikke lige en BNF da det er fra JLS)?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.