new type declaration style

generics
cosmonaut 2021-04-22 21:16:37 -07:00
parent a2e5cb434b
commit b344635c8d
1 changed files with 8 additions and 8 deletions

View File

@ -166,13 +166,13 @@ Expression : PrimaryExpression
| BinaryExpression
;
VariableDeclaration : Type Identifier
VariableDeclaration : Identifier COLON Type
{
$$ = MakeDeclarationNode($1, $2);
$$ = MakeDeclarationNode($3, $1);
}
| Identifier Identifier
| Identifier COLON Identifier
{
$$ = MakeDeclarationNode(MakeCustomTypeNode($1), $2);
$$ = MakeDeclarationNode(MakeCustomTypeNode($3), $1);
}
AssignmentStatement : VariableDeclaration EQUAL Expression
@ -265,24 +265,24 @@ Body : LEFT_BRACE Statements RIGHT_BRACE
PopStackFrame(stack);
}
FunctionSignature : Type Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN
FunctionSignature : Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN COLON Type
{
Node **declarations;
uint32_t declarationCount;
declarations = GetNodes(stack, &declarationCount);
$$ = MakeFunctionSignatureNode($2, $1, MakeFunctionSignatureArgumentsNode(declarations, declarationCount), MakeFunctionModifiersNode(NULL, 0));
$$ = MakeFunctionSignatureNode($1, $6, MakeFunctionSignatureArgumentsNode(declarations, declarationCount), MakeFunctionModifiersNode(NULL, 0));
PopStackFrame(stack);
}
| STATIC Type Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN
| STATIC Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN COLON Type
{
Node **declarations;
uint32_t declarationCount;
Node *modifier = MakeStaticNode();
declarations = GetNodes(stack, &declarationCount);
$$ = MakeFunctionSignatureNode($3, $2, MakeFunctionSignatureArgumentsNode(declarations, declarationCount), MakeFunctionModifiersNode(&modifier, 1));
$$ = MakeFunctionSignatureNode($2, $7, MakeFunctionSignatureArgumentsNode(declarations, declarationCount), MakeFunctionModifiersNode(&modifier, 1));
PopStackFrame(stack);
}