]> git.bts.cx Git - sun.git/blobdiff - runtime/src/sun/compiler/sun.y
Groundwork for arrays
[sun.git] / runtime / src / sun / compiler / sun.y
index 2464ffac0abdb7ab0ac73dc5ace7169d48812573..c6acef02f8f26698ea6264978ff38a3c9a71f5d0 100644 (file)
@@ -114,7 +114,7 @@ statements_or_definitions
        ;*/
 
 function_definition
        ;*/
 
 function_definition
-       : IDENTIFIER IDENTIFIER '(' optional_parameter_definitions ')' '{' optional_statements '}' {
+       : type IDENTIFIER '(' optional_parameter_definitions ')' '{' optional_statements '}' {
                $$ = sltNodeMakeFunctionDefinition($1, $2, $4, $7);
        }
        ;
                $$ = sltNodeMakeFunctionDefinition($1, $2, $4, $7);
        }
        ;
@@ -136,7 +136,7 @@ parameter_definitions
        ;
 
 parameter_definition
        ;
 
 parameter_definition
-       : IDENTIFIER IDENTIFIER {
+       : type IDENTIFIER {
                $$ = sltNodeMakeFunctionParameterDefinition($1, $2);
        }
        ;
                $$ = sltNodeMakeFunctionParameterDefinition($1, $2);
        }
        ;
@@ -163,14 +163,23 @@ type_member_definition
        ;*/
 
 variable_definition
        ;*/
 
 variable_definition
-       : IDENTIFIER IDENTIFIER {
+       : type IDENTIFIER {
                $$ = sltNodeMakeVariableDefinition($1, $2, NULL);
        }
                $$ = sltNodeMakeVariableDefinition($1, $2, NULL);
        }
-       | IDENTIFIER IDENTIFIER '=' expression {
+       | type IDENTIFIER '=' expression {
                $$ = sltNodeMakeVariableDefinition($1, $2, $4);
        }
        ;
 
                $$ = sltNodeMakeVariableDefinition($1, $2, $4);
        }
        ;
 
+type
+       : IDENTIFIER {
+               $$ = $1;//sltNodeMakeTypeDefinition($1, 1);
+       }
+       | '[' type ':' INT ']' {
+               $$ = $2;//sltNodeMakeTypeDefinition($1, $2);
+       }
+       ;
+
 optional_statements
        : /* nothing */ {
                $$ = NULL;
 optional_statements
        : /* nothing */ {
                $$ = NULL;
@@ -414,7 +423,7 @@ postfix_expression
                $$ = sltNodeMakeFunctionCall($1, $3);
        }
        | postfix_expression '.' IDENTIFIER {
                $$ = sltNodeMakeFunctionCall($1, $3);
        }
        | postfix_expression '.' IDENTIFIER {
-               $$ = sltNodeMakeTypeAccess($1, $3);
+               $$ = sltNodeMakeMemberAccess($1, $3);
        }
        /*| postfix_expression postfix_unary_operator {
                $$ = sltNodeMakeUnaryOperation($1, $2);
        }
        /*| postfix_expression postfix_unary_operator {
                $$ = sltNodeMakeUnaryOperation($1, $2);