forked from cosmonaut/wraith-lang
new type declaration style
parent
a2e5cb434b
commit
b344635c8d
16
wraith.y
16
wraith.y
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue