From a062d030eb3d80caf4c372e83b8c6883f6743a48 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 12 Feb 2017 04:20:35 +0000 Subject: [PATCH] parse.y: call_uni_op * defs/id.def (predefined): add keyword `not`. * parse.y (call_uni_op): unify parser and ripper, and use IDs instead of tokens. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- defs/id.def | 1 + parse.y | 52 +++++++++++++++------------------------------------- 2 files changed, 16 insertions(+), 37 deletions(-) diff --git a/defs/id.def b/defs/id.def index f2ff293f6b..dd0eed9b7c 100644 --- a/defs/id.def +++ b/defs/id.def @@ -43,6 +43,7 @@ firstline, predefined = __LINE__+1, %[\ call mesg exception + not NOT _ UScore "/*NULL*/" NULL diff --git a/parse.y b/parse.y index 653e444af9..3f431018c1 100644 --- a/parse.y +++ b/parse.y @@ -405,6 +405,7 @@ static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, static NODE *cond_gen(struct parser_params*,NODE*,int); #define cond(node) cond_gen(parser, (node), FALSE) #define method_cond(node) cond_gen(parser, (node), TRUE) +#define new_nil() NEW_NIL() static NODE *new_if_gen(struct parser_params*,NODE*,NODE*,NODE*); #define new_if(cc,left,right) new_if_gen(parser, (cc), (left), (right)) #define new_unless(cc,left,right) new_if_gen(parser, (cc), (right), (left)) @@ -560,8 +561,11 @@ static VALUE assignable_gen(struct parser_params*,VALUE); static int id_is_var_gen(struct parser_params *parser, ID id); #define id_is_var(id) id_is_var_gen(parser, (id)) +#define method_cond(node) (node) +#define call_uni_op(recv,id) dispatch2(unary, STATIC_ID2SYM(id), (recv)) #define node_assign(node1, node2) dispatch2(assign, (node1), (node2)) +#define new_nil() Qnil static VALUE new_op_assign_gen(struct parser_params *parser, VALUE lhs, VALUE op, VALUE rhs); static VALUE new_attr_op_assign_gen(struct parser_params *parser, VALUE lhs, VALUE type, VALUE attr, VALUE op, VALUE rhs); #define new_attr_op_assign(lhs, type, attr, op, rhs) new_attr_op_assign_gen(parser, (lhs), (type), (attr), (op), (rhs)) @@ -633,6 +637,12 @@ static int dvar_curr_gen(struct parser_params*,ID); static int lvar_defined_gen(struct parser_params*, ID); #define lvar_defined(id) lvar_defined_gen(parser, (id)) +#ifdef RIPPER +# define METHOD_NOT idNOT +#else +# define METHOD_NOT '!' +#endif + #define RE_OPTION_ONCE (1<<16) #define RE_OPTION_ENCODING_SHIFT 8 #define RE_OPTION_ENCODING(e) (((e)&0xff)<