Merge pull request #2 from mahalex/roslyn-code-generator

Use Roslyn in SyntaxGenerator
This commit is contained in:
Alexander Luzgarev 2020-07-05 10:44:11 +02:00 committed by GitHub
commit 078eb003d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 1817 additions and 2198 deletions

View File

@ -3,198 +3,84 @@ namespace Parser.Internal
{
internal partial class SyntaxFactory
{
public FileSyntaxNode FileSyntax(
SyntaxList statementList,
SyntaxToken endOfFile)
public FileSyntaxNode FileSyntax(SyntaxList statementList, SyntaxToken endOfFile)
{
return new FileSyntaxNode(
statementList,
endOfFile);
return new FileSyntaxNode(statementList, endOfFile);
}
public FunctionDeclarationSyntaxNode FunctionDeclarationSyntax(
SyntaxToken functionKeyword,
FunctionOutputDescriptionSyntaxNode? outputDescription,
SyntaxToken name,
FunctionInputDescriptionSyntaxNode? inputDescription,
SyntaxList<SyntaxToken> commas,
SyntaxList body,
EndKeywordSyntaxNode? endKeyword)
public FunctionDeclarationSyntaxNode FunctionDeclarationSyntax(SyntaxToken functionKeyword, FunctionOutputDescriptionSyntaxNode? outputDescription, SyntaxToken name, FunctionInputDescriptionSyntaxNode? inputDescription, SyntaxList<SyntaxToken> commas, SyntaxList body, EndKeywordSyntaxNode? endKeyword)
{
return new FunctionDeclarationSyntaxNode(
functionKeyword,
outputDescription,
name,
inputDescription,
commas,
body,
endKeyword);
return new FunctionDeclarationSyntaxNode(functionKeyword, outputDescription, name, inputDescription, commas, body, endKeyword);
}
public FunctionOutputDescriptionSyntaxNode FunctionOutputDescriptionSyntax(
SyntaxList outputList,
SyntaxToken assignmentSign)
public FunctionOutputDescriptionSyntaxNode FunctionOutputDescriptionSyntax(SyntaxList outputList, SyntaxToken assignmentSign)
{
return new FunctionOutputDescriptionSyntaxNode(
outputList,
assignmentSign);
return new FunctionOutputDescriptionSyntaxNode(outputList, assignmentSign);
}
public FunctionInputDescriptionSyntaxNode FunctionInputDescriptionSyntax(
SyntaxToken openingBracket,
SyntaxList parameterList,
SyntaxToken closingBracket)
public FunctionInputDescriptionSyntaxNode FunctionInputDescriptionSyntax(SyntaxToken openingBracket, SyntaxList parameterList, SyntaxToken closingBracket)
{
return new FunctionInputDescriptionSyntaxNode(
openingBracket,
parameterList,
closingBracket);
return new FunctionInputDescriptionSyntaxNode(openingBracket, parameterList, closingBracket);
}
public SwitchStatementSyntaxNode SwitchStatementSyntax(
SyntaxToken switchKeyword,
ExpressionSyntaxNode switchExpression,
SyntaxList<SyntaxToken> optionalCommas,
SyntaxList<SwitchCaseSyntaxNode> cases,
SyntaxToken endKeyword)
public SwitchStatementSyntaxNode SwitchStatementSyntax(SyntaxToken switchKeyword, ExpressionSyntaxNode switchExpression, SyntaxList<SyntaxToken> optionalCommas, SyntaxList<SwitchCaseSyntaxNode> cases, SyntaxToken endKeyword)
{
return new SwitchStatementSyntaxNode(
switchKeyword,
switchExpression,
optionalCommas,
cases,
endKeyword);
return new SwitchStatementSyntaxNode(switchKeyword, switchExpression, optionalCommas, cases, endKeyword);
}
public SwitchCaseSyntaxNode SwitchCaseSyntax(
SyntaxToken caseKeyword,
ExpressionSyntaxNode caseIdentifier,
SyntaxList<SyntaxToken> optionalCommas,
SyntaxList body)
public SwitchCaseSyntaxNode SwitchCaseSyntax(SyntaxToken caseKeyword, ExpressionSyntaxNode caseIdentifier, SyntaxList<SyntaxToken> optionalCommas, SyntaxList body)
{
return new SwitchCaseSyntaxNode(
caseKeyword,
caseIdentifier,
optionalCommas,
body);
return new SwitchCaseSyntaxNode(caseKeyword, caseIdentifier, optionalCommas, body);
}
public WhileStatementSyntaxNode WhileStatementSyntax(
SyntaxToken whileKeyword,
ExpressionSyntaxNode condition,
SyntaxList<SyntaxToken> optionalCommas,
SyntaxList body,
SyntaxToken endKeyword)
public WhileStatementSyntaxNode WhileStatementSyntax(SyntaxToken whileKeyword, ExpressionSyntaxNode condition, SyntaxList<SyntaxToken> optionalCommas, SyntaxList body, SyntaxToken endKeyword)
{
return new WhileStatementSyntaxNode(
whileKeyword,
condition,
optionalCommas,
body,
endKeyword);
return new WhileStatementSyntaxNode(whileKeyword, condition, optionalCommas, body, endKeyword);
}
public ElseifClause ElseifClause(
SyntaxToken elseifKeyword,
ExpressionSyntaxNode condition,
SyntaxList<SyntaxToken> optionalCommas,
SyntaxList body)
public ElseifClause ElseifClause(SyntaxToken elseifKeyword, ExpressionSyntaxNode condition, SyntaxList<SyntaxToken> optionalCommas, SyntaxList body)
{
return new ElseifClause(
elseifKeyword,
condition,
optionalCommas,
body);
return new ElseifClause(elseifKeyword, condition, optionalCommas, body);
}
public ElseClause ElseClause(
SyntaxToken elseKeyword,
SyntaxList body)
public ElseClause ElseClause(SyntaxToken elseKeyword, SyntaxList body)
{
return new ElseClause(
elseKeyword,
body);
return new ElseClause(elseKeyword, body);
}
public IfStatementSyntaxNode IfStatementSyntax(
SyntaxToken ifKeyword,
ExpressionSyntaxNode condition,
SyntaxList<SyntaxToken> optionalCommas,
SyntaxList body,
SyntaxList<ElseifClause> elseifClauses,
ElseClause? elseClause,
SyntaxToken endKeyword)
public IfStatementSyntaxNode IfStatementSyntax(SyntaxToken ifKeyword, ExpressionSyntaxNode condition, SyntaxList<SyntaxToken> optionalCommas, SyntaxList body, SyntaxList<ElseifClause> elseifClauses, ElseClause? elseClause, SyntaxToken endKeyword)
{
return new IfStatementSyntaxNode(
ifKeyword,
condition,
optionalCommas,
body,
elseifClauses,
elseClause,
endKeyword);
return new IfStatementSyntaxNode(ifKeyword, condition, optionalCommas, body, elseifClauses, elseClause, endKeyword);
}
public ForStatementSyntaxNode ForStatementSyntax(
SyntaxToken forKeyword,
AssignmentExpressionSyntaxNode assignment,
SyntaxList<SyntaxToken> optionalCommas,
SyntaxList body,
SyntaxToken endKeyword)
public ForStatementSyntaxNode ForStatementSyntax(SyntaxToken forKeyword, AssignmentExpressionSyntaxNode assignment, SyntaxList<SyntaxToken> optionalCommas, SyntaxList body, SyntaxToken endKeyword)
{
return new ForStatementSyntaxNode(
forKeyword,
assignment,
optionalCommas,
body,
endKeyword);
return new ForStatementSyntaxNode(forKeyword, assignment, optionalCommas, body, endKeyword);
}
public AssignmentExpressionSyntaxNode AssignmentExpressionSyntax(
ExpressionSyntaxNode lhs,
SyntaxToken assignmentSign,
ExpressionSyntaxNode rhs)
public AssignmentExpressionSyntaxNode AssignmentExpressionSyntax(ExpressionSyntaxNode lhs, SyntaxToken assignmentSign, ExpressionSyntaxNode rhs)
{
return new AssignmentExpressionSyntaxNode(
lhs,
assignmentSign,
rhs);
return new AssignmentExpressionSyntaxNode(lhs, assignmentSign, rhs);
}
public CatchClauseSyntaxNode CatchClauseSyntax(
SyntaxToken catchKeyword,
SyntaxList catchBody)
public CatchClauseSyntaxNode CatchClauseSyntax(SyntaxToken catchKeyword, SyntaxList catchBody)
{
return new CatchClauseSyntaxNode(
catchKeyword,
catchBody);
return new CatchClauseSyntaxNode(catchKeyword, catchBody);
}
public TryCatchStatementSyntaxNode TryCatchStatementSyntax(
SyntaxToken tryKeyword,
SyntaxList tryBody,
CatchClauseSyntaxNode? catchClause,
SyntaxToken endKeyword)
public TryCatchStatementSyntaxNode TryCatchStatementSyntax(SyntaxToken tryKeyword, SyntaxList tryBody, CatchClauseSyntaxNode? catchClause, SyntaxToken endKeyword)
{
return new TryCatchStatementSyntaxNode(
tryKeyword,
tryBody,
catchClause,
endKeyword);
return new TryCatchStatementSyntaxNode(tryKeyword, tryBody, catchClause, endKeyword);
}
public ExpressionStatementSyntaxNode ExpressionStatementSyntax(
ExpressionSyntaxNode expression)
public ExpressionStatementSyntaxNode ExpressionStatementSyntax(ExpressionSyntaxNode expression)
{
return new ExpressionStatementSyntaxNode(
expression);
return new ExpressionStatementSyntaxNode(expression);
}
public EmptyStatementSyntaxNode EmptyStatementSyntax(
SyntaxToken semicolon)
public EmptyStatementSyntaxNode EmptyStatementSyntax(SyntaxToken semicolon)
{
return new EmptyStatementSyntaxNode(
semicolon);
return new EmptyStatementSyntaxNode(semicolon);
}
public EmptyExpressionSyntaxNode EmptyExpressionSyntax()
@ -202,362 +88,174 @@ namespace Parser.Internal
return new EmptyExpressionSyntaxNode();
}
public UnaryPrefixOperationExpressionSyntaxNode UnaryPrefixOperationExpressionSyntax(
SyntaxToken operation,
ExpressionSyntaxNode operand)
public UnaryPrefixOperationExpressionSyntaxNode UnaryPrefixOperationExpressionSyntax(SyntaxToken operation, ExpressionSyntaxNode operand)
{
return new UnaryPrefixOperationExpressionSyntaxNode(
operation,
operand);
return new UnaryPrefixOperationExpressionSyntaxNode(operation, operand);
}
public CompoundNameSyntaxNode CompoundNameSyntax(
SyntaxList nodes)
public CompoundNameSyntaxNode CompoundNameSyntax(SyntaxList nodes)
{
return new CompoundNameSyntaxNode(
nodes);
return new CompoundNameSyntaxNode(nodes);
}
public NamedFunctionHandleSyntaxNode NamedFunctionHandleSyntax(
SyntaxToken atSign,
CompoundNameSyntaxNode functionName)
public NamedFunctionHandleSyntaxNode NamedFunctionHandleSyntax(SyntaxToken atSign, CompoundNameSyntaxNode functionName)
{
return new NamedFunctionHandleSyntaxNode(
atSign,
functionName);
return new NamedFunctionHandleSyntaxNode(atSign, functionName);
}
public LambdaSyntaxNode LambdaSyntax(
SyntaxToken atSign,
FunctionInputDescriptionSyntaxNode input,
ExpressionSyntaxNode body)
public LambdaSyntaxNode LambdaSyntax(SyntaxToken atSign, FunctionInputDescriptionSyntaxNode input, ExpressionSyntaxNode body)
{
return new LambdaSyntaxNode(
atSign,
input,
body);
return new LambdaSyntaxNode(atSign, input, body);
}
public BinaryOperationExpressionSyntaxNode BinaryOperationExpressionSyntax(
ExpressionSyntaxNode lhs,
SyntaxToken operation,
ExpressionSyntaxNode rhs)
public BinaryOperationExpressionSyntaxNode BinaryOperationExpressionSyntax(ExpressionSyntaxNode lhs, SyntaxToken operation, ExpressionSyntaxNode rhs)
{
return new BinaryOperationExpressionSyntaxNode(
lhs,
operation,
rhs);
return new BinaryOperationExpressionSyntaxNode(lhs, operation, rhs);
}
public IdentifierNameSyntaxNode IdentifierNameSyntax(
SyntaxToken name)
public IdentifierNameSyntaxNode IdentifierNameSyntax(SyntaxToken name)
{
return new IdentifierNameSyntaxNode(
name);
return new IdentifierNameSyntaxNode(name);
}
public NumberLiteralSyntaxNode NumberLiteralSyntax(
SyntaxToken number)
public NumberLiteralSyntaxNode NumberLiteralSyntax(SyntaxToken number)
{
return new NumberLiteralSyntaxNode(
number);
return new NumberLiteralSyntaxNode(number);
}
public StringLiteralSyntaxNode StringLiteralSyntax(
SyntaxToken stringToken)
public StringLiteralSyntaxNode StringLiteralSyntax(SyntaxToken stringToken)
{
return new StringLiteralSyntaxNode(
stringToken);
return new StringLiteralSyntaxNode(stringToken);
}
public DoubleQuotedStringLiteralSyntaxNode DoubleQuotedStringLiteralSyntax(
SyntaxToken stringToken)
public DoubleQuotedStringLiteralSyntaxNode DoubleQuotedStringLiteralSyntax(SyntaxToken stringToken)
{
return new DoubleQuotedStringLiteralSyntaxNode(
stringToken);
return new DoubleQuotedStringLiteralSyntaxNode(stringToken);
}
public UnquotedStringLiteralSyntaxNode UnquotedStringLiteralSyntax(
SyntaxToken stringToken)
public UnquotedStringLiteralSyntaxNode UnquotedStringLiteralSyntax(SyntaxToken stringToken)
{
return new UnquotedStringLiteralSyntaxNode(
stringToken);
return new UnquotedStringLiteralSyntaxNode(stringToken);
}
public ArrayLiteralExpressionSyntaxNode ArrayLiteralExpressionSyntax(
SyntaxToken openingSquareBracket,
SyntaxList nodes,
SyntaxToken closingSquareBracket)
public ArrayLiteralExpressionSyntaxNode ArrayLiteralExpressionSyntax(SyntaxToken openingSquareBracket, SyntaxList nodes, SyntaxToken closingSquareBracket)
{
return new ArrayLiteralExpressionSyntaxNode(
openingSquareBracket,
nodes,
closingSquareBracket);
return new ArrayLiteralExpressionSyntaxNode(openingSquareBracket, nodes, closingSquareBracket);
}
public CellArrayLiteralExpressionSyntaxNode CellArrayLiteralExpressionSyntax(
SyntaxToken openingBrace,
SyntaxList nodes,
SyntaxToken closingBrace)
public CellArrayLiteralExpressionSyntaxNode CellArrayLiteralExpressionSyntax(SyntaxToken openingBrace, SyntaxList nodes, SyntaxToken closingBrace)
{
return new CellArrayLiteralExpressionSyntaxNode(
openingBrace,
nodes,
closingBrace);
return new CellArrayLiteralExpressionSyntaxNode(openingBrace, nodes, closingBrace);
}
public ParenthesizedExpressionSyntaxNode ParenthesizedExpressionSyntax(
SyntaxToken openingBracket,
ExpressionSyntaxNode expression,
SyntaxToken closingBracket)
public ParenthesizedExpressionSyntaxNode ParenthesizedExpressionSyntax(SyntaxToken openingBracket, ExpressionSyntaxNode expression, SyntaxToken closingBracket)
{
return new ParenthesizedExpressionSyntaxNode(
openingBracket,
expression,
closingBracket);
return new ParenthesizedExpressionSyntaxNode(openingBracket, expression, closingBracket);
}
public CellArrayElementAccessExpressionSyntaxNode CellArrayElementAccessExpressionSyntax(
ExpressionSyntaxNode expression,
SyntaxToken openingBrace,
SyntaxList nodes,
SyntaxToken closingBrace)
public CellArrayElementAccessExpressionSyntaxNode CellArrayElementAccessExpressionSyntax(ExpressionSyntaxNode expression, SyntaxToken openingBrace, SyntaxList nodes, SyntaxToken closingBrace)
{
return new CellArrayElementAccessExpressionSyntaxNode(
expression,
openingBrace,
nodes,
closingBrace);
return new CellArrayElementAccessExpressionSyntaxNode(expression, openingBrace, nodes, closingBrace);
}
public FunctionCallExpressionSyntaxNode FunctionCallExpressionSyntax(
ExpressionSyntaxNode functionName,
SyntaxToken openingBracket,
SyntaxList nodes,
SyntaxToken closingBracket)
public FunctionCallExpressionSyntaxNode FunctionCallExpressionSyntax(ExpressionSyntaxNode functionName, SyntaxToken openingBracket, SyntaxList nodes, SyntaxToken closingBracket)
{
return new FunctionCallExpressionSyntaxNode(
functionName,
openingBracket,
nodes,
closingBracket);
return new FunctionCallExpressionSyntaxNode(functionName, openingBracket, nodes, closingBracket);
}
public MemberAccessSyntaxNode MemberAccessSyntax(
SyntaxNode leftOperand,
SyntaxToken dot,
SyntaxNode rightOperand)
public MemberAccessSyntaxNode MemberAccessSyntax(SyntaxNode leftOperand, SyntaxToken dot, SyntaxNode rightOperand)
{
return new MemberAccessSyntaxNode(
leftOperand,
dot,
rightOperand);
return new MemberAccessSyntaxNode(leftOperand, dot, rightOperand);
}
public UnaryPostixOperationExpressionSyntaxNode UnaryPostixOperationExpressionSyntax(
ExpressionSyntaxNode operand,
SyntaxToken operation)
public UnaryPostixOperationExpressionSyntaxNode UnaryPostixOperationExpressionSyntax(ExpressionSyntaxNode operand, SyntaxToken operation)
{
return new UnaryPostixOperationExpressionSyntaxNode(
operand,
operation);
return new UnaryPostixOperationExpressionSyntaxNode(operand, operation);
}
public IndirectMemberAccessSyntaxNode IndirectMemberAccessSyntax(
SyntaxToken openingBracket,
ExpressionSyntaxNode expression,
SyntaxToken closingBracket)
public IndirectMemberAccessSyntaxNode IndirectMemberAccessSyntax(SyntaxToken openingBracket, ExpressionSyntaxNode expression, SyntaxToken closingBracket)
{
return new IndirectMemberAccessSyntaxNode(
openingBracket,
expression,
closingBracket);
return new IndirectMemberAccessSyntaxNode(openingBracket, expression, closingBracket);
}
public CommandExpressionSyntaxNode CommandExpressionSyntax(
IdentifierNameSyntaxNode commandName,
SyntaxList<UnquotedStringLiteralSyntaxNode> arguments)
public CommandExpressionSyntaxNode CommandExpressionSyntax(IdentifierNameSyntaxNode commandName, SyntaxList<UnquotedStringLiteralSyntaxNode> arguments)
{
return new CommandExpressionSyntaxNode(
commandName,
arguments);
return new CommandExpressionSyntaxNode(commandName, arguments);
}
public BaseClassInvokationSyntaxNode BaseClassInvokationSyntax(
ExpressionSyntaxNode methodName,
SyntaxToken atSign,
ExpressionSyntaxNode baseClassNameAndArguments)
public BaseClassInvokationSyntaxNode BaseClassInvokationSyntax(ExpressionSyntaxNode methodName, SyntaxToken atSign, ExpressionSyntaxNode baseClassNameAndArguments)
{
return new BaseClassInvokationSyntaxNode(
methodName,
atSign,
baseClassNameAndArguments);
return new BaseClassInvokationSyntaxNode(methodName, atSign, baseClassNameAndArguments);
}
public AttributeAssignmentSyntaxNode AttributeAssignmentSyntax(
SyntaxToken assignmentSign,
ExpressionSyntaxNode value)
public AttributeAssignmentSyntaxNode AttributeAssignmentSyntax(SyntaxToken assignmentSign, ExpressionSyntaxNode value)
{
return new AttributeAssignmentSyntaxNode(
assignmentSign,
value);
return new AttributeAssignmentSyntaxNode(assignmentSign, value);
}
public AttributeSyntaxNode AttributeSyntax(
IdentifierNameSyntaxNode name,
AttributeAssignmentSyntaxNode? assignment)
public AttributeSyntaxNode AttributeSyntax(IdentifierNameSyntaxNode name, AttributeAssignmentSyntaxNode? assignment)
{
return new AttributeSyntaxNode(
name,
assignment);
return new AttributeSyntaxNode(name, assignment);
}
public AttributeListSyntaxNode AttributeListSyntax(
SyntaxToken openingBracket,
SyntaxList nodes,
SyntaxToken closingBracket)
public AttributeListSyntaxNode AttributeListSyntax(SyntaxToken openingBracket, SyntaxList nodes, SyntaxToken closingBracket)
{
return new AttributeListSyntaxNode(
openingBracket,
nodes,
closingBracket);
return new AttributeListSyntaxNode(openingBracket, nodes, closingBracket);
}
public MethodDefinitionSyntaxNode MethodDefinitionSyntax(
SyntaxToken functionKeyword,
FunctionOutputDescriptionSyntaxNode? outputDescription,
CompoundNameSyntaxNode name,
FunctionInputDescriptionSyntaxNode? inputDescription,
SyntaxList<SyntaxToken> commas,
SyntaxList body,
EndKeywordSyntaxNode? endKeyword)
public MethodDefinitionSyntaxNode MethodDefinitionSyntax(SyntaxToken functionKeyword, FunctionOutputDescriptionSyntaxNode? outputDescription, CompoundNameSyntaxNode name, FunctionInputDescriptionSyntaxNode? inputDescription, SyntaxList<SyntaxToken> commas, SyntaxList body, EndKeywordSyntaxNode? endKeyword)
{
return new MethodDefinitionSyntaxNode(
functionKeyword,
outputDescription,
name,
inputDescription,
commas,
body,
endKeyword);
return new MethodDefinitionSyntaxNode(functionKeyword, outputDescription, name, inputDescription, commas, body, endKeyword);
}
public AbstractMethodDeclarationSyntaxNode AbstractMethodDeclarationSyntax(
FunctionOutputDescriptionSyntaxNode? outputDescription,
CompoundNameSyntaxNode name,
FunctionInputDescriptionSyntaxNode? inputDescription)
public AbstractMethodDeclarationSyntaxNode AbstractMethodDeclarationSyntax(FunctionOutputDescriptionSyntaxNode? outputDescription, CompoundNameSyntaxNode name, FunctionInputDescriptionSyntaxNode? inputDescription)
{
return new AbstractMethodDeclarationSyntaxNode(
outputDescription,
name,
inputDescription);
return new AbstractMethodDeclarationSyntaxNode(outputDescription, name, inputDescription);
}
public MethodsListSyntaxNode MethodsListSyntax(
SyntaxToken methodsKeyword,
AttributeListSyntaxNode? attributes,
SyntaxList methods,
SyntaxToken endKeyword)
public MethodsListSyntaxNode MethodsListSyntax(SyntaxToken methodsKeyword, AttributeListSyntaxNode? attributes, SyntaxList methods, SyntaxToken endKeyword)
{
return new MethodsListSyntaxNode(
methodsKeyword,
attributes,
methods,
endKeyword);
return new MethodsListSyntaxNode(methodsKeyword, attributes, methods, endKeyword);
}
public PropertiesListSyntaxNode PropertiesListSyntax(
SyntaxToken propertiesKeyword,
AttributeListSyntaxNode? attributes,
SyntaxList properties,
SyntaxToken endKeyword)
public PropertiesListSyntaxNode PropertiesListSyntax(SyntaxToken propertiesKeyword, AttributeListSyntaxNode? attributes, SyntaxList properties, SyntaxToken endKeyword)
{
return new PropertiesListSyntaxNode(
propertiesKeyword,
attributes,
properties,
endKeyword);
return new PropertiesListSyntaxNode(propertiesKeyword, attributes, properties, endKeyword);
}
public BaseClassListSyntaxNode BaseClassListSyntax(
SyntaxToken lessSign,
SyntaxList baseClasses)
public BaseClassListSyntaxNode BaseClassListSyntax(SyntaxToken lessSign, SyntaxList baseClasses)
{
return new BaseClassListSyntaxNode(
lessSign,
baseClasses);
return new BaseClassListSyntaxNode(lessSign, baseClasses);
}
public ClassDeclarationSyntaxNode ClassDeclarationSyntax(
SyntaxToken classdefKeyword,
AttributeListSyntaxNode? attributes,
IdentifierNameSyntaxNode className,
BaseClassListSyntaxNode? baseClassList,
SyntaxList nodes,
SyntaxToken endKeyword)
public ClassDeclarationSyntaxNode ClassDeclarationSyntax(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, IdentifierNameSyntaxNode className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword)
{
return new ClassDeclarationSyntaxNode(
classdefKeyword,
attributes,
className,
baseClassList,
nodes,
endKeyword);
return new ClassDeclarationSyntaxNode(classdefKeyword, attributes, className, baseClassList, nodes, endKeyword);
}
public EnumerationItemValueSyntaxNode EnumerationItemValueSyntax(
SyntaxToken openingBracket,
SyntaxList values,
SyntaxToken closingBracket)
public EnumerationItemValueSyntaxNode EnumerationItemValueSyntax(SyntaxToken openingBracket, SyntaxList values, SyntaxToken closingBracket)
{
return new EnumerationItemValueSyntaxNode(
openingBracket,
values,
closingBracket);
return new EnumerationItemValueSyntaxNode(openingBracket, values, closingBracket);
}
public EnumerationItemSyntaxNode EnumerationItemSyntax(
IdentifierNameSyntaxNode name,
EnumerationItemValueSyntaxNode? values,
SyntaxList<SyntaxToken> commas)
public EnumerationItemSyntaxNode EnumerationItemSyntax(IdentifierNameSyntaxNode name, EnumerationItemValueSyntaxNode? values, SyntaxList<SyntaxToken> commas)
{
return new EnumerationItemSyntaxNode(
name,
values,
commas);
return new EnumerationItemSyntaxNode(name, values, commas);
}
public EnumerationListSyntaxNode EnumerationListSyntax(
SyntaxToken enumerationKeyword,
AttributeListSyntaxNode? attributes,
SyntaxList<EnumerationItemSyntaxNode> items,
SyntaxToken endKeyword)
public EnumerationListSyntaxNode EnumerationListSyntax(SyntaxToken enumerationKeyword, AttributeListSyntaxNode? attributes, SyntaxList<EnumerationItemSyntaxNode> items, SyntaxToken endKeyword)
{
return new EnumerationListSyntaxNode(
enumerationKeyword,
attributes,
items,
endKeyword);
return new EnumerationListSyntaxNode(enumerationKeyword, attributes, items, endKeyword);
}
public EventsListSyntaxNode EventsListSyntax(
SyntaxToken eventsKeyword,
AttributeListSyntaxNode? attributes,
SyntaxList events,
SyntaxToken endKeyword)
public EventsListSyntaxNode EventsListSyntax(SyntaxToken eventsKeyword, AttributeListSyntaxNode? attributes, SyntaxList events, SyntaxToken endKeyword)
{
return new EventsListSyntaxNode(
eventsKeyword,
attributes,
events,
endKeyword);
return new EventsListSyntaxNode(eventsKeyword, attributes, events, endKeyword);
}
public EndKeywordSyntaxNode EndKeywordSyntax(
SyntaxToken endKeyword)
public EndKeywordSyntaxNode EndKeywordSyntax(SyntaxToken endKeyword)
{
return new EndKeywordSyntaxNode(
endKeyword);
return new EndKeywordSyntaxNode(endKeyword);
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -258,4 +258,4 @@ namespace Parser
DefaultVisit(node);
}
}
};
}

View File

@ -0,0 +1,10 @@
namespace SyntaxGenerator
{
public static class DtoExtensions
{
public static string GetPrivateFieldName(this FieldDescription field)
{
return "_" + field.FieldName;
}
}
}

View File

@ -0,0 +1,17 @@
using System.Xml.Serialization;
namespace SyntaxGenerator
{
public class FieldDescription
{
[XmlAttribute("Type")]
public string FieldType { get; set; }
[XmlAttribute("Name")]
public string FieldName { get; set; }
[XmlAttribute("Nullable")]
public bool FieldIsNullable { get; set; }
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
using System.Xml.Serialization;
namespace SyntaxGenerator
{
[XmlRoot(ElementName = "Syntax")]
public class SyntaxDescription
{
[XmlElement(ElementName = "Class")]
public SyntaxNodeDescription[] Nodes { get; set; }
}
}

View File

@ -0,0 +1,63 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using System.Collections.Generic;
using System.Linq;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
namespace SyntaxGenerator
{
public static class SyntaxExtensions
{
public static ArgumentListSyntax SingleArgument(ExpressionSyntax expression)
{
return
ArgumentList(
SingletonSeparatedList(
Argument(expression)));
}
public static ArgumentListSyntax SeveralArguments(IEnumerable<ExpressionSyntax> expressions)
{
return ArgumentList(
IntersperseWithCommas(
expressions.Select(e => Argument(e))));
}
public static ArgumentListSyntax SeveralArguments(params ExpressionSyntax[] expressions)
{
return SeveralArguments((IEnumerable<ExpressionSyntax>)expressions);
}
public static IEnumerable<SyntaxNodeOrToken> IntersperseWithCommas(IEnumerable<SyntaxNodeOrToken> tokens)
{
var first = true;
foreach (var token in tokens)
{
if (first)
{
yield return token;
first = false;
}
else
{
yield return Token(SyntaxKind.CommaToken);
yield return token;
}
}
}
public static SeparatedSyntaxList<TNode> IntersperseWithCommas<TNode>(IEnumerable<TNode> tokens)
where TNode : SyntaxNode
{
return SeparatedList<TNode>(
IntersperseWithCommas(tokens.Select(token => (SyntaxNodeOrToken)token)));
}
public static SeparatedSyntaxList<TNode> IntersperseWithCommas<TNode>(params TNode[] tokens)
where TNode : SyntaxNode
{
return IntersperseWithCommas((IEnumerable<TNode>)tokens);
}
}
}

View File

@ -3,6 +3,9 @@
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.7.0-3.final" />
</ItemGroup>
<ItemGroup>
<None Update="input.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

View File

@ -2,19 +2,14 @@
namespace SyntaxGenerator
{
[XmlRoot(ElementName = "Syntax")]
public class SyntaxDescription
{
[XmlElement(ElementName = "Class")]
public SyntaxNodeDescription[] Nodes { get; set; }
}
public class SyntaxNodeDescription
{
[XmlAttribute("Name")]
public string ClassName { get; set; }
[XmlAttribute("BaseClass")]
public string BaseClassName { get; set; }
[XmlAttribute("Kind")]
public string TokenKindName { get; set; }
@ -27,14 +22,4 @@ namespace SyntaxGenerator
private FieldDescription[] _fields = new FieldDescription[0];
}
public class FieldDescription
{
[XmlAttribute("Type")]
public string FieldType { get; set; }
[XmlAttribute("Name")]
public string FieldName { get; set; }
[XmlAttribute("Nullable")]
public bool FieldIsNullable { get; set; }
}
}