diff --git a/runtime/CSharp/runtime/CSharp/Antlr4.Runtime/Lexer.cs b/runtime/CSharp/runtime/CSharp/Antlr4.Runtime/Lexer.cs index 1db58e612..f9b2d2125 100644 --- a/runtime/CSharp/runtime/CSharp/Antlr4.Runtime/Lexer.cs +++ b/runtime/CSharp/runtime/CSharp/Antlr4.Runtime/Lexer.cs @@ -502,7 +502,7 @@ outer_continue: ; } } - public virtual string[] ModeNames + public virtual string[] ChannelNames { get { @@ -510,6 +510,13 @@ outer_continue: ; } } + public virtual string[] ModeNames + { + get + { + return null; + } + } /// Return a list of all Token objects in input char stream. /// diff --git a/runtime/Cpp/runtime/src/Lexer.h b/runtime/Cpp/runtime/src/Lexer.h index 077ca1968..b25afe7f9 100755 --- a/runtime/Cpp/runtime/src/Lexer.h +++ b/runtime/Cpp/runtime/src/Lexer.h @@ -156,6 +156,8 @@ namespace antlr4 { virtual size_t getChannel(); + virtual const std::vector& getChannelNames() const = 0; + virtual const std::vector& getModeNames() const = 0; /// Return a list of all Token objects in input char stream. diff --git a/runtime/Java/src/org/antlr/v4/runtime/Lexer.java b/runtime/Java/src/org/antlr/v4/runtime/Lexer.java index bb082aa20..01d4c86a7 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/Lexer.java +++ b/runtime/Java/src/org/antlr/v4/runtime/Lexer.java @@ -320,6 +320,8 @@ public abstract class Lexer extends Recognizer return _channel; } + public String[] getChannelNames() { return null; } + public String[] getModeNames() { return null; } diff --git a/runtime/Swift/Sources/Antlr4/Lexer.swift b/runtime/Swift/Sources/Antlr4/Lexer.swift index c23fde56f..0c5da9110 100644 --- a/runtime/Swift/Sources/Antlr4/Lexer.swift +++ b/runtime/Swift/Sources/Antlr4/Lexer.swift @@ -331,6 +331,10 @@ open class Lexer: Recognizer return _channel } + open func getChannelNames() -> [String]? { + return nil + } + open func getModeNames() -> [String]? { return nil } diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/CSharp/CSharp.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/CSharp/CSharp.stg index 2dff6ba02..022d5a065 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/CSharp/CSharp.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/CSharp/CSharp.stg @@ -983,6 +983,11 @@ public partial class : { =}; separator=", ", wrap, anchor>; = ;}; separator="\n"> + + public static string[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "}; separator=", ", wrap, anchor> + }; + public static string[] modeNames = { "}; separator=", ", wrap, anchor> }; @@ -1005,6 +1010,8 @@ public partial class : { public override string[] RuleNames { get { return ruleNames; } } + public override string[] ChannelNames { get { return channelNames; } } + public override string[] ModeNames { get { return modeNames; } } public override string SerializedAtn { get { return _serializedATN; } } diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg index 84c571cba..970251466 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg @@ -70,6 +70,7 @@ public: virtual std::string getGrammarFileName() const override; virtual const std::vector\& getRuleNames() const override; + virtual const std::vector\& getChannelNames() const override; virtual const std::vector\& getModeNames() const override; virtual const std::vector\& getTokenNames() const override; // deprecated, use vocabulary instead virtual antlr4::dfa::Vocabulary& getVocabulary() const override; @@ -89,6 +90,7 @@ private: static antlr4::atn::PredictionContextCache _sharedContextCache; static std::vector\ _ruleNames; static std::vector\ _tokenNames; + static std::vector\ _channelNames; static std::vector\ _modeNames; static std::vector\ _literalNames; @@ -128,6 +130,10 @@ const std::vector\& ::getRuleNames() const { return _ruleNames; } +const std::vector\& ::getChannelNames() const { + return _channelNames; +} + const std::vector\& ::getModeNames() const { return _modeNames; } @@ -189,6 +195,10 @@ std::vector\ ::_ruleNames = { "}; separator = ", ", wrap, anchor> }; +std::vector\ ::_channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "}; separator = ", ", wrap, anchor> +}; + std::vector\ ::_modeNames = { "}; separator = ", ", wrap, anchor> }; diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Go/Go.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Go/Go.stg index 1fb7cb71b..8d1b3a23c 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Go/Go.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Go/Go.stg @@ -1379,6 +1379,14 @@ var serializedLexerAtn []uint16 var lexerDeserializer = antlr.NewATNDeserializer(nil) var lexerAtn = lexerDeserializer.DeserializeFromUInt16(serializedLexerAtn) + +var lexerChannelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "}; separator=", ", wrap>, +} + +var lexerChannelNames []string + + var lexerModeNames = []string{ "}; separator=", ", wrap>, @@ -1387,7 +1395,6 @@ var lexerModeNames = []string{ var lexerModeNames []string - var lexerLiteralNames = []string{ , @@ -1417,6 +1424,7 @@ var lexerRuleNames []string type struct { *antlr.BaseLexer + channelNames []string modeNames []string // TODO: EOF string } @@ -1433,6 +1441,7 @@ func New(input antlr.CharStream) * { l.BaseLexer = antlr.NewBaseLexer(input) l.Interpreter = antlr.NewLexerATNSimulator(l, lexerAtn, lexerDecisionToDFA, antlr.NewPredictionContextCache()) + l.channelNames = lexerChannelNames l.modeNames = lexerModeNames l.RuleNames = lexerRuleNames l.LiteralNames = lexerLiteralNames diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg index d971e65e1..e7337af02 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg @@ -901,6 +901,11 @@ public class extends { =}; separator=", ", wrap, anchor>; = ;}; separator="\n"> + + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "}; separator=", ", wrap, anchor> + }; + public static String[] modeNames = { "}; separator=", ", wrap, anchor> }; @@ -927,6 +932,9 @@ public class extends { @Override public String getSerializedATN() { return _serializedATN; } + @Override + public String[] getChannelNames() { return channelNames; } + @Override public String[] getModeNames() { return modeNames; } diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/JavaScript/JavaScript.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/JavaScript/JavaScript.stg index 3f368bf92..669e7d19c 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/JavaScript/JavaScript.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/JavaScript/JavaScript.stg @@ -823,6 +823,8 @@ function (input) { . = ;}; separator="\n"> +.prototype.channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "}; separator=", ", wrap, anchor> ]; + .prototype.modeNames = [ "}; separator=", ", wrap, anchor> ]; .prototype.literalNames = [ }; null="null", separator=", ", wrap, anchor> ]; diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Python2/Python2.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Python2/Python2.stg index 0d341601e..56dda5b7c 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Python2/Python2.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Python2/Python2.stg @@ -760,6 +760,8 @@ class (Lexer): = }; separator="\n", wrap, anchor> + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN", "}; separator=", ", wrap, anchor> ] + modeNames = [ "}; separator=", ", wrap, anchor> ] literalNames = [ u"\", diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Python3/Python3.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Python3/Python3.stg index 65a5b390e..87ce648cd 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Python3/Python3.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Python3/Python3.stg @@ -765,6 +765,8 @@ class (Lexer): = }; separator="\n", wrap, anchor> + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN", "}; separator=", ", wrap, anchor> ] + modeNames = [ "}; separator=", ", wrap, anchor> ] literalNames = [ "\", diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Swift/Swift.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Swift/Swift.stg index 64aa3e9c1..2cc1fbfe9 100755 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Swift/Swift.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Swift/Swift.stg @@ -962,9 +962,14 @@ open class : { internal static let _sharedContextCache:PredictionContextCache = PredictionContextCache() public static let =}; separator=", ", wrap, anchor> - public let =}; separator=", ", wrap, anchor> + public static let =}; separator=", ", wrap, anchor> : Int = ;}; separator="\n"> + + public static let channelNames: [String] = [ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "}; separator=", ", wrap, anchor> + ] + public static let modeNames: [String] = [ "}; separator=", ", wrap, anchor> ] @@ -995,6 +1000,9 @@ open class : { override open func getSerializedATN() -> String { return ._serializedATN } + override + open func getChannelNames() -> [String] { return .channelNames } + override open func getModeNames() -> [String] { return .modeNames }