Antlr4.StringTemplate.Compiler.TemplateLexer.MatchSubTemplate C# (CSharp) Метод

MatchSubTemplate() приватный Метод

private MatchSubTemplate ( ) : IToken
Результат IToken
        private IToken MatchSubTemplate()
        {
            // look for "{ args ID (',' ID)* '|' ..."
            subtemplateDepth++;
            int m = input.Mark();
            int curlyStartChar = startCharIndex;
            int curlyLine = startLine;
            int curlyPos = startCharPositionInLine;
            List<IToken> argTokens = new List<IToken>();
            Consume();
            IToken curly = NewTokenFromPreviousChar(LCURLY);
            ConsumeWhitespace();
            argTokens.Add(MatchIdentifier());
            ConsumeWhitespace();
            while (c == ',')
            {
                Consume();
                argTokens.Add(NewTokenFromPreviousChar(COMMA));
                ConsumeWhitespace();
                argTokens.Add(MatchIdentifier());
                ConsumeWhitespace();
            }

            ConsumeWhitespace();
            if (c == '|')
            {
                Consume();
                argTokens.Add(NewTokenFromPreviousChar(PIPE));
                if (IsWS(c))
                    Consume(); // ignore a single whitespace after |

                //System.out.println("matched args: "+argTokens);
                foreach (IToken t in argTokens)
                    Emit(t);

                input.Release(m);
                scanningInsideExpr = false;
                startCharIndex = curlyStartChar; // reset state
                startLine = curlyLine;
                startCharPositionInLine = curlyPos;
                return curly;
            }

            input.Rewind(m);
            startCharIndex = curlyStartChar; // reset state
            startLine = curlyLine;
            startCharPositionInLine = curlyPos;
            Consume();
            scanningInsideExpr = false;
            return curly;
        }