FROM_PACKAGE_IDENTIFIER -> WITH_DOT_IDENTIFIER

master2
serr 2025-05-18 18:03:43 +03:00
parent 2973ff1f2f
commit d06d314b12
2 changed files with 9 additions and 6 deletions

View File

@ -118,10 +118,10 @@ LETTER_OR_DIGIT [a-zA-Z0-9_]
return STRING_LITERAL; return STRING_LITERAL;
} }
{LETTER}{LETTER_OR_DIGIT}*(\.{BIG_LETTER}{LETTER_OR_DIGIT}*)? { {LETTER}{LETTER_OR_DIGIT}*(\.{LETTER}{LETTER_OR_DIGIT}*)? {
yylval.str = strdup(yytext); yylval.str = strdup(yytext);
if (strchr(yytext, '.') != NULL) { if (strchr(yytext, '.') != NULL) {
return FROM_PACKAGE_IDENTIFIER; return WITH_DOT_IDENTIFIER;
} else { } else {
return IDENTIFIER; return IDENTIFIER;
} }

View File

@ -34,7 +34,7 @@ void free_node(char *str) {
%token RUNE BYTE BOOL_LITERAL %token RUNE BYTE BOOL_LITERAL
%token FLOAT32 FLOAT64 %token FLOAT32 FLOAT64
%token COMPLEX64 COMPLEX128 %token COMPLEX64 COMPLEX128
%token <str> IDENTIFIER FROM_PACKAGE_IDENTIFIER %token <str> IDENTIFIER WITH_DOT_IDENTIFIER
%token AND OR NOT EQ NEQ LT GT LEQ GEQ %token AND OR NOT EQ NEQ LT GT LEQ GEQ
%left PLUS_EQ MINUS_EQ MUL_EQ DIV_EQ MOD_EQ %left PLUS_EQ MINUS_EQ MUL_EQ DIV_EQ MOD_EQ
@ -57,7 +57,6 @@ program:
| program statement | program statement
; ;
statement: statement:
| func_call SEMICOLON | func_call SEMICOLON
{ printf("\033[1;33mSTATEMENT: func_call\033[0m\n"); } { printf("\033[1;33mSTATEMENT: func_call\033[0m\n"); }
@ -78,6 +77,11 @@ statement:
block: block:
LBRACE statements_list RBRACE LBRACE statements_list RBRACE
; ;
any_identifier:
IDENTIFIER
| WITH_DOT_IDENTIFIER
// //
// lists // lists
@ -290,8 +294,7 @@ import_list:
// functions // functions
func_call: func_call:
IDENTIFIER LPAREN math_expr_or_literals_list_or_empty RPAREN any_identifier LPAREN math_expr_or_literals_list_or_empty RPAREN
| FROM_PACKAGE_IDENTIFIER LPAREN math_expr_or_literals_list_or_empty RPAREN
arg_declaration: arg_declaration:
IDENTIFIER type IDENTIFIER type