Пример #1
0
        private InternalSyntaxTrivia AddDiagnostic(InternalSyntaxTrivia token, int tokenIndex)
        {
            string errorMessage;

            if (this.Antlr4Errors.TryGetValue(tokenIndex, out errorMessage))
            {
                SyntaxDiagnosticInfo diagnosticInfo = this.MakeError(token.GetLeadingTriviaWidth(), token.Width, Antlr4RoslynErrorCode.ERR_SyntaxError, errorMessage);
                return((InternalSyntaxTrivia)token.WithDiagnostics(new DiagnosticInfo[] { diagnosticInfo }));
            }
            return(token);
        }
Пример #2
0
        private GreenNode GetLeadingTrivia(IToken token, IToken previousToken)
        {
            int startIndex = this.GetLeadingTriviaTokenStartIndex(token, previousToken);
            int endIndex   = token.TokenIndex - 1;

            if (startIndex >= 0 && startIndex <= endIndex)
            {
                InternalSyntaxTrivia[] triviaArray = new InternalSyntaxTrivia[endIndex - startIndex + 1];
                for (int i = startIndex; i <= endIndex; i++)
                {
                    IToken               t      = this.tokens[i];
                    int                  type   = t.Type;
                    SyntaxKind           kind   = type.FromAntlr4(_syntaxFacts.SyntaxKindType);
                    InternalSyntaxTrivia trivia = this.factory.Trivia(kind, t.Text);
                    trivia = this.AddDiagnostic(trivia, i);
                    triviaArray[i - startIndex] = trivia;
                }
                return(this.factory.List(triviaArray).Node);
            }
            return(null);
        }
Пример #3
0
 public virtual TResult VisitTrivia(InternalSyntaxTrivia trivia)
 {
     return(this.DefaultVisit(trivia));
 }