diff --git a/ConsoleDemo/PrettyPrinter.cs b/ConsoleDemo/PrettyPrinter.cs index 0cbf492..c5221f7 100644 --- a/ConsoleDemo/PrettyPrinter.cs +++ b/ConsoleDemo/PrettyPrinter.cs @@ -118,7 +118,7 @@ namespace ProjectConsole OutputKeyword(node.ClassdefKeyword); Visit(node.Attributes); BoldOn(); - Visit(node.ClassName); + OutputIdentifier(node.ClassName); BoldOff(); Visit(node.BaseClassList); Visit(node.Nodes); @@ -355,7 +355,7 @@ namespace ProjectConsole public override void VisitCommandExpression(CommandExpressionSyntaxNode node) { - Visit(node.CommandName); + OutputIdentifier(node.CommandName); Visit(node.Arguments); } @@ -391,7 +391,7 @@ namespace ProjectConsole public override void VisitAttribute(AttributeSyntaxNode node) { - Visit(node.Name); + OutputIdentifier(node.Name); Visit(node.Assignment); } @@ -454,7 +454,7 @@ namespace ProjectConsole public override void VisitEnumerationItem(EnumerationItemSyntaxNode node) { - Visit(node.Name); + OutputIdentifier(node.Name); Visit(node.Values); Visit(node.Commas); } diff --git a/MApplication/ColoringVisitor.cs b/MApplication/ColoringVisitor.cs index 28aa2f6..3504b19 100644 --- a/MApplication/ColoringVisitor.cs +++ b/MApplication/ColoringVisitor.cs @@ -89,7 +89,7 @@ namespace MApplication { AddToken(node.ClassdefKeyword, _scheme.Keyword); Visit(node.Attributes); - Visit(node.ClassName); + AddToken(node.ClassName, _scheme.Identifier); Visit(node.BaseClassList); Visit(node.Nodes); AddToken(node.EndKeyword, _scheme.Keyword); @@ -302,7 +302,7 @@ namespace MApplication public override void VisitCommandExpression(CommandExpressionSyntaxNode node) { - Visit(node.CommandName); + AddToken(node.CommandName, _scheme.Identifier); Visit(node.Arguments); } @@ -338,7 +338,7 @@ namespace MApplication public override void VisitAttribute(AttributeSyntaxNode node) { - Visit(node.Name); + AddToken(node.Name, _scheme.Identifier); Visit(node.Assignment); } @@ -401,7 +401,7 @@ namespace MApplication public override void VisitEnumerationItem(EnumerationItemSyntaxNode node) { - Visit(node.Name); + AddToken(node.Name, _scheme.Identifier); Visit(node.Values); Visit(node.Commas); } diff --git a/Parser/Internal/MParserGreen.cs b/Parser/Internal/MParserGreen.cs index bc87a9b..44587c8 100644 --- a/Parser/Internal/MParserGreen.cs +++ b/Parser/Internal/MParserGreen.cs @@ -422,7 +422,7 @@ namespace Parser.Internal builder.Add(Factory.UnquotedStringLiteralSyntax(EatToken())); } - return Factory.CommandExpressionSyntax(idNameNode, builder.ToList()); + return Factory.CommandExpressionSyntax(idNameNode._name, builder.ToList()); } if (expression is null) @@ -866,7 +866,7 @@ namespace Parser.Internal private AttributeSyntaxNode ParseAttribute() { - var name = Factory.IdentifierNameExpressionSyntax(EatToken(TokenKind.IdentifierToken)); + var name = EatToken(TokenKind.IdentifierToken); var assignment = ParseAttributeAssignment(); return Factory.AttributeSyntax(name, assignment); } @@ -1023,7 +1023,7 @@ namespace Parser.Internal private EnumerationItemSyntaxNode ParseEnumerationItem() { - var name = Factory.IdentifierNameExpressionSyntax(EatToken()); + var name = EatToken(); var values = ParseEnumerationValue(); var commas = ParseOptionalCommas(); return Factory.EnumerationItemSyntax(name, values, commas); @@ -1104,7 +1104,7 @@ namespace Parser.Internal { attributes = ParseAttributesList(); } - var className = Factory.IdentifierNameExpressionSyntax(EatToken(TokenKind.IdentifierToken)); + var className = EatToken(TokenKind.IdentifierToken); BaseClassListSyntaxNode? baseClassList = null; if (CurrentToken.Kind == TokenKind.LessToken) { diff --git a/Parser/Internal/SyntaxFactory.Generated.cs b/Parser/Internal/SyntaxFactory.Generated.cs index 389f615..393bcbe 100644 --- a/Parser/Internal/SyntaxFactory.Generated.cs +++ b/Parser/Internal/SyntaxFactory.Generated.cs @@ -178,7 +178,7 @@ namespace Parser.Internal return new IndirectMemberAccessSyntaxNode(openingBracket, expression, closingBracket); } - public CommandExpressionSyntaxNode CommandExpressionSyntax(IdentifierNameExpressionSyntaxNode commandName, SyntaxList arguments) + public CommandExpressionSyntaxNode CommandExpressionSyntax(SyntaxToken commandName, SyntaxList arguments) { return new CommandExpressionSyntaxNode(commandName, arguments); } @@ -193,7 +193,7 @@ namespace Parser.Internal return new AttributeAssignmentSyntaxNode(assignmentSign, value); } - public AttributeSyntaxNode AttributeSyntax(IdentifierNameExpressionSyntaxNode name, AttributeAssignmentSyntaxNode? assignment) + public AttributeSyntaxNode AttributeSyntax(SyntaxToken name, AttributeAssignmentSyntaxNode? assignment) { return new AttributeSyntaxNode(name, assignment); } @@ -228,7 +228,7 @@ namespace Parser.Internal return new BaseClassListSyntaxNode(lessSign, baseClasses); } - public ClassDeclarationSyntaxNode ClassDeclarationSyntax(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, IdentifierNameExpressionSyntaxNode className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword) + public ClassDeclarationSyntaxNode ClassDeclarationSyntax(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, SyntaxToken className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword) { return new ClassDeclarationSyntaxNode(classdefKeyword, attributes, className, baseClassList, nodes, endKeyword); } @@ -238,7 +238,7 @@ namespace Parser.Internal return new EnumerationItemValueSyntaxNode(openingBracket, values, closingBracket); } - public EnumerationItemSyntaxNode EnumerationItemSyntax(IdentifierNameExpressionSyntaxNode name, EnumerationItemValueSyntaxNode? values, SyntaxList commas) + public EnumerationItemSyntaxNode EnumerationItemSyntax(SyntaxToken name, EnumerationItemValueSyntaxNode? values, SyntaxList commas) { return new EnumerationItemSyntaxNode(name, values, commas); } diff --git a/Parser/Internal/SyntaxNode.Generated.cs b/Parser/Internal/SyntaxNode.Generated.cs index c5cf33c..fcf0d13 100644 --- a/Parser/Internal/SyntaxNode.Generated.cs +++ b/Parser/Internal/SyntaxNode.Generated.cs @@ -1648,9 +1648,9 @@ namespace Parser.Internal internal class CommandExpressionSyntaxNode : ExpressionSyntaxNode { - internal readonly IdentifierNameExpressionSyntaxNode _commandName; + internal readonly SyntaxToken _commandName; internal readonly SyntaxList _arguments; - internal CommandExpressionSyntaxNode(IdentifierNameExpressionSyntaxNode commandName, SyntaxList arguments): base(TokenKind.CommandExpression) + internal CommandExpressionSyntaxNode(SyntaxToken commandName, SyntaxList arguments): base(TokenKind.CommandExpression) { Slots = 2; this.AdjustWidth(commandName); @@ -1659,7 +1659,7 @@ namespace Parser.Internal _arguments = arguments; } - internal CommandExpressionSyntaxNode(IdentifierNameExpressionSyntaxNode commandName, SyntaxList arguments, TokenDiagnostic[] diagnostics): base(TokenKind.CommandExpression, diagnostics) + internal CommandExpressionSyntaxNode(SyntaxToken commandName, SyntaxList arguments, TokenDiagnostic[] diagnostics): base(TokenKind.CommandExpression, diagnostics) { Slots = 2; this.AdjustWidth(commandName); @@ -1782,9 +1782,9 @@ namespace Parser.Internal internal class AttributeSyntaxNode : SyntaxNode { - internal readonly IdentifierNameExpressionSyntaxNode _name; + internal readonly SyntaxToken _name; internal readonly AttributeAssignmentSyntaxNode? _assignment; - internal AttributeSyntaxNode(IdentifierNameExpressionSyntaxNode name, AttributeAssignmentSyntaxNode? assignment): base(TokenKind.Attribute) + internal AttributeSyntaxNode(SyntaxToken name, AttributeAssignmentSyntaxNode? assignment): base(TokenKind.Attribute) { Slots = 2; this.AdjustWidth(name); @@ -1793,7 +1793,7 @@ namespace Parser.Internal _assignment = assignment; } - internal AttributeSyntaxNode(IdentifierNameExpressionSyntaxNode name, AttributeAssignmentSyntaxNode? assignment, TokenDiagnostic[] diagnostics): base(TokenKind.Attribute, diagnostics) + internal AttributeSyntaxNode(SyntaxToken name, AttributeAssignmentSyntaxNode? assignment, TokenDiagnostic[] diagnostics): base(TokenKind.Attribute, diagnostics) { Slots = 2; this.AdjustWidth(name); @@ -2140,11 +2140,11 @@ namespace Parser.Internal { internal readonly SyntaxToken _classdefKeyword; internal readonly AttributeListSyntaxNode? _attributes; - internal readonly IdentifierNameExpressionSyntaxNode _className; + internal readonly SyntaxToken _className; internal readonly BaseClassListSyntaxNode? _baseClassList; internal readonly SyntaxList _nodes; internal readonly SyntaxToken _endKeyword; - internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, IdentifierNameExpressionSyntaxNode className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword): base(TokenKind.ClassDeclaration) + internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, SyntaxToken className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword): base(TokenKind.ClassDeclaration) { Slots = 6; this.AdjustWidth(classdefKeyword); @@ -2161,7 +2161,7 @@ namespace Parser.Internal _endKeyword = endKeyword; } - internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, IdentifierNameExpressionSyntaxNode className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword, TokenDiagnostic[] diagnostics): base(TokenKind.ClassDeclaration, diagnostics) + internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, SyntaxToken className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword, TokenDiagnostic[] diagnostics): base(TokenKind.ClassDeclaration, diagnostics) { Slots = 6; this.AdjustWidth(classdefKeyword); @@ -2249,10 +2249,10 @@ namespace Parser.Internal internal class EnumerationItemSyntaxNode : SyntaxNode { - internal readonly IdentifierNameExpressionSyntaxNode _name; + internal readonly SyntaxToken _name; internal readonly EnumerationItemValueSyntaxNode? _values; internal readonly SyntaxList _commas; - internal EnumerationItemSyntaxNode(IdentifierNameExpressionSyntaxNode name, EnumerationItemValueSyntaxNode? values, SyntaxList commas): base(TokenKind.EnumerationItem) + internal EnumerationItemSyntaxNode(SyntaxToken name, EnumerationItemValueSyntaxNode? values, SyntaxList commas): base(TokenKind.EnumerationItem) { Slots = 3; this.AdjustWidth(name); @@ -2263,7 +2263,7 @@ namespace Parser.Internal _commas = commas; } - internal EnumerationItemSyntaxNode(IdentifierNameExpressionSyntaxNode name, EnumerationItemValueSyntaxNode? values, SyntaxList commas, TokenDiagnostic[] diagnostics): base(TokenKind.EnumerationItem, diagnostics) + internal EnumerationItemSyntaxNode(SyntaxToken name, EnumerationItemValueSyntaxNode? values, SyntaxList commas, TokenDiagnostic[] diagnostics): base(TokenKind.EnumerationItem, diagnostics) { Slots = 3; this.AdjustWidth(name); diff --git a/Parser/SyntaxDefinition.xml b/Parser/SyntaxDefinition.xml index 7c2b538..81c1532 100644 --- a/Parser/SyntaxDefinition.xml +++ b/Parser/SyntaxDefinition.xml @@ -169,7 +169,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/Parser/SyntaxNode.Generated.cs b/Parser/SyntaxNode.Generated.cs index 96c114e..3ac4d57 100644 --- a/Parser/SyntaxNode.Generated.cs +++ b/Parser/SyntaxNode.Generated.cs @@ -1663,18 +1663,16 @@ namespace Parser public class CommandExpressionSyntaxNode : ExpressionSyntaxNode { - private SyntaxNode? _commandName; private SyntaxNode? _arguments; internal CommandExpressionSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) { } - public IdentifierNameExpressionSyntaxNode CommandName + public SyntaxToken CommandName { get { - var red = this.GetRed(ref this._commandName!, 0); - return red is null ? throw new System.Exception("commandName cannot be null.") : (IdentifierNameExpressionSyntaxNode)red; + return new SyntaxToken(this, ((Parser.Internal.CommandExpressionSyntaxNode)_green)._commandName, this.GetChildPosition(0)); } } @@ -1691,7 +1689,7 @@ namespace Parser { return i switch { - 0 => GetRed(ref _commandName!, 0), 1 => GetRed(ref _arguments!, 1), _ => null + 1 => GetRed(ref _arguments!, 1), _ => null } ; @@ -1795,18 +1793,16 @@ namespace Parser public class AttributeSyntaxNode : SyntaxNode { - private SyntaxNode? _name; private SyntaxNode? _assignment; internal AttributeSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) { } - public IdentifierNameExpressionSyntaxNode Name + public SyntaxToken Name { get { - var red = this.GetRed(ref this._name!, 0); - return red is null ? throw new System.Exception("name cannot be null.") : (IdentifierNameExpressionSyntaxNode)red; + return new SyntaxToken(this, ((Parser.Internal.AttributeSyntaxNode)_green)._name, this.GetChildPosition(0)); } } @@ -1823,7 +1819,7 @@ namespace Parser { return i switch { - 0 => GetRed(ref _name!, 0), 1 => GetRed(ref _assignment, 1), _ => null + 1 => GetRed(ref _assignment, 1), _ => null } ; @@ -2184,7 +2180,6 @@ namespace Parser public class ClassDeclarationSyntaxNode : StatementSyntaxNode { private SyntaxNode? _attributes; - private SyntaxNode? _className; private SyntaxNode? _baseClassList; private SyntaxNode? _nodes; internal ClassDeclarationSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) @@ -2199,6 +2194,14 @@ namespace Parser } } + public SyntaxToken ClassName + { + get + { + return new SyntaxToken(this, ((Parser.Internal.ClassDeclarationSyntaxNode)_green)._className, this.GetChildPosition(2)); + } + } + public SyntaxToken EndKeyword { get @@ -2216,15 +2219,6 @@ namespace Parser } } - public IdentifierNameExpressionSyntaxNode ClassName - { - get - { - var red = this.GetRed(ref this._className!, 2); - return red is null ? throw new System.Exception("className cannot be null.") : (IdentifierNameExpressionSyntaxNode)red; - } - } - public BaseClassListSyntaxNode? BaseClassList { get @@ -2247,7 +2241,7 @@ namespace Parser { return i switch { - 1 => GetRed(ref _attributes, 1), 2 => GetRed(ref _className!, 2), 3 => GetRed(ref _baseClassList, 3), 4 => GetRed(ref _nodes!, 4), _ => null + 1 => GetRed(ref _attributes, 1), 3 => GetRed(ref _baseClassList, 3), 4 => GetRed(ref _nodes!, 4), _ => null } ; @@ -2309,19 +2303,17 @@ namespace Parser public class EnumerationItemSyntaxNode : SyntaxNode { - private SyntaxNode? _name; private SyntaxNode? _values; private SyntaxNode? _commas; internal EnumerationItemSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) { } - public IdentifierNameExpressionSyntaxNode Name + public SyntaxToken Name { get { - var red = this.GetRed(ref this._name!, 0); - return red is null ? throw new System.Exception("name cannot be null.") : (IdentifierNameExpressionSyntaxNode)red; + return new SyntaxToken(this, ((Parser.Internal.EnumerationItemSyntaxNode)_green)._name, this.GetChildPosition(0)); } } @@ -2347,7 +2339,7 @@ namespace Parser { return i switch { - 0 => GetRed(ref _name!, 0), 1 => GetRed(ref _values, 1), 2 => GetRed(ref _commas!, 2), _ => null + 1 => GetRed(ref _values, 1), 2 => GetRed(ref _commas!, 2), _ => null } ;