добавил struct type
parent
51a96ccd5f
commit
4145259d12
|
@ -72,6 +72,7 @@ LETTER_OR_DIGIT [a-zA-Z0-9_]
|
||||||
"++" { return INC; }
|
"++" { return INC; }
|
||||||
"--" { return DEC; }
|
"--" { return DEC; }
|
||||||
|
|
||||||
|
"struct" { return STRUCT; }
|
||||||
"type" { return TYPE; }
|
"type" { return TYPE; }
|
||||||
"go" { return GO; }
|
"go" { return GO; }
|
||||||
"defer" { return DEFER; }
|
"defer" { return DEFER; }
|
||||||
|
|
|
@ -25,7 +25,7 @@ void free_node(char *str) {
|
||||||
%token VAR FUNC RETURN STRING_LITERAL FLOAT_LITERAL COMPLEX_LITERAL NUMBER PACKAGE IMPORT
|
%token VAR FUNC RETURN STRING_LITERAL FLOAT_LITERAL COMPLEX_LITERAL NUMBER PACKAGE IMPORT
|
||||||
%token INC DEC PLUS_EQ MINUS_EQ MUL_EQ DIV_EQ MOD_EQ
|
%token INC DEC PLUS_EQ MINUS_EQ MUL_EQ DIV_EQ MOD_EQ
|
||||||
%token AMPERSAND_EQ PIPE_EQ XOR_EQ LSHIFT_EQ RSHIFT_EQ AND_NOT_EQ
|
%token AMPERSAND_EQ PIPE_EQ XOR_EQ LSHIFT_EQ RSHIFT_EQ AND_NOT_EQ
|
||||||
%token FOR BREAK CONTINUE ARROW IF ELSE RANGE DEFER GO TYPE
|
%token FOR BREAK CONTINUE ARROW IF ELSE RANGE DEFER GO TYPE STRUCT
|
||||||
%token CHAN CONST CASE SWITCH
|
%token CHAN CONST CASE SWITCH
|
||||||
%token PLUS MINUS MULT DIV MOD
|
%token PLUS MINUS MULT DIV MOD
|
||||||
%token STRING
|
%token STRING
|
||||||
|
@ -251,6 +251,10 @@ log_expr:
|
||||||
|
|
||||||
// types
|
// types
|
||||||
|
|
||||||
|
struct_types:
|
||||||
|
STRUCT LBRACE field_list RBRACE
|
||||||
|
;
|
||||||
|
|
||||||
bool_types:
|
bool_types:
|
||||||
BOOL
|
BOOL
|
||||||
|
|
||||||
|
@ -284,6 +288,7 @@ func_types:
|
||||||
|
|
||||||
type:
|
type:
|
||||||
int_types { }
|
int_types { }
|
||||||
|
| struct_types { }
|
||||||
| func_types { }
|
| func_types { }
|
||||||
| string_types { }
|
| string_types { }
|
||||||
| float_types { }
|
| float_types { }
|
||||||
|
@ -364,6 +369,13 @@ func_declaration:
|
||||||
;
|
;
|
||||||
//
|
//
|
||||||
|
|
||||||
|
// struct
|
||||||
|
field_list:
|
||||||
|
| arg_declaration
|
||||||
|
| field_list SEMICOLON arg_declaration
|
||||||
|
;
|
||||||
|
//
|
||||||
|
|
||||||
// vars decl
|
// vars decl
|
||||||
var_multiple_short_declaration:
|
var_multiple_short_declaration:
|
||||||
identifiers_list SHORT_DECLARATION math_expr_or_literals_list
|
identifiers_list SHORT_DECLARATION math_expr_or_literals_list
|
||||||
|
|
|
@ -5,6 +5,14 @@ import (
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type person struct {
|
||||||
|
name, second_name string
|
||||||
|
age int
|
||||||
|
}
|
||||||
|
|
||||||
|
type epmty struct {
|
||||||
|
}
|
||||||
|
|
||||||
func test(int, int) {
|
func test(int, int) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,3 +3,12 @@ import "fmt";
|
||||||
|
|
||||||
type mile uint;
|
type mile uint;
|
||||||
type BinaryOp func(int, int) int;
|
type BinaryOp func(int, int) int;
|
||||||
|
|
||||||
|
type empty struct{
|
||||||
|
};
|
||||||
|
|
||||||
|
type person struct{
|
||||||
|
name, second_name string;
|
||||||
|
age int;
|
||||||
|
work func()
|
||||||
|
};
|
Loading…
Reference in New Issue