diff --git a/analyzers/test/test.l b/analyzers/test/test.l index 0b1249b..af0cab3 100644 --- a/analyzers/test/test.l +++ b/analyzers/test/test.l @@ -72,6 +72,7 @@ LETTER_OR_DIGIT [a-zA-Z0-9_] "++" { return INC; } "--" { return DEC; } +"go" { return GO; } "defer" { return DEFER; } "range" { return RANGE; } "for" { return FOR; } diff --git a/analyzers/test/test.y b/analyzers/test/test.y index e824853..f10b126 100644 --- a/analyzers/test/test.y +++ b/analyzers/test/test.y @@ -25,7 +25,7 @@ void free_node(char *str) { %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 AMPERSAND_EQ PIPE_EQ XOR_EQ LSHIFT_EQ RSHIFT_EQ AND_NOT_EQ -%token FOR BREAK CONTINUE ARROW IF ELSE RANGE DEFER +%token FOR BREAK CONTINUE ARROW IF ELSE RANGE DEFER GO %token CHAN CONST CASE SWITCH %token PLUS MINUS MULT DIV MOD %token STRING @@ -58,6 +58,7 @@ program: ; statement: + | GO func_call SEMICOLON | DEFER func_call SEMICOLON | func_call SEMICOLON { printf("\033[1;33mSTATEMENT: func_call\033[0m\n"); } diff --git a/tests/test_funcs.txt b/tests/test_funcs.txt index ded0398..d7060a2 100644 --- a/tests/test_funcs.txt +++ b/tests/test_funcs.txt @@ -13,13 +13,13 @@ func iife(work int) { func(){}(); func(){fmt.Println(123);}(); - func(a, b string) { + go func(a, b string) { fmt.Println("Message:", a + b); }("Hello", ", world!"); defer func() { if err := recover(); err != nil { - log.Println("work failed:", err); + go log.Println("work failed:", err); } }(); }