Modifikasjoner av VTL-grammatikk
Bruke VTL-grammatikken
Trevas er avhengig av den formelle grammatikken til VTL uttrykt som EBNF. La référence est l'upgrade de la version 2.0 publiée en juillet 2020 sur le site web SDMX.
Grammatikken består av to filer klare til å bli behandlet av Antlr parsergeneratoren :
-
VtlTokens.g4 inneholder listen over gyldige VTL-termer.
-
Vtl.g4 inneholder regler som lager gyldige VTL-uttrykk.
Antlr bruker disse filene til å produsere en lexer, som lager en liste over ordforrådssymboler fra en input-tegnstrøm, og en parser, som lager den grammatiske strukturen som tilsvarer denne listen over symboler. Antlr kan generere parsere som kan brukes på forskjellige målspråk. Trevas bruker parseren for Java, som er eksponert i vtl-parser
modulen.
Grammatikktilpasninger
For å forbedre ytelsen og funksjonaliteten er det gjort mindre endringer i VTL-grammatikken som brukes i Trevas.
Forenkling av det grammatiske treet
Som dokumentert her og her, expr
og exprComp
grenene til grammatikktreet er nesten identiske. For å unngå å måtte implementere den samme logikken to ganger, ble exprComp
grenen kommentert ut av commit 498c1f8. Det ble senere lagt merke til at denne modifikasjonen feilaktig ugyldiggjorde COUNT()
uttrykket, og den tilsvarende regelen ble derfor gjeninnført i grammatikken av commit 54f86f2.
Tilsetting av avstandsoperatører
Avstandsoperatører som Levenshtein eller Jaro-Winkler brukes ofte i strengtesting. For å tillate dem i VTL-uttrykk, commit 036dc60 lagt til en del i grammatikken distanceOperators
som inneholder en LEVENSHTEIN
regel, samt LEVENSHTEIN
symbolet i lexer-filen.