Auto generate CSharp syntax tree nodes (#2550)

* Auto generate CSharp syntax tree nodes
- Auto generated syntax nodes, visitors and factories
- Renamed RazorComment to RazorCommentLiteral to avoid a conflict
- Modified the Visit() contract
- Added new SyntaxKinds
- Regenerated baselines
This commit is contained in:
Ajay Bhargav Baaskaran 2018-08-21 14:20:33 -07:00 committed by GitHub
parent aac85ceb4f
commit 27a9991f21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 3243 additions and 240 deletions

View File

@ -136,7 +136,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
case KnownTokenType.CommentStar:
return SyntaxKind.RazorCommentStar;
case KnownTokenType.CommentBody:
return SyntaxKind.RazorComment;
return SyntaxKind.RazorCommentLiteral;
default:
return SyntaxKind.Unknown;
}

View File

@ -133,7 +133,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private new CSharpTokenizerState? CurrentState => (CSharpTokenizerState?)base.CurrentState;
public override SyntaxKind RazorCommentKind => SyntaxKind.RazorComment;
public override SyntaxKind RazorCommentKind => SyntaxKind.RazorCommentLiteral;
public override SyntaxKind RazorCommentTransitionKind => SyntaxKind.RazorCommentTransition;

View File

@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return kind != SyntaxKind.Whitespace &&
kind != SyntaxKind.NewLine &&
kind != SyntaxKind.CSharpComment &&
kind != SyntaxKind.RazorComment &&
kind != SyntaxKind.RazorCommentLiteral &&
kind != SyntaxKind.RazorCommentStar &&
kind != SyntaxKind.RazorCommentTransition &&
kind != SyntaxKind.Transition;

View File

@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
return kind != SyntaxKind.Whitespace &&
kind != SyntaxKind.NewLine &&
kind != SyntaxKind.RazorComment &&
kind != SyntaxKind.RazorCommentLiteral &&
kind != SyntaxKind.RazorCommentStar &&
kind != SyntaxKind.RazorCommentTransition &&
kind != SyntaxKind.Transition;

View File

@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return "@";
case SyntaxKind.Colon:
return ":";
case SyntaxKind.RazorComment:
case SyntaxKind.RazorCommentLiteral:
return Resources.HtmlToken_RazorComment;
case SyntaxKind.RazorCommentStar:
return "*";
@ -104,7 +104,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
case KnownTokenType.CommentStar:
return SyntaxKind.RazorCommentStar;
case KnownTokenType.CommentBody:
return SyntaxKind.RazorComment;
return SyntaxKind.RazorCommentLiteral;
case KnownTokenType.Identifier:
return SyntaxKind.HtmlTextLiteral;
case KnownTokenType.Keyword:

View File

@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public override SyntaxKind RazorCommentKind
{
get { return SyntaxKind.RazorComment; }
get { return SyntaxKind.RazorCommentLiteral; }
}
public override SyntaxKind RazorCommentTransitionKind

View File

@ -0,0 +1,375 @@
// <auto-generated />
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
internal partial class SyntaxVisitor<TResult>
{
/// <summary>Called when the visitor visits a RazorCommentBlockSyntax node.</summary>
public virtual TResult VisitRazorCommentBlock(RazorCommentBlockSyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a HtmlTextSyntax node.</summary>
public virtual TResult VisitHtmlText(HtmlTextSyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpTransitionSyntax node.</summary>
public virtual TResult VisitCSharpTransition(CSharpTransitionSyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpMetaCodeSyntax node.</summary>
public virtual TResult VisitCSharpMetaCode(CSharpMetaCodeSyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpCodeLiteralSyntax node.</summary>
public virtual TResult VisitCSharpCodeLiteral(CSharpCodeLiteralSyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpCodeBlockSyntax node.</summary>
public virtual TResult VisitCSharpCodeBlock(CSharpCodeBlockSyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpStatement node.</summary>
public virtual TResult VisitCSharpStatement(CSharpStatement node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpStatementBodySyntax node.</summary>
public virtual TResult VisitCSharpStatementBody(CSharpStatementBodySyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpExpression node.</summary>
public virtual TResult VisitCSharpExpression(CSharpExpression node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpExpressionBodySyntax node.</summary>
public virtual TResult VisitCSharpExpressionBody(CSharpExpressionBodySyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpDirectiveSyntax node.</summary>
public virtual TResult VisitCSharpDirective(CSharpDirectiveSyntax node)
{
return DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpDirectiveBodySyntax node.</summary>
public virtual TResult VisitCSharpDirectiveBody(CSharpDirectiveBodySyntax node)
{
return DefaultVisit(node);
}
}
internal partial class SyntaxVisitor
{
/// <summary>Called when the visitor visits a RazorCommentBlockSyntax node.</summary>
public virtual void VisitRazorCommentBlock(RazorCommentBlockSyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a HtmlTextSyntax node.</summary>
public virtual void VisitHtmlText(HtmlTextSyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpTransitionSyntax node.</summary>
public virtual void VisitCSharpTransition(CSharpTransitionSyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpMetaCodeSyntax node.</summary>
public virtual void VisitCSharpMetaCode(CSharpMetaCodeSyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpCodeLiteralSyntax node.</summary>
public virtual void VisitCSharpCodeLiteral(CSharpCodeLiteralSyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpCodeBlockSyntax node.</summary>
public virtual void VisitCSharpCodeBlock(CSharpCodeBlockSyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpStatement node.</summary>
public virtual void VisitCSharpStatement(CSharpStatement node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpStatementBodySyntax node.</summary>
public virtual void VisitCSharpStatementBody(CSharpStatementBodySyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpExpression node.</summary>
public virtual void VisitCSharpExpression(CSharpExpression node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpExpressionBodySyntax node.</summary>
public virtual void VisitCSharpExpressionBody(CSharpExpressionBodySyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpDirectiveSyntax node.</summary>
public virtual void VisitCSharpDirective(CSharpDirectiveSyntax node)
{
DefaultVisit(node);
}
/// <summary>Called when the visitor visits a CSharpDirectiveBodySyntax node.</summary>
public virtual void VisitCSharpDirectiveBody(CSharpDirectiveBodySyntax node)
{
DefaultVisit(node);
}
}
internal static partial class SyntaxFactory
{
/// <summary>Creates a new RazorCommentBlockSyntax instance.</summary>
public static RazorCommentBlockSyntax RazorCommentBlock(SyntaxToken startCommentTransition, SyntaxToken startCommentStar, SyntaxToken comment, SyntaxToken endCommentStar, SyntaxToken endCommentTransition)
{
switch (startCommentTransition.Kind)
{
case SyntaxKind.RazorCommentTransition:
break;
default:
throw new ArgumentException("startCommentTransition");
}
switch (startCommentStar.Kind)
{
case SyntaxKind.RazorCommentStar:
break;
default:
throw new ArgumentException("startCommentStar");
}
switch (comment.Kind)
{
case SyntaxKind.RazorComment:
case SyntaxKind.Unknown:
break;
default:
throw new ArgumentException("comment");
}
switch (endCommentStar.Kind)
{
case SyntaxKind.RazorCommentStar:
break;
default:
throw new ArgumentException("endCommentStar");
}
switch (endCommentTransition.Kind)
{
case SyntaxKind.RazorCommentTransition:
break;
default:
throw new ArgumentException("endCommentTransition");
}
return (RazorCommentBlockSyntax)InternalSyntax.SyntaxFactory.RazorCommentBlock((Syntax.InternalSyntax.SyntaxToken)startCommentTransition.Green, (Syntax.InternalSyntax.SyntaxToken)startCommentStar.Green, (Syntax.InternalSyntax.SyntaxToken)comment.Green, (Syntax.InternalSyntax.SyntaxToken)endCommentStar.Green, (Syntax.InternalSyntax.SyntaxToken)endCommentTransition.Green).CreateRed();
}
/// <summary>Creates a new RazorCommentBlockSyntax instance.</summary>
public static RazorCommentBlockSyntax RazorCommentBlock()
{
return SyntaxFactory.RazorCommentBlock(SyntaxFactory.Token(SyntaxKind.RazorCommentTransition), SyntaxFactory.Token(SyntaxKind.RazorCommentStar), default(SyntaxToken), SyntaxFactory.Token(SyntaxKind.RazorCommentStar), SyntaxFactory.Token(SyntaxKind.RazorCommentTransition));
}
/// <summary>Creates a new HtmlTextSyntax instance.</summary>
public static HtmlTextSyntax HtmlText(SyntaxList<SyntaxToken> textTokens)
{
return (HtmlTextSyntax)InternalSyntax.SyntaxFactory.HtmlText(textTokens.Node.ToGreenList<InternalSyntax.SyntaxToken>()).CreateRed();
}
/// <summary>Creates a new HtmlTextSyntax instance.</summary>
public static HtmlTextSyntax HtmlText()
{
return SyntaxFactory.HtmlText(default(SyntaxList<SyntaxToken>));
}
/// <summary>Creates a new CSharpTransitionSyntax instance.</summary>
public static CSharpTransitionSyntax CSharpTransition(SyntaxToken transition)
{
switch (transition.Kind)
{
case SyntaxKind.Transition:
break;
default:
throw new ArgumentException("transition");
}
return (CSharpTransitionSyntax)InternalSyntax.SyntaxFactory.CSharpTransition((Syntax.InternalSyntax.SyntaxToken)transition.Green).CreateRed();
}
/// <summary>Creates a new CSharpTransitionSyntax instance.</summary>
public static CSharpTransitionSyntax CSharpTransition()
{
return SyntaxFactory.CSharpTransition(SyntaxFactory.Token(SyntaxKind.Transition));
}
/// <summary>Creates a new CSharpMetaCodeSyntax instance.</summary>
public static CSharpMetaCodeSyntax CSharpMetaCode(SyntaxList<SyntaxToken> metaCode)
{
return (CSharpMetaCodeSyntax)InternalSyntax.SyntaxFactory.CSharpMetaCode(metaCode.Node.ToGreenList<InternalSyntax.SyntaxToken>()).CreateRed();
}
/// <summary>Creates a new CSharpMetaCodeSyntax instance.</summary>
public static CSharpMetaCodeSyntax CSharpMetaCode()
{
return SyntaxFactory.CSharpMetaCode(default(SyntaxList<SyntaxToken>));
}
/// <summary>Creates a new CSharpCodeLiteralSyntax instance.</summary>
public static CSharpCodeLiteralSyntax CSharpCodeLiteral(SyntaxList<SyntaxToken> cSharpTokens)
{
return (CSharpCodeLiteralSyntax)InternalSyntax.SyntaxFactory.CSharpCodeLiteral(cSharpTokens.Node.ToGreenList<InternalSyntax.SyntaxToken>()).CreateRed();
}
/// <summary>Creates a new CSharpCodeLiteralSyntax instance.</summary>
public static CSharpCodeLiteralSyntax CSharpCodeLiteral()
{
return SyntaxFactory.CSharpCodeLiteral(default(SyntaxList<SyntaxToken>));
}
/// <summary>Creates a new CSharpCodeBlockSyntax instance.</summary>
public static CSharpCodeBlockSyntax CSharpCodeBlock(SyntaxList<RazorSyntaxNode> children)
{
return (CSharpCodeBlockSyntax)InternalSyntax.SyntaxFactory.CSharpCodeBlock(children.Node.ToGreenList<InternalSyntax.RazorSyntaxNode>()).CreateRed();
}
/// <summary>Creates a new CSharpCodeBlockSyntax instance.</summary>
public static CSharpCodeBlockSyntax CSharpCodeBlock()
{
return SyntaxFactory.CSharpCodeBlock(default(SyntaxList<RazorSyntaxNode>));
}
/// <summary>Creates a new CSharpStatement instance.</summary>
public static CSharpStatement CSharpStatement(CSharpTransitionSyntax transition, CSharpSyntaxNode body)
{
if (transition == null)
throw new ArgumentNullException(nameof(transition));
if (body == null)
throw new ArgumentNullException(nameof(body));
return (CSharpStatement)InternalSyntax.SyntaxFactory.CSharpStatement(transition == null ? null : (InternalSyntax.CSharpTransitionSyntax)transition.Green, body == null ? null : (InternalSyntax.CSharpSyntaxNode)body.Green).CreateRed();
}
/// <summary>Creates a new CSharpStatement instance.</summary>
public static CSharpStatement CSharpStatement(CSharpSyntaxNode body)
{
return SyntaxFactory.CSharpStatement(SyntaxFactory.CSharpTransition(), body);
}
/// <summary>Creates a new CSharpStatementBodySyntax instance.</summary>
public static CSharpStatementBodySyntax CSharpStatementBody(CSharpMetaCodeSyntax openBrace, CSharpCodeBlockSyntax cSharpCode, CSharpMetaCodeSyntax closeBrace)
{
if (openBrace == null)
throw new ArgumentNullException(nameof(openBrace));
if (cSharpCode == null)
throw new ArgumentNullException(nameof(cSharpCode));
if (closeBrace == null)
throw new ArgumentNullException(nameof(closeBrace));
return (CSharpStatementBodySyntax)InternalSyntax.SyntaxFactory.CSharpStatementBody(openBrace == null ? null : (InternalSyntax.CSharpMetaCodeSyntax)openBrace.Green, cSharpCode == null ? null : (InternalSyntax.CSharpCodeBlockSyntax)cSharpCode.Green, closeBrace == null ? null : (InternalSyntax.CSharpMetaCodeSyntax)closeBrace.Green).CreateRed();
}
/// <summary>Creates a new CSharpStatementBodySyntax instance.</summary>
public static CSharpStatementBodySyntax CSharpStatementBody()
{
return SyntaxFactory.CSharpStatementBody(SyntaxFactory.CSharpMetaCode(), SyntaxFactory.CSharpCodeBlock(), SyntaxFactory.CSharpMetaCode());
}
/// <summary>Creates a new CSharpExpression instance.</summary>
public static CSharpExpression CSharpExpression(CSharpTransitionSyntax transition, CSharpSyntaxNode body)
{
if (transition == null)
throw new ArgumentNullException(nameof(transition));
if (body == null)
throw new ArgumentNullException(nameof(body));
return (CSharpExpression)InternalSyntax.SyntaxFactory.CSharpExpression(transition == null ? null : (InternalSyntax.CSharpTransitionSyntax)transition.Green, body == null ? null : (InternalSyntax.CSharpSyntaxNode)body.Green).CreateRed();
}
/// <summary>Creates a new CSharpExpression instance.</summary>
public static CSharpExpression CSharpExpression(CSharpSyntaxNode body)
{
return SyntaxFactory.CSharpExpression(SyntaxFactory.CSharpTransition(), body);
}
/// <summary>Creates a new CSharpExpressionBodySyntax instance.</summary>
public static CSharpExpressionBodySyntax CSharpExpressionBody(CSharpMetaCodeSyntax openParen, CSharpCodeBlockSyntax cSharpCode, CSharpMetaCodeSyntax closeParen)
{
if (cSharpCode == null)
throw new ArgumentNullException(nameof(cSharpCode));
return (CSharpExpressionBodySyntax)InternalSyntax.SyntaxFactory.CSharpExpressionBody(openParen == null ? null : (InternalSyntax.CSharpMetaCodeSyntax)openParen.Green, cSharpCode == null ? null : (InternalSyntax.CSharpCodeBlockSyntax)cSharpCode.Green, closeParen == null ? null : (InternalSyntax.CSharpMetaCodeSyntax)closeParen.Green).CreateRed();
}
/// <summary>Creates a new CSharpExpressionBodySyntax instance.</summary>
public static CSharpExpressionBodySyntax CSharpExpressionBody()
{
return SyntaxFactory.CSharpExpressionBody(default(CSharpMetaCodeSyntax), SyntaxFactory.CSharpCodeBlock(), default(CSharpMetaCodeSyntax));
}
/// <summary>Creates a new CSharpDirectiveSyntax instance.</summary>
public static CSharpDirectiveSyntax CSharpDirective(CSharpTransitionSyntax transition, CSharpSyntaxNode body)
{
if (transition == null)
throw new ArgumentNullException(nameof(transition));
if (body == null)
throw new ArgumentNullException(nameof(body));
return (CSharpDirectiveSyntax)InternalSyntax.SyntaxFactory.CSharpDirective(transition == null ? null : (InternalSyntax.CSharpTransitionSyntax)transition.Green, body == null ? null : (InternalSyntax.CSharpSyntaxNode)body.Green).CreateRed();
}
/// <summary>Creates a new CSharpDirectiveSyntax instance.</summary>
public static CSharpDirectiveSyntax CSharpDirective(CSharpSyntaxNode body)
{
return SyntaxFactory.CSharpDirective(SyntaxFactory.CSharpTransition(), body);
}
/// <summary>Creates a new CSharpDirectiveBodySyntax instance.</summary>
public static CSharpDirectiveBodySyntax CSharpDirectiveBody(CSharpMetaCodeSyntax keyword, CSharpCodeBlockSyntax cSharpCode)
{
if (keyword == null)
throw new ArgumentNullException(nameof(keyword));
if (cSharpCode == null)
throw new ArgumentNullException(nameof(cSharpCode));
return (CSharpDirectiveBodySyntax)InternalSyntax.SyntaxFactory.CSharpDirectiveBody(keyword == null ? null : (InternalSyntax.CSharpMetaCodeSyntax)keyword.Green, cSharpCode == null ? null : (InternalSyntax.CSharpCodeBlockSyntax)cSharpCode.Green).CreateRed();
}
/// <summary>Creates a new CSharpDirectiveBodySyntax instance.</summary>
public static CSharpDirectiveBodySyntax CSharpDirectiveBody()
{
return SyntaxFactory.CSharpDirectiveBody(SyntaxFactory.CSharpMetaCode(), SyntaxFactory.CSharpCodeBlock());
}
}
}

View File

@ -481,10 +481,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax
internal abstract SyntaxNode CreateRed(SyntaxNode parent, int position);
#endregion
internal virtual GreenNode Accept(InternalSyntax.SyntaxVisitor visitor)
{
return visitor.Visit(this);
}
public abstract TResult Accept<TResult>(InternalSyntax.SyntaxVisitor<TResult> visitor);
public abstract void Accept(InternalSyntax.SyntaxVisitor visitor);
#region StaticMethods

View File

@ -0,0 +1,56 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
internal static class GreenNodeExtensions
{
internal static InternalSyntax.SyntaxList<T> ToGreenList<T>(this SyntaxNode node) where T : GreenNode
{
return node != null ?
ToGreenList<T>(node.Green) :
default(InternalSyntax.SyntaxList<T>);
}
internal static InternalSyntax.SyntaxList<T> ToGreenList<T>(this GreenNode node) where T : GreenNode
{
return new InternalSyntax.SyntaxList<T>(node);
}
public static TNode WithAnnotationsGreen<TNode>(this TNode node, IEnumerable<SyntaxAnnotation> annotations) where TNode : GreenNode
{
var newAnnotations = new List<SyntaxAnnotation>();
foreach (var candidate in annotations)
{
if (!newAnnotations.Contains(candidate))
{
newAnnotations.Add(candidate);
}
}
if (newAnnotations.Count == 0)
{
var existingAnnotations = node.GetAnnotations();
if (existingAnnotations == null || existingAnnotations.Length == 0)
{
return node;
}
else
{
return (TNode)node.SetAnnotations(null);
}
}
else
{
return (TNode)node.SetAnnotations(newAnnotations.ToArray());
}
}
public static TNode WithDiagnosticsGreen<TNode>(this TNode node, RazorDiagnostic[] diagnostics) where TNode : GreenNode
{
return (TNode)node.SetDiagnostics(diagnostics);
}
}
}

View File

@ -1,20 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
internal abstract class HtmlNodeSyntax : SyntaxNode
{
internal HtmlNodeSyntax(GreenNode green, SyntaxNode parent, int position)
: base(green, parent, position)
{
}
internal new InternalSyntax.HtmlNodeSyntax Green => (InternalSyntax.HtmlNodeSyntax)base.Green;
internal override SyntaxNode Accept(SyntaxVisitor visitor)
{
return visitor.VisitHtmlNode(this);
}
}
}

View File

@ -1,42 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
internal class HtmlTextSyntax : HtmlNodeSyntax
{
private SyntaxNode _textTokens;
internal HtmlTextSyntax(GreenNode green, SyntaxNode parent, int position)
: base(green, parent, position)
{
}
public SyntaxList<SyntaxNode> TextTokens => new SyntaxList<SyntaxNode>(GetRed(ref _textTokens, 0));
public string Value => TextTokens[0]?.ToFullString() ?? string.Empty;
internal override SyntaxNode Accept(SyntaxVisitor visitor)
{
return visitor.VisitHtmlText(this);
}
internal override SyntaxNode GetCachedSlot(int index)
{
switch (index)
{
case 0: return _textTokens;
default: return null;
}
}
internal override SyntaxNode GetNodeSlot(int slot)
{
switch (slot)
{
case 0: return GetRed(ref _textTokens, 0);
default: return null;
}
}
}
}

View File

@ -1,28 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax
{
internal abstract class HtmlNodeSyntax : GreenNode
{
protected HtmlNodeSyntax(SyntaxKind kind)
: base(kind)
{
}
protected HtmlNodeSyntax(SyntaxKind kind, int fullWidth)
: base(kind, fullWidth)
{
}
protected HtmlNodeSyntax(SyntaxKind kind, RazorDiagnostic[] diagnostics, SyntaxAnnotation[] annotations)
: base(kind, diagnostics, annotations)
{
}
internal override GreenNode Accept(SyntaxVisitor visitor)
{
return visitor.VisitHtmlNode(this);
}
}
}

View File

@ -1,59 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
namespace Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax
{
internal class HtmlTextSyntax : HtmlNodeSyntax
{
private readonly GreenNode _value;
internal HtmlTextSyntax(GreenNode value) : base(SyntaxKind.HtmlText)
{
SlotCount = 1;
_value = value;
AdjustFlagsAndWidth(value);
}
internal HtmlTextSyntax(GreenNode value, RazorDiagnostic[] diagnostics, SyntaxAnnotation[] annotations)
: base(SyntaxKind.HtmlText, diagnostics, annotations)
{
SlotCount = 1;
_value = value;
AdjustFlagsAndWidth(value);
}
internal SyntaxList<GreenNode> TextTokens => new SyntaxList<GreenNode>(_value);
internal override GreenNode GetSlot(int index)
{
switch (index)
{
case 0: return _value;
}
throw new InvalidOperationException();
}
internal override GreenNode Accept(SyntaxVisitor visitor)
{
return visitor.VisitHtmlText(this);
}
internal override SyntaxNode CreateRed(SyntaxNode parent, int position)
{
return new Syntax.HtmlTextSyntax(this, parent, position);
}
internal override GreenNode SetDiagnostics(RazorDiagnostic[] diagnostics)
{
return new HtmlTextSyntax(_value, diagnostics, GetAnnotations());
}
internal override GreenNode SetAnnotations(SyntaxAnnotation[] annotations)
{
return new HtmlTextSyntax(_value, GetDiagnostics(), annotations);
}
}
}

View File

@ -6,13 +6,8 @@ using System.Linq;
namespace Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax
{
internal static class SyntaxFactory
internal static partial class SyntaxFactory
{
internal static HtmlTextSyntax HtmlText(SyntaxList<SyntaxToken> textTokens)
{
return new HtmlTextSyntax(textTokens.Node);
}
internal static SyntaxToken Token(SyntaxKind kind, string content, IEnumerable<RazorDiagnostic> diagnostics)
{
return Token(kind, content, diagnostics.ToArray());

View File

@ -121,6 +121,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax
}
}
public override TResult Accept<TResult>(SyntaxVisitor<TResult> visitor)
{
return visitor.Visit(this);
}
public override void Accept(SyntaxVisitor visitor)
{
visitor.Visit(this);
}
internal class WithTwoChildren : SyntaxList
{
private readonly GreenNode _child0;

View File

@ -134,9 +134,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax
throw new InvalidOperationException("Tokens don't have slots.");
}
internal override GreenNode Accept(SyntaxVisitor visitor)
public override TResult Accept<TResult>(SyntaxVisitor<TResult> visitor)
{
return visitor.VisitSyntaxToken(this);
return visitor.VisitToken(this);
}
public override void Accept(SyntaxVisitor visitor)
{
visitor.VisitToken(this);
}
public override bool IsEquivalentTo(GreenNode other)

View File

@ -62,9 +62,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax
return new Syntax.SyntaxTrivia(this, parent, position);
}
internal override GreenNode Accept(SyntaxVisitor visitor)
public override TResult Accept<TResult>(SyntaxVisitor<TResult> visitor)
{
return visitor.VisitSyntaxTrivia(this);
return visitor.VisitTrivia(this);
}
public override void Accept(SyntaxVisitor visitor)
{
visitor.VisitTrivia(this);
}
internal override GreenNode SetDiagnostics(RazorDiagnostic[] diagnostics)

View File

@ -3,41 +3,58 @@
namespace Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax
{
internal abstract class SyntaxVisitor
internal abstract partial class SyntaxVisitor<TResult>
{
public virtual TResult Visit(GreenNode node)
{
if (node == null)
{
return default(TResult);
}
return node.Accept(this);
}
public virtual TResult VisitToken(SyntaxToken token)
{
return DefaultVisit(token);
}
public virtual TResult VisitTrivia(SyntaxTrivia trivia)
{
return DefaultVisit(trivia);
}
protected virtual TResult DefaultVisit(GreenNode node)
{
return default(TResult);
}
}
internal abstract partial class SyntaxVisitor
{
public virtual GreenNode Visit(GreenNode node)
{
if (node != null)
{
return node.Accept(this);
node.Accept(this);
}
return null;
}
public virtual GreenNode VisitSyntaxNode(GreenNode node)
public virtual void VisitToken(SyntaxToken token)
{
return node;
DefaultVisit(token);
}
public virtual GreenNode VisitHtmlNode(HtmlNodeSyntax node)
public virtual void VisitTrivia(SyntaxTrivia trivia)
{
return VisitSyntaxNode(node);
DefaultVisit(trivia);
}
public virtual GreenNode VisitHtmlText(HtmlTextSyntax node)
protected virtual void DefaultVisit(GreenNode node)
{
return VisitHtmlNode(node);
}
public virtual SyntaxToken VisitSyntaxToken(SyntaxToken token)
{
return token;
}
public virtual SyntaxTrivia VisitSyntaxTrivia(SyntaxTrivia trivia)
{
return trivia;
}
}
}

View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8" ?>
<Tree Root="SyntaxNode">
<PredefinedNode Name="SyntaxToken" Base="SyntaxNode" />
<!-- Common -->
<AbstractNode Name="RazorSyntaxNode" Base="SyntaxNode" />
<Node Name="RazorCommentBlockSyntax" Base="RazorSyntaxNode">
<Kind Name="RazorComment" />
<Field Name="StartCommentTransition" Type="SyntaxToken">
<Kind Name="RazorCommentTransition" />
</Field>
<Field Name="StartCommentStar" Type="SyntaxToken">
<Kind Name="RazorCommentStar" />
</Field>
<Field Name="Comment" Type="SyntaxToken" Optional="true">
<Kind Name="RazorComment" />
</Field>
<Field Name="EndCommentStar" Type="SyntaxToken">
<Kind Name="RazorCommentStar" />
</Field>
<Field Name="EndCommentTransition" Type="SyntaxToken">
<Kind Name="RazorCommentTransition" />
</Field>
</Node>
<!-- HTML -->
<AbstractNode Name="HtmlSyntaxNode" Base="RazorSyntaxNode" />
<Node Name="HtmlTextSyntax" Base="HtmlSyntaxNode">
<Kind Name="HtmlText" />
<Field Name="TextTokens" Type="SyntaxList&lt;SyntaxToken&gt;" />
</Node>
<!-- CSharp -->
<AbstractNode Name="CSharpSyntaxNode" Base="RazorSyntaxNode" />
<Node Name="CSharpTransitionSyntax" Base="CSharpSyntaxNode">
<Kind Name="CSharpTransition" />
<Field Name="Transition" Type="SyntaxToken">
<Kind Name="Transition" />
</Field>
</Node>
<Node Name="CSharpMetaCodeSyntax" Base="CSharpSyntaxNode">
<Kind Name="CSharpMetaCode" />
<Field Name="MetaCode" Type="SyntaxList&lt;SyntaxToken&gt;" />
</Node>
<Node Name="CSharpCodeLiteralSyntax" Base="CSharpSyntaxNode">
<Kind Name="CSharpCodeLiteral" />
<Field Name="CSharpTokens" Type="SyntaxList&lt;SyntaxToken&gt;" />
</Node>
<Node Name="CSharpCodeBlockSyntax" Base="CSharpSyntaxNode">
<Kind Name="CSharpCodeBlock" />
<Field Name="Children" Type="SyntaxList&lt;RazorSyntaxNode&gt;" />
</Node>
<AbstractNode Name="CSharpBlockSyntax" Base="CSharpSyntaxNode">
<Field Name="Transition" Type="CSharpTransitionSyntax" />
<Field Name="Body" Type="CSharpSyntaxNode" />
</AbstractNode>
<Node Name="CSharpStatement" Base="CSharpBlockSyntax">
<Kind Name="CSharpStatement" />
<Field Name="Transition" Type="CSharpTransitionSyntax" Override="true">
<Kind Name="CSharpTransition" />
</Field>
<Field Name="Body" Type="CSharpSyntaxNode" Override="true">
<Kind Name="CSharpStatementBody" />
</Field>
</Node>
<Node Name="CSharpStatementBodySyntax" Base="CSharpSyntaxNode">
<Kind Name="CSharpStatementBody" />
<Field Name="OpenBrace" Type="CSharpMetaCodeSyntax" />
<Field Name="CSharpCode" Type="CSharpCodeBlockSyntax" />
<Field Name="CloseBrace" Type="CSharpMetaCodeSyntax" />
</Node>
<Node Name="CSharpExpression" Base="CSharpBlockSyntax">
<Kind Name="CSharpExpression" />
<Field Name="Transition" Type="CSharpTransitionSyntax" Override="true">
<Kind Name="CSharpTransition" />
</Field>
<Field Name="Body" Type="CSharpSyntaxNode" Override="true">
<Kind Name="CSharpExpressionBody" />
</Field>
</Node>
<Node Name="CSharpExpressionBodySyntax" Base="CSharpSyntaxNode">
<Kind Name="CSharpExpressionBody" />
<Field Name="OpenParen" Type="CSharpMetaCodeSyntax" Optional="true" />
<Field Name="CSharpCode" Type="CSharpCodeBlockSyntax" />
<Field Name="CloseParen" Type="CSharpMetaCodeSyntax" Optional="true" />
</Node>
<Node Name="CSharpDirectiveSyntax" Base="CSharpBlockSyntax">
<Kind Name="CSharpDirective" />
<Field Name="Transition" Type="CSharpTransitionSyntax" Override="true">
<Kind Name="CSharpTransition" />
</Field>
<Field Name="Body" Type="CSharpSyntaxNode" Override="true">
<Kind Name="CSharpDirectiveBody" />
</Field>
</Node>
<Node Name="CSharpDirectiveBodySyntax" Base="CSharpSyntaxNode">
<Kind Name="CSharpDirectiveBody" />
<Field Name="Keyword" Type="CSharpMetaCodeSyntax" />
<Field Name="CSharpCode" Type="CSharpCodeBlockSyntax" />
</Node>
</Tree>

View File

@ -3,9 +3,14 @@
namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
internal static class SyntaxFactory
internal static partial class SyntaxFactory
{
internal static SyntaxToken Token(SyntaxKind kind, string content, params RazorDiagnostic[] diagnostics)
public static SyntaxToken Token(SyntaxKind kind, params RazorDiagnostic[] diagnostics)
{
return Token(kind, content: string.Empty, diagnostics: diagnostics);
}
public static SyntaxToken Token(SyntaxKind kind, string content, params RazorDiagnostic[] diagnostics)
{
return new SyntaxToken(InternalSyntax.SyntaxFactory.Token(kind, content), parent: null, position: 0);
}

View File

@ -6,9 +6,26 @@ namespace Microsoft.AspNetCore.Razor.Language
internal enum SyntaxKind : byte
{
#region Nodes
// HTML
HtmlText,
HtmlDocument,
HtmlDeclaration,
// CSharp
CSharpBlock,
CSharpStatement,
CSharpStatementBody,
CSharpExpression,
CSharpExpressionBody,
CSharpDirective,
CSharpDirectiveBody,
CSharpCodeBlock,
CSharpCodeLiteral,
CSharpMetaCode,
CSharpTransition,
// Common
RazorComment,
#endregion
#region Tokens
@ -89,7 +106,7 @@ namespace Microsoft.AspNetCore.Razor.Language
Hash,
// Razor specific
RazorComment,
RazorCommentLiteral,
RazorCommentStar,
RazorCommentTransition,
#endregion

View File

@ -10,11 +10,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
}
internal override SyntaxNode Accept(SyntaxVisitor visitor)
public override TResult Accept<TResult>(SyntaxVisitor<TResult> visitor)
{
return visitor.Visit(this);
}
public override void Accept(SyntaxVisitor visitor)
{
visitor.Visit(this);
}
internal class WithTwoChildren : SyntaxList
{
private SyntaxNode _child0;

View File

@ -80,7 +80,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax
public bool ContainsAnnotations => Green.ContainsAnnotations;
internal abstract SyntaxNode Accept(SyntaxVisitor visitor);
public abstract TResult Accept<TResult>(SyntaxVisitor<TResult> visitor);
public abstract void Accept(SyntaxVisitor visitor);
internal abstract SyntaxNode GetNodeSlot(int index);
@ -103,6 +105,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax
return result;
}
// Special case of above function where slot = 0, does not need GetChildPosition
internal SyntaxNode GetRedAtZero(ref SyntaxNode field)
{
var result = field;
if (result == null)
{
var green = Green.GetSlot(0);
if (green != null)
{
Interlocked.CompareExchange(ref field, green.CreateRed(this, Position), null);
result = field;
}
}
return result;
}
protected T GetRed<T>(ref T field, int slot) where T : SyntaxNode
{
var result = field;
@ -120,6 +140,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax
return result;
}
// special case of above function where slot = 0, does not need GetChildPosition
protected T GetRedAtZero<T>(ref T field) where T : SyntaxNode
{
var result = field;
if (result == null)
{
var green = Green.GetSlot(0);
if (green != null)
{
Interlocked.CompareExchange(ref field, (T)green.CreateRed(this, Position), null);
result = field;
}
}
return result;
}
internal SyntaxNode GetRedElement(ref SyntaxNode element, int slot)
{
Debug.Assert(IsList);

View File

@ -0,0 +1,13 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
internal static class SyntaxNodeExtensions
{
public static TNode WithAnnotations<TNode>(this TNode node, params SyntaxAnnotation[] annotations) where TNode : SyntaxNode
{
return (TNode)node.Green.SetAnnotations(annotations).CreateRed();
}
}
}

View File

@ -69,9 +69,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax
throw new InvalidOperationException("Tokens can't have slots.");
}
internal override SyntaxNode Accept(SyntaxVisitor visitor)
public override TResult Accept<TResult>(SyntaxVisitor<TResult> visitor)
{
return visitor.VisitSyntaxToken(this);
return visitor.VisitToken(this);
}
public override void Accept(SyntaxVisitor visitor)
{
visitor.VisitToken(this);
}
public SyntaxToken WithLeadingTrivia(SyntaxNode trivia)

View File

@ -26,9 +26,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Syntax
throw new InvalidOperationException();
}
internal override SyntaxNode Accept(SyntaxVisitor visitor)
public override TResult Accept<TResult>(SyntaxVisitor<TResult> visitor)
{
return visitor.VisitSyntaxTrivia(this);
return visitor.VisitTrivia(this);
}
public override void Accept(SyntaxVisitor visitor)
{
visitor.VisitTrivia(this);
}
public sealed override SyntaxTriviaList GetTrailingTrivia()

View File

@ -3,41 +3,56 @@
namespace Microsoft.AspNetCore.Razor.Language.Syntax
{
internal abstract class SyntaxVisitor
internal abstract partial class SyntaxVisitor<TResult>
{
public virtual SyntaxNode Visit(SyntaxNode node)
public virtual TResult Visit(SyntaxNode node)
{
if (node != null)
{
return node.Accept(this);
}
return null;
return default(TResult);
}
public virtual SyntaxNode VisitSyntaxNode(SyntaxNode node)
public virtual TResult VisitToken(SyntaxToken token)
{
return node;
return DefaultVisit(token);
}
public virtual SyntaxNode VisitHtmlNode(HtmlNodeSyntax node)
public virtual TResult VisitTrivia(SyntaxTrivia trivia)
{
return VisitSyntaxNode(node);
return DefaultVisit(trivia);
}
public virtual SyntaxNode VisitHtmlText(HtmlTextSyntax node)
protected virtual TResult DefaultVisit(SyntaxNode node)
{
return VisitHtmlNode(node);
return default(TResult);
}
}
internal abstract partial class SyntaxVisitor
{
public virtual void Visit(SyntaxNode node)
{
if (node != null)
{
node.Accept(this);
}
}
public virtual SyntaxToken VisitSyntaxToken(SyntaxToken token)
public virtual void VisitToken(SyntaxToken token)
{
return token;
DefaultVisit(token);
}
public virtual SyntaxTrivia VisitSyntaxTrivia(SyntaxTrivia trivia)
public virtual void VisitTrivia(SyntaxTrivia trivia)
{
DefaultVisit(trivia);
}
public virtual void DefaultVisit(SyntaxNode node)
{
return trivia;
}
}
}

View File

@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@* Foo * Bar * Baz *",
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, " Foo * Bar * Baz *"));
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, " Foo * Bar * Baz *"));
}
[Fact]
@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@* Foo * Bar * Baz *@",
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, " Foo * Bar * Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, " Foo * Bar * Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"));
}
@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@* Foo Bar Baz *@",
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, " Foo Bar Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, " Foo Bar Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"));
}

View File

@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@*included*@\r\n @something \"value\"\r\n @this is ignored",
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, "included"),
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, "included"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.NewLine, "\r\n"),

View File

@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
SyntaxFactory.Token(SyntaxKind.Whitespace, " "),
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, "included"),
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, "included"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.Whitespace, " "),

View File

@ -134,7 +134,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@* Foo * Bar * Baz *",
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, " Foo * Bar * Baz *"));
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, " Foo * Bar * Baz *"));
}
[Fact]
@ -144,7 +144,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@* Foo * Bar * Baz *@",
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, " Foo * Bar * Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, " Foo * Bar * Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"));
}
@ -156,7 +156,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@* Foo Bar Baz *@",
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorComment, " Foo Bar Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentLiteral, " Foo Bar Baz "),
SyntaxFactory.Token(SyntaxKind.RazorCommentStar, "*"),
SyntaxFactory.Token(SyntaxKind.RazorCommentTransition, "@"));
}

View File

@ -31,7 +31,7 @@ Statement block - Gen<None> - 75 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (38:0,38) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Foo ] - SpanEditHandler;Accepts:Any - (39:0,39) - Tokens:1
SyntaxKind.RazorComment;[ Foo ];
SyntaxKind.RazorCommentLiteral;[ Foo ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (44:0,44) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (45:0,45) - Tokens:1
@ -44,7 +44,7 @@ Statement block - Gen<None> - 75 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (48:0,48) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Bar ] - SpanEditHandler;Accepts:Any - (49:0,49) - Tokens:1
SyntaxKind.RazorComment;[ Bar ];
SyntaxKind.RazorCommentLiteral;[ Bar ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (54:0,54) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (55:0,55) - Tokens:1

View File

@ -21,7 +21,7 @@ Statement block - Gen<None> - 54 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (23:0,23) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Foo ] - SpanEditHandler;Accepts:Any - (24:0,24) - Tokens:1
SyntaxKind.RazorComment;[ Foo ];
SyntaxKind.RazorCommentLiteral;[ Foo ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (29:0,29) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (30:0,30) - Tokens:1
@ -34,7 +34,7 @@ Statement block - Gen<None> - 54 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (33:0,33) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Bar ] - SpanEditHandler;Accepts:Any - (34:0,34) - Tokens:1
SyntaxKind.RazorComment;[ Bar ];
SyntaxKind.RazorCommentLiteral;[ Bar ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (39:0,39) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (40:0,40) - Tokens:1

View File

@ -36,7 +36,7 @@ Statement block - Gen<None> - 78 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (44:0,44) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Foo ] - SpanEditHandler;Accepts:Any - (45:0,45) - Tokens:1
SyntaxKind.RazorComment;[ Foo ];
SyntaxKind.RazorCommentLiteral;[ Foo ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (50:0,50) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (51:0,51) - Tokens:1
@ -49,7 +49,7 @@ Statement block - Gen<None> - 78 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (54:0,54) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Bar ] - SpanEditHandler;Accepts:Any - (55:0,55) - Tokens:1
SyntaxKind.RazorComment;[ Bar ];
SyntaxKind.RazorCommentLiteral;[ Bar ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (60:0,60) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (61:0,61) - Tokens:1

View File

@ -20,7 +20,7 @@ Statement block - Gen<None> - 54 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (20:0,20) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Foo ] - SpanEditHandler;Accepts:Any - (21:0,21) - Tokens:1
SyntaxKind.RazorComment;[ Foo ];
SyntaxKind.RazorCommentLiteral;[ Foo ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (26:0,26) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Tokens:1
@ -33,7 +33,7 @@ Statement block - Gen<None> - 54 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (30:0,30) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Bar ] - SpanEditHandler;Accepts:Any - (31:0,31) - Tokens:1
SyntaxKind.RazorComment;[ Bar ];
SyntaxKind.RazorCommentLiteral;[ Bar ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (36:0,36) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (37:0,37) - Tokens:1

View File

@ -20,7 +20,7 @@ Statement block - Gen<None> - 62 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (20:0,20) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Foo ] - SpanEditHandler;Accepts:Any - (21:0,21) - Tokens:1
SyntaxKind.RazorComment;[ Foo ];
SyntaxKind.RazorCommentLiteral;[ Foo ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (26:0,26) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Tokens:1
@ -33,7 +33,7 @@ Statement block - Gen<None> - 62 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (30:0,30) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Bar ] - SpanEditHandler;Accepts:Any - (31:0,31) - Tokens:1
SyntaxKind.RazorComment;[ Bar ];
SyntaxKind.RazorCommentLiteral;[ Bar ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (36:0,36) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (37:0,37) - Tokens:1

View File

@ -16,7 +16,7 @@ Statement block - Gen<None> - 55 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (15:0,15) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Foo ] - SpanEditHandler;Accepts:Any - (16:0,16) - Tokens:1
SyntaxKind.RazorComment;[ Foo ];
SyntaxKind.RazorCommentLiteral;[ Foo ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (21:0,21) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (22:0,22) - Tokens:1
@ -29,7 +29,7 @@ Statement block - Gen<None> - 55 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (25:0,25) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Bar ] - SpanEditHandler;Accepts:Any - (26:0,26) - Tokens:1
SyntaxKind.RazorComment;[ Bar ];
SyntaxKind.RazorCommentLiteral;[ Bar ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (31:0,31) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (32:0,32) - Tokens:1

View File

@ -17,7 +17,7 @@ Statement block - Gen<None> - 53 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (16:0,16) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Foo ] - SpanEditHandler;Accepts:Any - (17:0,17) - Tokens:1
SyntaxKind.RazorComment;[ Foo ];
SyntaxKind.RazorCommentLiteral;[ Foo ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (22:0,22) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (23:0,23) - Tokens:1
@ -30,7 +30,7 @@ Statement block - Gen<None> - 53 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (26:0,26) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ Bar ] - SpanEditHandler;Accepts:Any - (27:0,27) - Tokens:1
SyntaxKind.RazorComment;[ Bar ];
SyntaxKind.RazorCommentLiteral;[ Bar ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (32:0,32) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (33:0,33) - Tokens:1

View File

@ -7,7 +7,7 @@ Markup block - Gen<None> - 130 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (1:0,1) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ There are two directives beneath this ] - SpanEditHandler;Accepts:Any - (2:0,2) - Tokens:1
SyntaxKind.RazorComment;[ There are two directives beneath this ];
SyntaxKind.RazorCommentLiteral;[ There are two directives beneath this ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (41:0,41) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (42:0,42) - Tokens:1

View File

@ -16,7 +16,7 @@ Markup block - Gen<None> - 33 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (14:0,14) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ razor comment ] - SpanEditHandler;Accepts:Any - (15:0,15) - Tokens:1
SyntaxKind.RazorComment;[ razor comment ];
SyntaxKind.RazorCommentLiteral;[ razor comment ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (30:0,30) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (31:0,31) - Tokens:1

View File

@ -10,7 +10,7 @@ Markup block - Gen<None> - 33 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (7:0,7) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ razor comment ] - SpanEditHandler;Accepts:Any - (8:0,8) - Tokens:1
SyntaxKind.RazorComment;[ razor comment ];
SyntaxKind.RazorCommentLiteral;[ razor comment ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (23:0,23) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (24:0,24) - Tokens:1

View File

@ -13,7 +13,7 @@ Markup block - Gen<None> - 45 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (8:2,1) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ content ] - SpanEditHandler;Accepts:Any - (9:2,2) - Tokens:1
SyntaxKind.RazorComment;[ content ];
SyntaxKind.RazorCommentLiteral;[ content ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (18:2,11) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (19:2,12) - Tokens:1
@ -26,7 +26,7 @@ Markup block - Gen<None> - 45 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (23:3,1) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [LFcontentLF] - SpanEditHandler;Accepts:Any - (24:3,2) - Tokens:1
SyntaxKind.RazorComment;[LFcontentLF];
SyntaxKind.RazorCommentLiteral;[LFcontentLF];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (35:5,0) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (36:5,1) - Tokens:1

View File

@ -12,7 +12,7 @@ Markup block - Gen<None> - 42 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (6:1,1) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ hello ] - SpanEditHandler;Accepts:Any - (7:1,2) - Tokens:1
SyntaxKind.RazorComment;[ hello ];
SyntaxKind.RazorCommentLiteral;[ hello ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (14:1,9) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (15:1,10) - Tokens:1
@ -27,7 +27,7 @@ Markup block - Gen<None> - 42 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (26:1,21) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [ world ] - SpanEditHandler;Accepts:Any - (27:1,22) - Tokens:1
SyntaxKind.RazorComment;[ world ];
SyntaxKind.RazorCommentLiteral;[ world ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (34:1,29) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (35:1,30) - Tokens:1

View File

@ -20,7 +20,7 @@ Markup block - Gen<None> - 26 - (0:0,0)
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (15:0,15) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Comment span - Gen<None> - [asdf] - SpanEditHandler;Accepts:Any - (16:0,16) - Tokens:1
SyntaxKind.RazorComment;[asdf];
SyntaxKind.RazorCommentLiteral;[asdf];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (20:0,20) - Tokens:1
SyntaxKind.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (21:0,21) - Tokens:1