compex literals
parent
204a2badd6
commit
b2de5ce92c
|
@ -14,7 +14,6 @@ void yyerror(const char *s) {
|
|||
%}
|
||||
|
||||
DIGIT [0-9]
|
||||
BIG_LETTER [A-Z]
|
||||
LETTER [a-zA-Z_]
|
||||
LETTER_OR_DIGIT [a-zA-Z0-9_]
|
||||
|
||||
|
@ -130,11 +129,21 @@ LETTER_OR_DIGIT [a-zA-Z0-9_]
|
|||
}
|
||||
}
|
||||
|
||||
[0-9]+\.[0-9]+ {
|
||||
{DIGIT}+\.{DIGIT}*i { /* Комплексные числа: 123.456i */
|
||||
yylval.str = strdup(yytext);
|
||||
return COMPLEX_LITERAL;
|
||||
}
|
||||
|
||||
{DIGIT}+i { /* Комплексные числа: 123i */
|
||||
yylval.str = strdup(yytext);
|
||||
return COMPLEX_LITERAL;
|
||||
}
|
||||
|
||||
{DIGIT}+\.{DIGIT}+ { /* Обычные float: 123.456 */
|
||||
return FLOAT_LITERAL;
|
||||
}
|
||||
|
||||
{DIGIT}+ {
|
||||
{DIGIT}+ { /* Целые числа */
|
||||
return NUMBER;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ void free_node(char *str) {
|
|||
}
|
||||
|
||||
%token SHORT_DECLARATION LBRACE RBRACE SEMICOLON ASSIGN LPAREN RPAREN COMMA COLON DOTS
|
||||
%token VAR FUNC RETURN STRING_LITERAL FLOAT_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 AMPERSAND_EQ PIPE_EQ XOR_EQ LSHIFT_EQ RSHIFT_EQ AND_NOT_EQ
|
||||
%token FOR BREAK CONTINUE ARROW IF ELSE RANGE
|
||||
|
@ -205,6 +205,7 @@ math_expr:
|
|||
| LPAREN { printf("LPAREN\n"); } math_expr RPAREN { printf("RPAREN\n"); }
|
||||
| NUMBER { printf("NUMBER\n"); }
|
||||
| FLOAT_LITERAL { printf("FLOAT LITERAL\n"); }
|
||||
| COMPLEX_LITERAL { printf("COMPLEX LITERAL\n"); }
|
||||
| IDENTIFIER { printf("IDENTIFIER: %s\n", $1); }
|
||||
| IDENTIFIER INC { printf("POST-INCREMENT: %s++\n", $1); }
|
||||
| IDENTIFIER DEC { printf("POST-DECREMENT: %s--\n", $1); }
|
||||
|
@ -271,6 +272,7 @@ type:
|
|||
// literals
|
||||
literal:
|
||||
STRING_LITERAL { }
|
||||
| COMPLEX_LITERAL { }
|
||||
| BOOL_LITERAL { }
|
||||
| FLOAT_LITERAL { }
|
||||
| NUMBER { }
|
||||
|
|
|
@ -18,7 +18,7 @@ func test(a int, b string) {
|
|||
func main() {
|
||||
|
||||
var a int;
|
||||
a = 2+2*2-(1+10);
|
||||
a = 2+2*2-(1+10)+213i*2 - 2.123i;
|
||||
a = a + 1;
|
||||
a = a;
|
||||
}
|
Loading…
Reference in New Issue