import { ANTLRInputStream, CommonTokenStream, ConsoleErrorListener } from "antlr4ts"; import { DirectiveContext, RelativeDateFormatParser } from "../lib/lexer-parser/RelativeDateFormatParser"; import { BaseNode } from "../ast-nodes"; import { RelativeDateFormatLexer } from "../lib/lexer-parser/RelativeDateFormatLexer"; import { RDFTestingErrorHandler } from "./RDFTestingErrorHandler"; import { RDFFunctionFactory } from "../resolvers/RDFFunctionFactory"; export function getTokenListFromString(text:string):number[] { let inputStream = new ANTLRInputStream(text); let lexer = new RelativeDateFormatLexer(inputStream); let tokenStream = new CommonTokenStream(lexer); tokenStream.fill() return tokenStream.getTokens().map(token => token.type) } export function getParseTreeFromString(text:string):DirectiveContext { let inputStream = new ANTLRInputStream(text); let lexer = new RelativeDateFormatLexer(inputStream); let tokenStream = new CommonTokenStream(lexer); let parser = new RelativeDateFormatParser(tokenStream); parser.addErrorListener(new RDFTestingErrorHandler()) parser.removeErrorListener(ConsoleErrorListener.INSTANCE) return parser.directive() } export function getFunctionTreeFromDirective(tree:DirectiveContext, now?:number):BaseNode { var resolver = new RDFFunctionFactory(now) return resolver.visit(tree) }