Merge pull request #2 from mahalex/roslyn-code-generator
Use Roslyn in SyntaxGenerator
This commit is contained in:
commit
078eb003d0
@ -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
@ -258,4 +258,4 @@ namespace Parser
|
||||
DefaultVisit(node);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
10
SyntaxGenerator/DtoExtensions.cs
Normal file
10
SyntaxGenerator/DtoExtensions.cs
Normal file
@ -0,0 +1,10 @@
|
||||
namespace SyntaxGenerator
|
||||
{
|
||||
public static class DtoExtensions
|
||||
{
|
||||
public static string GetPrivateFieldName(this FieldDescription field)
|
||||
{
|
||||
return "_" + field.FieldName;
|
||||
}
|
||||
}
|
||||
}
|
17
SyntaxGenerator/FieldDescription.cs
Normal file
17
SyntaxGenerator/FieldDescription.cs
Normal 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
11
SyntaxGenerator/SyntaxDescription.cs
Normal file
11
SyntaxGenerator/SyntaxDescription.cs
Normal 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; }
|
||||
}
|
||||
}
|
63
SyntaxGenerator/SyntaxExtensions.cs
Normal file
63
SyntaxGenerator/SyntaxExtensions.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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>
|
||||
|
@ -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; }
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user