/* * Copyright (c) 2012-2020 The ANTLR Project. All rights reserved. * Use of this file is governed by the BSD 3-clause license that * can be found in the LICENSE.txt file in the project root. */ module antlr.v4.runtime.TokenFactory; import antlr.v4.runtime.CharStream; import antlr.v4.runtime.TokenSource; import std.typecons; import std.variant; alias TokenFactorySourcePair = Tuple!(TokenSource, "a", CharStream, "b"); /** * The default mechanism for creating tokens. It's used by default in Lexer and * the error handling strategy (to create missing tokens). Notifying the parser * of a new factory means that it notifies it's token source and error strategy. */ interface TokenFactory(Symbol) { /** * This is the method used to create tokens in the lexer and in the * error handling strategy. If text!=null, than the start and stop positions * are wiped to -1 in the text override is set in the CommonToken. */ public Symbol create(TokenFactorySourcePair source, int type, Variant text, int channel, size_t start, size_t stop, int line, int charPositionInLine); /** * Generically useful */ public Symbol create(int type, Variant text); }