diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-11-19 21:10:59 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-11-19 21:10:59 +0900 |
| commit | 351c9c80e786b6a3f3779cdf2d89879a58f35407 (patch) | |
| tree | d2593492f4819b1cc34743f8853b528ae8ce0480 | |
| parent | 79e73dd86a72949e52a9eba0ea7abc294b40b16c (diff) | |
| download | mruby-351c9c80e786b6a3f3779cdf2d89879a58f35407.tar.gz mruby-351c9c80e786b6a3f3779cdf2d89879a58f35407.zip | |
Always enable the rational and complex literals
I think they can always be enabled because the regular expression literal is
always enabled.
| -rw-r--r-- | include/mrbconf.h | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 64 |
2 files changed, 11 insertions, 56 deletions
diff --git a/include/mrbconf.h b/include/mrbconf.h index b86ce82e8..0509f4ff9 100644 --- a/include/mrbconf.h +++ b/include/mrbconf.h @@ -62,9 +62,6 @@ # endif #endif -#define MRB_COMPLEX_NUMBERS -#define MRB_RATIONAL_NUMBERS - /* define on big endian machines; used by MRB_NAN_BOXING, etc. */ #ifndef MRB_ENDIAN_BIG # if (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN) || \ diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 5a405b8cb..911812706 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -71,23 +71,8 @@ typedef unsigned int stack_type; #define nint(x) ((node*)(intptr_t)(x)) #define intn(x) ((int)(intptr_t)(x)) -#if defined(MRB_COMPLEX_NUMBERS) || defined(MRB_RATIONAL_NUMBERS) - #define MRB_SUFFIX_SUPPORT - - #ifdef MRB_RATIONAL_NUMBERS - #define NUM_SUFFIX_R (1<<0) - #else - #define NUM_SUFFIX_R 0 - #endif - - #ifdef MRB_COMPLEX_NUMBERS - #define NUM_SUFFIX_I (1<<1) - #else - #define NUM_SUFFIX_I 0 - #endif - - #define NUM_SUFFIX_ALL (NUM_SUFFIX_R | NUM_SUFFIX_I) -#endif +#define NUM_SUFFIX_R (1<<0) +#define NUM_SUFFIX_I (1<<1) static inline mrb_sym intern_cstr_gen(parser_state *p, const char *s) @@ -866,37 +851,29 @@ new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b) return list4((node*)NODE_OP_ASGN, a, nsym(op), b); } -#ifdef MRB_COMPLEX_NUMBERS static node* new_imaginary(parser_state *p, node *imaginary) { return new_call(p, new_const(p, intern_lit("Kernel")), intern_lit("Complex"), list1(list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary)), 1); } -#endif -#ifdef MRB_RATIONAL_NUMBERS static node* new_rational(parser_state *p, node *rational) { return new_call(p, new_const(p, intern_lit("Kernel")), intern_lit("Rational"), list1(list1(rational)), 1); } -#endif /* (:int . i) */ static node* new_int(parser_state *p, const char *s, int base, int suffix) { node* result = list3((node*)NODE_INT, (node*)strdup(s), nint(base)); -#ifdef MRB_RATIONAL_NUMBERS if (suffix & NUM_SUFFIX_R) { result = new_rational(p, result); } -#endif -#ifdef MRB_COMPLEX_NUMBERS if (suffix & NUM_SUFFIX_I) { result = new_imaginary(p, result); } -#endif return result; } @@ -906,16 +883,12 @@ static node* new_float(parser_state *p, const char *s, int suffix) { node* result = cons((node*)NODE_FLOAT, (node*)strdup(s)); -#ifdef MRB_RATIONAL_NUMBERS if (suffix & NUM_SUFFIX_R) { result = new_rational(p, result); } -#endif -#ifdef MRB_COMPLEX_NUMBERS if (suffix & NUM_SUFFIX_I) { result = new_imaginary(p, result); } -#endif return result; } #endif @@ -4585,13 +4558,13 @@ parse_string(parser_state *p) return tSTRING; } -#ifdef MRB_SUFFIX_SUPPORT static int -number_literal_suffix(parser_state *p, int mask) +number_literal_suffix(parser_state *p) { int c, result = 0; node *list = 0; int column = p->column; + int mask = NUM_SUFFIX_R|NUM_SUFFIX_I; while ((c = nextc(p)) != -1) { list = push(list, (node*)(intptr_t)c); @@ -4623,7 +4596,6 @@ number_literal_suffix(parser_state *p, int mask) } return result; } -#endif static int heredoc_identifier(parser_state *p) @@ -5246,9 +5218,7 @@ parser_yylex(parser_state *p) no_digits(); } else if (nondigit) goto trailing_uc; - #ifdef MRB_SUFFIX_SUPPORT - suffix = number_literal_suffix(p, NUM_SUFFIX_ALL); - #endif + suffix = number_literal_suffix(p); pylval.nd = new_int(p, tok(p), 16, suffix); return tINTEGER; } @@ -5273,9 +5243,7 @@ parser_yylex(parser_state *p) no_digits(); } else if (nondigit) goto trailing_uc; - #ifdef MRB_SUFFIX_SUPPORT - suffix = number_literal_suffix(p, NUM_SUFFIX_ALL); - #endif + suffix = number_literal_suffix(p); pylval.nd = new_int(p, tok(p), 2, suffix); return tINTEGER; } @@ -5300,9 +5268,7 @@ parser_yylex(parser_state *p) no_digits(); } else if (nondigit) goto trailing_uc; - #ifdef MRB_SUFFIX_SUPPORT - suffix = number_literal_suffix(p, NUM_SUFFIX_ALL); - #endif + suffix = number_literal_suffix(p); pylval.nd = new_int(p, tok(p), 10, suffix); return tINTEGER; } @@ -5336,9 +5302,7 @@ parser_yylex(parser_state *p) pushback(p, c); tokfix(p); if (nondigit) goto trailing_uc; - #ifdef MRB_SUFFIX_SUPPORT - suffix = number_literal_suffix(p, NUM_SUFFIX_ALL); - #endif + suffix = number_literal_suffix(p); pylval.nd = new_int(p, tok(p), 8, suffix); return tINTEGER; } @@ -5356,9 +5320,7 @@ parser_yylex(parser_state *p) } else { pushback(p, c); - #ifdef MRB_SUFFIX_SUPPORT - suffix = number_literal_suffix(p, NUM_SUFFIX_ALL); - #endif + suffix = number_literal_suffix(p); pylval.nd = new_int(p, "0", 10, suffix); return tINTEGER; } @@ -5448,16 +5410,12 @@ parser_yylex(parser_state *p) yywarning_s(p, "float out of range", tok(p)); errno = 0; } - #ifdef MRB_SUFFIX_SUPPORT - suffix = number_literal_suffix(p, NUM_SUFFIX_ALL); - #endif + suffix = number_literal_suffix(p); pylval.nd = new_float(p, tok(p), suffix); return tFLOAT; #endif } - #ifdef MRB_SUFFIX_SUPPORT - suffix = number_literal_suffix(p, NUM_SUFFIX_ALL); - #endif + suffix = number_literal_suffix(p); pylval.nd = new_int(p, tok(p), 10, suffix); return tINTEGER; } |
