Gå til hovedinnhold

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.