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 | 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 AssignmentStatement : VariableDeclaration EQUAL Expression
@ -265,24 +265,24 @@ Body : LEFT_BRACE Statements RIGHT_BRACE
PopStackFrame(stack); PopStackFrame(stack);
} }
FunctionSignature : Type Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN FunctionSignature : Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN COLON Type
{ {
Node **declarations; Node **declarations;
uint32_t declarationCount; uint32_t declarationCount;
declarations = GetNodes(stack, &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); PopStackFrame(stack);
} }
| STATIC Type Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN | STATIC Identifier LEFT_PAREN SignatureArguments RIGHT_PAREN COLON Type
{ {
Node **declarations; Node **declarations;
uint32_t declarationCount; uint32_t declarationCount;
Node *modifier = MakeStaticNode(); Node *modifier = MakeStaticNode();
declarations = GetNodes(stack, &declarationCount); declarations = GetNodes(stack, &declarationCount);
$$ = MakeFunctionSignatureNode($3, $2, MakeFunctionSignatureArgumentsNode(declarations, declarationCount), MakeFunctionModifiersNode(&modifier, 1)); $$ = MakeFunctionSignatureNode($2, $7, MakeFunctionSignatureArgumentsNode(declarations, declarationCount), MakeFunctionModifiersNode(&modifier, 1));
PopStackFrame(stack); PopStackFrame(stack);
} }