Ruby  1.9.3p547(2014-05-14revision45962)
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
ripper.y File Reference
#include "ruby/ruby.h"
#include "ruby/st.h"
#include "ruby/encoding.h"
#include "internal.h"
#include "node.h"
#include "parse.h"
#include "id.h"
#include "regenc.h"
#include <stdio.h>
#include <errno.h>
#include <ctype.h>
#include "id.c"
#include "ruby/regex.h"
#include "ruby/util.h"
#include "lex.c"
Include dependency graph for ripper.y:

Go to the source code of this file.

Data Structures

struct  vtable
 
struct  local_vars
 
struct  token_info
 
struct  parser_params
 

Macros

#define YYDEBUG   1
 
#define YYERROR_VERBOSE   1
 
#define YYSTACK_USE_ALLOCA   0
 
#define numberof(array)   (int)(sizeof(array) / sizeof((array)[0]))
 
#define YYMALLOC(size)   rb_parser_malloc(parser, (size))
 
#define YYREALLOC(ptr, size)   rb_parser_realloc(parser, (ptr), (size))
 
#define YYCALLOC(nelem, size)   rb_parser_calloc(parser, (nelem), (size))
 
#define YYFREE(ptr)   rb_parser_free(parser, (ptr))
 
#define malloc   YYMALLOC
 
#define realloc   YYREALLOC
 
#define calloc   YYCALLOC
 
#define free   YYFREE
 
#define REGISTER_SYMID(id, name)   register_symid((id), (name), strlen(name), enc)
 
#define is_notop_id(id)   ((id)>tLAST_TOKEN)
 
#define is_local_id(id)   (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
 
#define is_global_id(id)   (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)
 
#define is_instance_id(id)   (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
 
#define is_attrset_id(id)   (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
 
#define is_const_id(id)   (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
 
#define is_class_id(id)   (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
 
#define is_junk_id(id)   (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
 
#define is_asgn_or_id(id)
 
#define BITSTACK_PUSH(stack, n)   ((stack) = ((stack)<<1)|((n)&1))
 
#define BITSTACK_POP(stack)   ((stack) = (stack) >> 1)
 
#define BITSTACK_LEXPOP(stack)   ((stack) = ((stack) >> 1) | ((stack) & 1))
 
#define BITSTACK_SET_P(stack)   ((stack)&1)
 
#define COND_PUSH(n)   BITSTACK_PUSH(cond_stack, (n))
 
#define COND_POP()   BITSTACK_POP(cond_stack)
 
#define COND_LEXPOP()   BITSTACK_LEXPOP(cond_stack)
 
#define COND_P()   BITSTACK_SET_P(cond_stack)
 
#define CMDARG_PUSH(n)   BITSTACK_PUSH(cmdarg_stack, (n))
 
#define CMDARG_POP()   BITSTACK_POP(cmdarg_stack)
 
#define CMDARG_LEXPOP()   BITSTACK_LEXPOP(cmdarg_stack)
 
#define CMDARG_P()   BITSTACK_SET_P(cmdarg_stack)
 
#define DVARS_INHERIT   ((void*)1)
 
#define DVARS_TOPSCOPE   NULL
 
#define DVARS_SPECIAL_P(tbl)   (!POINTER_P(tbl))
 
#define POINTER_P(val)   ((VALUE)(val) & ~(VALUE)3)
 
#define VTBL_DEBUG   0
 
#define UTF8_ENC()
 
#define STR_NEW(p, n)   rb_enc_str_new((p),(n),parser->enc)
 
#define STR_NEW0()   rb_enc_str_new(0,0,parser->enc)
 
#define STR_NEW2(p)   rb_enc_str_new((p),strlen(p),parser->enc)
 
#define STR_NEW3(p, n, e, func)   parser_str_new((p),(n),(e),(func),parser->enc)
 
#define ENC_SINGLE(cr)   ((cr)==ENC_CODERANGE_7BIT)
 
#define TOK_INTERN(mb)   rb_intern3(tok(), toklen(), parser->enc)
 
#define yyerror(msg)   parser_yyerror(parser, (msg))
 
#define lex_strterm   (parser->parser_lex_strterm)
 
#define lex_state   (parser->parser_lex_state)
 
#define cond_stack   (parser->parser_cond_stack)
 
#define cmdarg_stack   (parser->parser_cmdarg_stack)
 
#define class_nest   (parser->parser_class_nest)
 
#define paren_nest   (parser->parser_paren_nest)
 
#define lpar_beg   (parser->parser_lpar_beg)
 
#define in_single   (parser->parser_in_single)
 
#define in_def   (parser->parser_in_def)
 
#define compile_for_eval   (parser->parser_compile_for_eval)
 
#define cur_mid   (parser->parser_cur_mid)
 
#define in_defined   (parser->parser_in_defined)
 
#define tokenbuf   (parser->parser_tokenbuf)
 
#define tokidx   (parser->parser_tokidx)
 
#define toksiz   (parser->parser_toksiz)
 
#define lex_input   (parser->parser_lex_input)
 
#define lex_lastline   (parser->parser_lex_lastline)
 
#define lex_nextline   (parser->parser_lex_nextline)
 
#define lex_pbeg   (parser->parser_lex_pbeg)
 
#define lex_p   (parser->parser_lex_p)
 
#define lex_pend   (parser->parser_lex_pend)
 
#define heredoc_end   (parser->parser_heredoc_end)
 
#define command_start   (parser->parser_command_start)
 
#define deferred_nodes   (parser->parser_deferred_nodes)
 
#define lex_gets_ptr   (parser->parser_lex_gets_ptr)
 
#define lex_gets   (parser->parser_lex_gets)
 
#define lvtbl   (parser->parser_lvtbl)
 
#define ruby__end__seen   (parser->parser_ruby__end__seen)
 
#define ruby_sourceline   (parser->parser_ruby_sourceline)
 
#define ruby_sourcefile   (parser->parser_ruby_sourcefile)
 
#define current_enc   (parser->enc)
 
#define yydebug   (parser->parser_yydebug)
 
#define ruby_eval_tree   (parser->parser_eval_tree)
 
#define ruby_eval_tree_begin   (parser->parser_eval_tree_begin)
 
#define ruby_debug_lines   (parser->debug_lines)
 
#define ruby_coverage   (parser->coverage)
 
#define yyparse   ruby_yyparse
 
#define rb_node_newnode(type, a1, a2, a3)   node_newnode(parser, (type), (a1), (a2), (a3))
 
#define cond(node)   cond_gen(parser, (node))
 
#define logop(type, node1, node2)   logop_gen(parser, (type), (node1), (node2))
 
#define value_expr(node)   value_expr_gen(parser, (node) = remove_begin(node))
 
#define void_expr0(node)   void_expr_gen(parser, (node))
 
#define void_expr(node)   void_expr0((node) = remove_begin(node))
 
#define void_stmts(node)   void_stmts_gen(parser, (node))
 
#define reduce_nodes(n)   reduce_nodes_gen(parser,(n))
 
#define block_dup_check(n1, n2)   block_dup_check_gen(parser,(n1),(n2))
 
#define block_append(h, t)   block_append_gen(parser,(h),(t))
 
#define list_append(l, i)   list_append_gen(parser,(l),(i))
 
#define list_concat(h, t)   list_concat_gen(parser,(h),(t))
 
#define arg_append(h, t)   arg_append_gen(parser,(h),(t))
 
#define arg_concat(h, t)   arg_concat_gen(parser,(h),(t))
 
#define literal_concat(h, t)   literal_concat_gen(parser,(h),(t))
 
#define new_evstr(n)   new_evstr_gen(parser,(n))
 
#define evstr2dstr(n)   evstr2dstr_gen(parser,(n))
 
#define call_bin_op(recv, id, arg1)   call_bin_op_gen(parser, (recv),(id),(arg1))
 
#define call_uni_op(recv, id)   call_uni_op_gen(parser, (recv),(id))
 
#define new_args(f, o, r, p, b)   new_args_gen(parser, (f),(o),(r),(p),(b))
 
#define ret_args(node)   ret_args_gen(parser, (node))
 
#define new_yield(node)   new_yield_gen(parser, (node))
 
#define gettable(id)   gettable_gen(parser,(id))
 
#define assignable(id, node)   assignable_gen(parser, (id), (node))
 
#define aryset(node1, node2)   aryset_gen(parser, (node1), (node2))
 
#define attrset(node, id)   attrset_gen(parser, (node), (id))
 
#define rb_backref_error(n)   rb_backref_error_gen(parser,(n))
 
#define node_assign(node1, node2)   node_assign_gen(parser, (node1), (node2))
 
#define match_op(node1, node2)   match_op_gen(parser, (node1), (node2))
 
#define local_tbl()   local_tbl_gen(parser)
 
#define reg_compile(str, options)   reg_compile_gen(parser, (str), (options))
 
#define reg_fragment_setenc(str, options)   reg_fragment_setenc_gen(parser, (str), (options))
 
#define reg_fragment_check(str, options)   reg_fragment_check_gen(parser, (str), (options))
 
#define reg_named_capture_assign(regexp, match)   reg_named_capture_assign_gen(parser,(regexp),(match))
 
#define get_id(id)   (id)
 
#define get_value(val)   (val)
 
#define formal_argument(id)   formal_argument_gen(parser, (id))
 
#define shadowing_lvar(name)   shadowing_lvar_gen(parser, (name))
 
#define new_bv(id)   new_bv_gen(parser, (id))
 
#define local_push(top)   local_push_gen(parser,(top))
 
#define local_pop()   local_pop_gen(parser)
 
#define local_var(id)   local_var_gen(parser, (id));
 
#define arg_var(id)   arg_var_gen(parser, (id))
 
#define local_id(id)   local_id_gen(parser, (id))
 
#define internal_id()   internal_id_gen(parser)
 
#define dyna_push()   dyna_push_gen(parser)
 
#define dyna_pop(node)   dyna_pop_gen(parser, (node))
 
#define dyna_in_block()   dyna_in_block_gen(parser)
 
#define dyna_var(id)   local_var(id)
 
#define dvar_defined(id)   dvar_defined_gen(parser, (id), 0)
 
#define dvar_defined_get(id)   dvar_defined_gen(parser, (id), 1)
 
#define dvar_curr(id)   dvar_curr_gen(parser, (id))
 
#define lvar_defined(id)   lvar_defined_gen(parser, (id))
 
#define RE_OPTION_ONCE   (1<<16)
 
#define RE_OPTION_ENCODING_SHIFT   8
 
#define RE_OPTION_ENCODING(e)   (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
 
#define RE_OPTION_ENCODING_IDX(o)   (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
 
#define RE_OPTION_ENCODING_NONE(o)   ((o)&RE_OPTION_ARG_ENCODING_NONE)
 
#define RE_OPTION_MASK   0xff
 
#define RE_OPTION_ARG_ENCODING_NONE   32
 
#define NODE_STRTERM   NODE_ZARRAY /* nothing to gc */
 
#define NODE_HEREDOC   NODE_ARRAY /* 1, 3 to gc */
 
#define SIGN_EXTEND(x, n)   (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
 
#define nd_func   u1.id
 
#define nd_term(node)   SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
 
#define nd_paren(node)   (char)((node)->u2.id >> CHAR_BIT*2)
 
#define nd_nest   u3.cnt
 
#define ifndef_ripper(x)   (x)
 
#define rb_warn0(fmt)   rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt))
 
#define rb_warnI(fmt, a)   rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))
 
#define rb_warnS(fmt, a)   rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))
 
#define rb_warning0(fmt)   rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt))
 
#define rb_warningS(fmt, a)   rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt), (a))
 
#define rb_compile_error   rb_compile_error_with_enc
 
#define compile_error   parser->nerr++,rb_compile_error_with_enc
 
#define PARSER_ARG   ruby_sourcefile, ruby_sourceline, current_enc,
 
#define token_info_push(token)   (RTEST(ruby_verbose) ? token_info_push(parser, (token)) : (void)0)
 
#define token_info_pop(token)   (RTEST(ruby_verbose) ? token_info_pop(parser, (token)) : (void)0)
 
#define yylval   (*((YYSTYPE*)(parser->parser_yylval)))
 
#define nextc()   parser_nextc(parser)
 
#define pushback(c)   parser_pushback(parser, (c))
 
#define newtok()   parser_newtok(parser)
 
#define tokspace(n)   parser_tokspace(parser, (n))
 
#define tokadd(c)   parser_tokadd(parser, (c))
 
#define tok_hex(numlen)   parser_tok_hex(parser, (numlen))
 
#define read_escape(flags, e)   parser_read_escape(parser, (flags), (e))
 
#define tokadd_escape(e)   parser_tokadd_escape(parser, (e))
 
#define regx_options()   parser_regx_options(parser)
 
#define tokadd_string(f, t, p, n, e)   parser_tokadd_string(parser,(f),(t),(p),(n),(e))
 
#define parse_string(n)   parser_parse_string(parser,(n))
 
#define tokaddmbc(c, enc)   parser_tokaddmbc(parser, (c), (enc))
 
#define here_document(n)   parser_here_document(parser,(n))
 
#define heredoc_identifier()   parser_heredoc_identifier(parser)
 
#define heredoc_restore(n)   parser_heredoc_restore(parser,(n))
 
#define whole_match_p(e, l, i)   parser_whole_match_p(parser,(e),(l),(i))
 
#define set_yylval_str(x)   (yylval.node = NEW_STR(x))
 
#define set_yylval_num(x)   (yylval.num = (x))
 
#define set_yylval_id(x)   (yylval.id = (x))
 
#define set_yylval_name(x)   (yylval.id = (x))
 
#define set_yylval_literal(x)   (yylval.node = NEW_LIT(x))
 
#define set_yylval_node(x)   (yylval.node = (x))
 
#define yylval_id()   (yylval.id)
 
#define ripper_flush(p)   (void)(p)
 
#define SIGN_EXTEND_CHAR(c)   ((((unsigned char)(c)) ^ 128) - 128)
 
#define parser_encoding_name()   (parser->enc->name)
 
#define parser_mbclen()   mbclen((lex_p-1),lex_pend,parser->enc)
 
#define parser_precise_mbclen()   rb_enc_precise_mbclen((lex_p-1),lex_pend,parser->enc)
 
#define is_identchar(p, e, enc)   (rb_enc_isalnum(*(p),(enc)) || (*(p)) == '_' || !ISASCII(*(p)))
 
#define parser_is_identchar()   (!parser->eofp && is_identchar((lex_p-1),lex_pend,parser->enc))
 
#define parser_isascii()   ISASCII(*(lex_p-1))
 
#define STR_FUNC_ESCAPE   0x01
 
#define STR_FUNC_EXPAND   0x02
 
#define STR_FUNC_REGEXP   0x04
 
#define STR_FUNC_QWORDS   0x08
 
#define STR_FUNC_SYMBOL   0x10
 
#define STR_FUNC_INDENT   0x20
 
#define lex_goto_eol(parser)   ((parser)->parser_lex_p = (parser)->parser_lex_pend)
 
#define lex_eol_p()   (lex_p >= lex_pend)
 
#define peek(c)   peek_n((c), 0)
 
#define peek_n(c, n)   (lex_p+(n) < lex_pend && (c) == (unsigned char)lex_p[n])
 
#define was_bol()   (lex_p == lex_pbeg + 1)
 
#define tokfix()   (tokenbuf[tokidx]='\0')
 
#define tok()   tokenbuf
 
#define toklen()   tokidx
 
#define toklast()   (tokidx>0?tokenbuf[tokidx-1]:0)
 
#define tokcopy(n)   memcpy(tokspace(n), lex_p - (n), (n))
 
#define ESCAPE_CONTROL   1
 
#define ESCAPE_META   2
 
#define tokadd_mbchar(c)   parser_tokadd_mbchar(parser, (c))
 
#define mixed_error(enc1, enc2)
 
#define mixed_escape(beg, enc1, enc2)
 
#define NEW_STRTERM(func, term, paren)   rb_node_newnode(NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)
 
#define flush_string_content(enc)   ((void)(enc))
 
#define BIT(c, idx)   (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
 
#define SPECIAL_PUNCT(idx)
 
#define dispatch_heredoc_end()   ((void)0)
 
#define arg_ambiguous()   (arg_ambiguous_gen(parser), 1)
 
#define str_copy(_s, _p, _n)
 
#define IS_ARG()   (lex_state == EXPR_ARG || lex_state == EXPR_CMDARG)
 
#define IS_END()   (lex_state == EXPR_END || lex_state == EXPR_ENDARG || lex_state == EXPR_ENDFN)
 
#define IS_BEG()   (lex_state == EXPR_BEG || lex_state == EXPR_MID || lex_state == EXPR_VALUE || lex_state == EXPR_CLASS)
 
#define IS_SPCARG(c)   (IS_ARG() && space_seen && !ISSPACE(c))
 
#define IS_LABEL_POSSIBLE()   ((lex_state == EXPR_BEG && !cmd_state) || IS_ARG())
 
#define IS_LABEL_SUFFIX(n)   (peek_n(':',(n)) && !peek_n(':', (n)+1))
 
#define ambiguous_operator(op, syn)
 
#define warn_balanced(op, syn)
 
#define no_digits()   do {yyerror("numeric literal without digits"); return 0;} while (0)
 
#define parser_warning(node, mesg)   parser_warning(parser, (node), (mesg))
 
#define parser_warn(node, mesg)   parser_warn(parser, (node), (mesg))
 
#define assignable_result(x)   (x)
 
#define LVAR_USED   ((int)1 << (sizeof(int) * CHAR_BIT - 1))
 
#define subnodes(n1, n2)
 
#define op_tbl_count   numberof(op_tbl)
 
#define ENABLE_SELECTOR_NAMESPACE   0
 
#define HEAPCNT(n, size)   ((n) * (size) / sizeof(YYSTYPE))
 
#define NEWHEAP()   rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parser->heap, 0)
 
#define ADD2HEAP(n, c, p)
 

Typedefs

typedef VALUE stack_type
 
typedef struct token_info token_info
 

Enumerations

enum  lex_state_e {
  EXPR_BEG, EXPR_END, EXPR_ENDARG, EXPR_ENDFN,
  EXPR_ARG, EXPR_CMDARG, EXPR_MID, EXPR_FNAME,
  EXPR_DOT, EXPR_CLASS, EXPR_VALUE, EXPR_MAX_STATE,
  EXPR_BEG, EXPR_END, EXPR_ENDARG, EXPR_ENDFN,
  EXPR_ARG, EXPR_CMDARG, EXPR_MID, EXPR_FNAME,
  EXPR_DOT, EXPR_CLASS, EXPR_VALUE, EXPR_MAX_STATE,
  EXPR_BEG, EXPR_END, EXPR_ENDARG, EXPR_ENDFN,
  EXPR_ARG, EXPR_CMDARG, EXPR_MID, EXPR_FNAME,
  EXPR_DOT, EXPR_CLASS, EXPR_VALUE, EXPR_MAX_STATE,
  EXPR_BEG, EXPR_END, EXPR_ENDARG, EXPR_ENDFN,
  EXPR_ARG, EXPR_CMDARG, EXPR_MID, EXPR_FNAME,
  EXPR_DOT, EXPR_CLASS, EXPR_VALUE, EXPR_MAX_STATE
}
 

Functions

static int vtable_size (const struct vtable *tbl)
 
static struct vtablevtable_alloc (struct vtable *prev)
 
static void vtable_free (struct vtable *tbl)
 
static void vtable_add (struct vtable *tbl, ID id)
 
static int vtable_included (const struct vtable *tbl, ID id)
 
static int parser_yyerror (struct parser_params *, const char *)
 
static int yylex (void *)
 
static NODEnode_newnode (struct parser_params *, enum node_type, VALUE, VALUE, VALUE)
 
static NODEcond_gen (struct parser_params *, NODE *)
 
static NODElogop_gen (struct parser_params *, enum node_type, NODE *, NODE *)
 
static NODEnewline_node (NODE *)
 
static void fixpos (NODE *, NODE *)
 
static int value_expr_gen (struct parser_params *, NODE *)
 
static void void_expr_gen (struct parser_params *, NODE *)
 
static NODEremove_begin (NODE *)
 
static void void_stmts_gen (struct parser_params *, NODE *)
 
static void reduce_nodes_gen (struct parser_params *, NODE **)
 
static void block_dup_check_gen (struct parser_params *, NODE *, NODE *)
 
static NODEblock_append_gen (struct parser_params *, NODE *, NODE *)
 
static NODElist_append_gen (struct parser_params *, NODE *, NODE *)
 
static NODElist_concat_gen (struct parser_params *, NODE *, NODE *)
 
static NODEarg_append_gen (struct parser_params *, NODE *, NODE *)
 
static NODEarg_concat_gen (struct parser_params *, NODE *, NODE *)
 
static NODEliteral_concat_gen (struct parser_params *, NODE *, NODE *)
 
static int literal_concat0 (struct parser_params *, VALUE, VALUE)
 
static NODEnew_evstr_gen (struct parser_params *, NODE *)
 
static NODEevstr2dstr_gen (struct parser_params *, NODE *)
 
static NODEsplat_array (NODE *)
 
static NODEcall_bin_op_gen (struct parser_params *, NODE *, ID, NODE *)
 
static NODEcall_uni_op_gen (struct parser_params *, NODE *, ID)
 
static NODEnew_args_gen (struct parser_params *, NODE *, NODE *, ID, NODE *, ID)
 
static NODEnegate_lit (NODE *)
 
static NODEret_args_gen (struct parser_params *, NODE *)
 
static NODEarg_blk_pass (NODE *, NODE *)
 
static NODEnew_yield_gen (struct parser_params *, NODE *)
 
static NODEgettable_gen (struct parser_params *, ID)
 
static NODEassignable_gen (struct parser_params *, ID, NODE *)
 
static NODEaryset_gen (struct parser_params *, NODE *, NODE *)
 
static NODEattrset_gen (struct parser_params *, NODE *, ID)
 
static void rb_backref_error_gen (struct parser_params *, NODE *)
 
static NODEnode_assign_gen (struct parser_params *, NODE *, NODE *)
 
static NODEmatch_op_gen (struct parser_params *, NODE *, NODE *)
 
static IDlocal_tbl_gen (struct parser_params *)
 
static void fixup_nodes (NODE **)
 
static VALUE reg_compile_gen (struct parser_params *, VALUE, int)
 
static void reg_fragment_setenc_gen (struct parser_params *, VALUE, int)
 
static int reg_fragment_check_gen (struct parser_params *, VALUE, int)
 
static NODEreg_named_capture_assign_gen (struct parser_params *parser, VALUE regexp, NODE *match)
 
static ID formal_argument_gen (struct parser_params *, ID)
 
static ID shadowing_lvar_gen (struct parser_params *, ID)
 
static void new_bv_gen (struct parser_params *, ID)
 
static void local_push_gen (struct parser_params *, int)
 
static void local_pop_gen (struct parser_params *)
 
static int local_var_gen (struct parser_params *, ID)
 
static int arg_var_gen (struct parser_params *, ID)
 
static int local_id_gen (struct parser_params *, ID)
 
static ID internal_id_gen (struct parser_params *)
 
static const struct vtabledyna_push_gen (struct parser_params *)
 
static void dyna_pop_gen (struct parser_params *, const struct vtable *)
 
static int dyna_in_block_gen (struct parser_params *)
 
static int dvar_defined_gen (struct parser_params *, ID, int)
 
static int dvar_curr_gen (struct parser_params *, ID)
 
static int lvar_defined_gen (struct parser_params *, ID)
 
static void token_info_push (struct parser_params *, const char *token)
 
static void token_info_pop (struct parser_params *, const char *token)
 
top_stmts dispatch0 (stmts_new)
 
top_stmts dispatch0 (void_stmt))
 
bodystmt escape_Qundef ($1)
 
expr ripper_intern ("and")
 
block_command ripper_id2sym ('.')
 
 dyna_pop ($< vars >1)
 

Variables

pure parser lex param
 
top_compstmt __pad0__
 
top_stmts __pad1__
 
 top_stmt
 
top_stmt __pad2__
 
bodystmt __pad3__
 
compstmt __pad4__
 
stmts __pad5__
 
 stmt
 
stmt __pad6__
 
 fitem
 
keyword_alias tGVAR tGVAR
 
keyword_alias tGVAR tBACK_REF
 
keyword_alias tGVAR tNTH_REF
 
keyword_undef undef_list
 
stmt modifier_if expr_value
 
 keyword_END
 
command_asgn __pad7__
 
command_asgn lhs
 
expr __pad8__
 
expr expr keyword_or expr
 
 command_call
 
 arg
 
expr_value __pad9__
 
command_call __pad10__
 
block_command __pad11__
 
block_command block_call
tCOLON2 operation2 
command_args
 
cmd_brace_block __pad12__ = method_arg($$, $4)
 
opt_block_param compstmt
 
command __pad13__
 
command operation command_args cmd_brace_block
 
primary_value operation2
command_args prec 
tLOWEST
 
keyword_return call_args
 
mlhs __pad14__
 
mlhs mlhs_inner
 
mlhs mlhs_basic
 
mlhs_head mlhs_item
 
mlhs_head tSTAR mlhs_node
 
mlhs_head tSTAR mlhs_post
 
mlhs_head tSTAR
 
mlhs_item __pad15__ = mlhs_add($$, $3)
 
mlhs_item mlhs_head
 
mlhs_node __pad16__
 
mlhs_node keyword_variable
 

Macro Definition Documentation

#define ADD2HEAP (   n,
  c,
  p 
)
Value:
((parser->heap = (n))->u1.node = (p), \
(n)->u3.cnt = (c), (p))
Win32OLEIDispatch * p
Definition: win32ole.c:778
#define ambiguous_operator (   op,
  syn 
)
Value:
( \
rb_warning0("`"op"' after local variable is interpreted as binary operator"), \
rb_warning0("even though it seems like "syn""))
#define rb_warning0(fmt)
Definition: ripper.y:568
#define arg_ambiguous ( )    (arg_ambiguous_gen(parser), 1)
#define arg_append (   h,
 
)    arg_append_gen(parser,(h),(t))

Definition at line 361 of file ripper.y.

#define arg_concat (   h,
 
)    arg_concat_gen(parser,(h),(t))

Definition at line 363 of file ripper.y.

#define arg_var (   id)    arg_var_gen(parser, (id))

Definition at line 450 of file ripper.y.

#define aryset (   node1,
  node2 
)    aryset_gen(parser, (node1), (node2))

Definition at line 394 of file ripper.y.

#define assignable (   id,
  node 
)    assignable_gen(parser, (id), (node))

Definition at line 391 of file ripper.y.

#define assignable_result (   x)    (x)
#define attrset (   node,
  id 
)    attrset_gen(parser, (node), (id))

Definition at line 396 of file ripper.y.

#define BIT (   c,
  idx 
)    (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
#define BITSTACK_LEXPOP (   stack)    ((stack) = ((stack) >> 1) | ((stack) & 1))

Definition at line 80 of file ripper.y.

#define BITSTACK_POP (   stack)    ((stack) = (stack) >> 1)

Definition at line 79 of file ripper.y.

#define BITSTACK_PUSH (   stack,
 
)    ((stack) = ((stack)<<1)|((n)&1))

Definition at line 78 of file ripper.y.

#define BITSTACK_SET_P (   stack)    ((stack)&1)

Definition at line 81 of file ripper.y.

#define block_append (   h,
 
)    block_append_gen(parser,(h),(t))

Definition at line 355 of file ripper.y.

#define block_dup_check (   n1,
  n2 
)    block_dup_check_gen(parser,(n1),(n2))

Definition at line 352 of file ripper.y.

#define call_bin_op (   recv,
  id,
  arg1 
)    call_bin_op_gen(parser, (recv),(id),(arg1))

Definition at line 374 of file ripper.y.

#define call_uni_op (   recv,
  id 
)    call_uni_op_gen(parser, (recv),(id))

Definition at line 376 of file ripper.y.

#define calloc   YYCALLOC
#define class_nest   (parser->parser_class_nest)

Definition at line 285 of file ripper.y.

#define CMDARG_LEXPOP ( )    BITSTACK_LEXPOP(cmdarg_stack)

Definition at line 90 of file ripper.y.

#define CMDARG_P ( )    BITSTACK_SET_P(cmdarg_stack)

Definition at line 91 of file ripper.y.

#define CMDARG_POP ( )    BITSTACK_POP(cmdarg_stack)

Definition at line 89 of file ripper.y.

#define CMDARG_PUSH (   n)    BITSTACK_PUSH(cmdarg_stack, (n))

Definition at line 88 of file ripper.y.

#define cmdarg_stack   (parser->parser_cmdarg_stack)

Definition at line 284 of file ripper.y.

#define command_start   (parser->parser_command_start)

Definition at line 303 of file ripper.y.

#define compile_error   parser->nerr++,rb_compile_error_with_enc

Definition at line 592 of file ripper.y.

#define compile_for_eval   (parser->parser_compile_for_eval)

Definition at line 290 of file ripper.y.

#define cond (   node)    cond_gen(parser, (node))

Definition at line 334 of file ripper.y.

#define COND_LEXPOP ( )    BITSTACK_LEXPOP(cond_stack)

Definition at line 85 of file ripper.y.

#define COND_P ( )    BITSTACK_SET_P(cond_stack)

Definition at line 86 of file ripper.y.

#define COND_POP ( )    BITSTACK_POP(cond_stack)

Definition at line 84 of file ripper.y.

#define COND_PUSH (   n)    BITSTACK_PUSH(cond_stack, (n))

Definition at line 83 of file ripper.y.

#define cond_stack   (parser->parser_cond_stack)

Definition at line 283 of file ripper.y.

#define cur_mid   (parser->parser_cur_mid)

Definition at line 291 of file ripper.y.

#define current_enc   (parser->enc)

Definition at line 311 of file ripper.y.

#define deferred_nodes   (parser->parser_deferred_nodes)

Definition at line 304 of file ripper.y.

#define dispatch_heredoc_end ( )    ((void)0)
#define dvar_curr (   id)    dvar_curr_gen(parser, (id))

Definition at line 467 of file ripper.y.

#define dvar_defined (   id)    dvar_defined_gen(parser, (id), 0)

Definition at line 464 of file ripper.y.

#define dvar_defined_get (   id)    dvar_defined_gen(parser, (id), 1)

Definition at line 465 of file ripper.y.

#define DVARS_INHERIT   ((void*)1)

Definition at line 108 of file ripper.y.

#define DVARS_SPECIAL_P (   tbl)    (!POINTER_P(tbl))

Definition at line 110 of file ripper.y.

#define DVARS_TOPSCOPE   NULL

Definition at line 109 of file ripper.y.

#define dyna_in_block ( )    dyna_in_block_gen(parser)

Definition at line 461 of file ripper.y.

#define dyna_pop (   node)    dyna_pop_gen(parser, (node))

Definition at line 459 of file ripper.y.

#define dyna_push ( )    dyna_push_gen(parser)

Definition at line 457 of file ripper.y.

#define dyna_var (   id)    local_var(id)

Definition at line 462 of file ripper.y.

#define ENABLE_SELECTOR_NAMESPACE   0
#define ENC_SINGLE (   cr)    ((cr)==ENC_CODERANGE_7BIT)

Definition at line 275 of file ripper.y.

#define ESCAPE_CONTROL   1
#define ESCAPE_META   2
#define evstr2dstr (   n)    evstr2dstr_gen(parser,(n))

Definition at line 370 of file ripper.y.

#define flush_string_content (   enc)    ((void)(enc))
#define formal_argument (   id)    formal_argument_gen(parser, (id))

Definition at line 437 of file ripper.y.

#define free   YYFREE
#define get_id (   id)    (id)

Definition at line 420 of file ripper.y.

#define get_value (   val)    (val)

Definition at line 421 of file ripper.y.

#define gettable (   id)    gettable_gen(parser,(id))

Definition at line 389 of file ripper.y.

#define HEAPCNT (   n,
  size 
)    ((n) * (size) / sizeof(YYSTYPE))
#define here_document (   n)    parser_here_document(parser,(n))
#define heredoc_end   (parser->parser_heredoc_end)

Definition at line 302 of file ripper.y.

#define heredoc_identifier ( )    parser_heredoc_identifier(parser)
#define heredoc_restore (   n)    parser_heredoc_restore(parser,(n))
#define ifndef_ripper (   x)    (x)

Definition at line 559 of file ripper.y.

#define in_def   (parser->parser_in_def)

Definition at line 289 of file ripper.y.

#define in_defined   (parser->parser_in_defined)

Definition at line 292 of file ripper.y.

#define in_single   (parser->parser_in_single)

Definition at line 288 of file ripper.y.

#define internal_id ( )    internal_id_gen(parser)

Definition at line 454 of file ripper.y.

#define IS_ARG ( )    (lex_state == EXPR_ARG || lex_state == EXPR_CMDARG)
#define is_asgn_or_id (   id)
Value:
((is_notop_id(id)) && \
(((id)&ID_SCOPE_MASK) == ID_GLOBAL || \
((id)&ID_SCOPE_MASK) == ID_INSTANCE || \
((id)&ID_SCOPE_MASK) == ID_CLASS))
#define is_notop_id(id)
Definition: ripper.y:47
const int id
Definition: nkf.c:209
#define ID_SCOPE_MASK
Definition: parse.y:18
#define ID_INSTANCE
Definition: parse.y:20
#define ID_GLOBAL
Definition: parse.y:21
#define ID_CLASS
Definition: parse.y:24

Definition at line 56 of file ripper.y.

#define is_attrset_id (   id)    (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)

Definition at line 51 of file ripper.y.

#define IS_BEG ( )    (lex_state == EXPR_BEG || lex_state == EXPR_MID || lex_state == EXPR_VALUE || lex_state == EXPR_CLASS)
#define is_class_id (   id)    (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)

Definition at line 53 of file ripper.y.

#define is_const_id (   id)    (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)

Definition at line 52 of file ripper.y.

#define IS_END ( )    (lex_state == EXPR_END || lex_state == EXPR_ENDARG || lex_state == EXPR_ENDFN)
#define is_global_id (   id)    (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)

Definition at line 49 of file ripper.y.

#define is_identchar (   p,
  e,
  enc 
)    (rb_enc_isalnum(*(p),(enc)) || (*(p)) == '_' || !ISASCII(*(p)))
#define is_instance_id (   id)    (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)

Definition at line 50 of file ripper.y.

#define is_junk_id (   id)    (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)

Definition at line 54 of file ripper.y.

#define IS_LABEL_POSSIBLE ( )    ((lex_state == EXPR_BEG && !cmd_state) || IS_ARG())
#define IS_LABEL_SUFFIX (   n)    (peek_n(':',(n)) && !peek_n(':', (n)+1))
#define is_local_id (   id)    (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)

Definition at line 48 of file ripper.y.

#define is_notop_id (   id)    ((id)>tLAST_TOKEN)

Definition at line 47 of file ripper.y.

#define IS_SPCARG (   c)    (IS_ARG() && space_seen && !ISSPACE(c))
#define lex_eol_p ( )    (lex_p >= lex_pend)
#define lex_gets   (parser->parser_lex_gets)

Definition at line 306 of file ripper.y.

#define lex_gets_ptr   (parser->parser_lex_gets_ptr)

Definition at line 305 of file ripper.y.

#define lex_goto_eol (   parser)    ((parser)->parser_lex_p = (parser)->parser_lex_pend)
#define lex_input   (parser->parser_lex_input)

Definition at line 296 of file ripper.y.

#define lex_lastline   (parser->parser_lex_lastline)

Definition at line 297 of file ripper.y.

#define lex_nextline   (parser->parser_lex_nextline)

Definition at line 298 of file ripper.y.

#define lex_p   (parser->parser_lex_p)

Definition at line 300 of file ripper.y.

#define lex_pbeg   (parser->parser_lex_pbeg)

Definition at line 299 of file ripper.y.

#define lex_pend   (parser->parser_lex_pend)

Definition at line 301 of file ripper.y.

#define lex_state   (parser->parser_lex_state)

Definition at line 282 of file ripper.y.

#define lex_strterm   (parser->parser_lex_strterm)

Definition at line 281 of file ripper.y.

#define list_append (   l,
  i 
)    list_append_gen(parser,(l),(i))

Definition at line 357 of file ripper.y.

#define list_concat (   h,
 
)    list_concat_gen(parser,(h),(t))

Definition at line 359 of file ripper.y.

#define literal_concat (   h,
 
)    literal_concat_gen(parser,(h),(t))

Definition at line 365 of file ripper.y.

#define local_id (   id)    local_id_gen(parser, (id))

Definition at line 452 of file ripper.y.

#define local_pop ( )    local_pop_gen(parser)

Definition at line 446 of file ripper.y.

#define local_push (   top)    local_push_gen(parser,(top))

Definition at line 444 of file ripper.y.

#define local_tbl ( )    local_tbl_gen(parser)

Definition at line 407 of file ripper.y.

#define local_var (   id)    local_var_gen(parser, (id));

Definition at line 448 of file ripper.y.

#define logop (   type,
  node1,
  node2 
)    logop_gen(parser, (type), (node1), (node2))

Definition at line 336 of file ripper.y.

#define lpar_beg   (parser->parser_lpar_beg)

Definition at line 287 of file ripper.y.

#define lvar_defined (   id)    lvar_defined_gen(parser, (id))

Definition at line 470 of file ripper.y.

#define LVAR_USED   ((int)1 << (sizeof(int) * CHAR_BIT - 1))
#define lvtbl   (parser->parser_lvtbl)

Definition at line 307 of file ripper.y.

#define malloc   YYMALLOC
#define match_op (   node1,
  node2 
)    match_op_gen(parser, (node1), (node2))

Definition at line 404 of file ripper.y.

#define mixed_error (   enc1,
  enc2 
)
Value:
if (!errbuf) { \
size_t len = sizeof(mixed_msg) - 4; \
len += strlen(rb_enc_name(enc2)); \
errbuf = ALLOCA_N(char, len); \
snprintf(errbuf, len, mixed_msg, \
rb_enc_name(enc1), \
rb_enc_name(enc2)); \
yyerror(errbuf); \
}
size_t strlen(const char *)
#define yyerror(msg)
Definition: ripper.y:279
#define snprintf
Definition: subst.h:6
#define ALLOCA_N(type, n)
Definition: ruby.h:1038
#define rb_enc_name(enc)
Definition: encoding.h:121
register unsigned int len
Definition: name2ctype.h:22210
#define mixed_escape (   beg,
  enc1,
  enc2 
)
Value:
do { \
const char *pos = lex_p; \
lex_p = (beg); \
mixed_error((enc1), (enc2)); \
lex_p = pos; \
} while (0)
#define lex_p
Definition: ripper.y:300
#define const
Definition: strftime.c:101
#define mixed_error(enc1, enc2)
#define nd_func   u1.id

Definition at line 483 of file ripper.y.

#define nd_nest   u3.cnt

Definition at line 490 of file ripper.y.

#define nd_paren (   node)    (char)((node)->u2.id >> CHAR_BIT*2)

Definition at line 489 of file ripper.y.

#define nd_term (   node)    SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)

Definition at line 487 of file ripper.y.

#define new_args (   f,
  o,
  r,
  p,
 
)    new_args_gen(parser, (f),(o),(r),(p),(b))

Definition at line 379 of file ripper.y.

#define new_bv (   id)    new_bv_gen(parser, (id))

Definition at line 441 of file ripper.y.

#define new_evstr (   n)    new_evstr_gen(parser,(n))

Definition at line 368 of file ripper.y.

#define NEW_STRTERM (   func,
  term,
  paren 
)    rb_node_newnode(NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)
#define new_yield (   node)    new_yield_gen(parser, (node))

Definition at line 386 of file ripper.y.

#define NEWHEAP ( )    rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parser->heap, 0)
#define newtok ( )    parser_newtok(parser)
#define nextc ( )    parser_nextc(parser)
#define no_digits ( )    do {yyerror("numeric literal without digits"); return 0;} while (0)
#define node_assign (   node1,
  node2 
)    node_assign_gen(parser, (node1), (node2))

Definition at line 401 of file ripper.y.

#define NODE_HEREDOC   NODE_ARRAY /* 1, 3 to gc */

Definition at line 481 of file ripper.y.

#define NODE_STRTERM   NODE_ZARRAY /* nothing to gc */

Definition at line 480 of file ripper.y.

#define numberof (   array)    (int)(sizeof(array) / sizeof((array)[0]))
#define op_tbl_count   numberof(op_tbl)
#define paren_nest   (parser->parser_paren_nest)

Definition at line 286 of file ripper.y.

#define parse_string (   n)    parser_parse_string(parser,(n))
#define PARSER_ARG   ruby_sourcefile, ruby_sourceline, current_enc,

Definition at line 593 of file ripper.y.

#define parser_encoding_name ( )    (parser->enc->name)
#define parser_is_identchar ( )    (!parser->eofp && is_identchar((lex_p-1),lex_pend,parser->enc))
#define parser_isascii ( )    ISASCII(*(lex_p-1))
#define parser_mbclen ( )    mbclen((lex_p-1),lex_pend,parser->enc)
#define parser_precise_mbclen ( )    rb_enc_precise_mbclen((lex_p-1),lex_pend,parser->enc)
#define parser_warn (   node,
  mesg 
)    parser_warn(parser, (node), (mesg))
#define parser_warning (   node,
  mesg 
)    parser_warning(parser, (node), (mesg))
#define peek (   c)    peek_n((c), 0)
#define peek_n (   c,
 
)    (lex_p+(n) < lex_pend && (c) == (unsigned char)lex_p[n])
#define POINTER_P (   val)    ((VALUE)(val) & ~(VALUE)3)

Definition at line 111 of file ripper.y.

Referenced by vtable_add(), vtable_free(), vtable_included(), and vtable_size().

#define pushback (   c)    parser_pushback(parser, (c))
#define rb_backref_error (   n)    rb_backref_error_gen(parser,(n))

Definition at line 399 of file ripper.y.

#define rb_compile_error   rb_compile_error_with_enc

Definition at line 591 of file ripper.y.

#define rb_node_newnode (   type,
  a1,
  a2,
  a3 
)    node_newnode(parser, (type), (a1), (a2), (a3))

Definition at line 331 of file ripper.y.

#define rb_warn0 (   fmt)    rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt))

Definition at line 565 of file ripper.y.

#define rb_warnI (   fmt,
 
)    rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))

Definition at line 566 of file ripper.y.

#define rb_warning0 (   fmt)    rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt))

Definition at line 568 of file ripper.y.

#define rb_warningS (   fmt,
 
)    rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt), (a))

Definition at line 569 of file ripper.y.

#define rb_warnS (   fmt,
 
)    rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))

Definition at line 567 of file ripper.y.

#define RE_OPTION_ARG_ENCODING_NONE   32

Definition at line 478 of file ripper.y.

#define RE_OPTION_ENCODING (   e)    (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)

Definition at line 474 of file ripper.y.

#define RE_OPTION_ENCODING_IDX (   o)    (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)

Definition at line 475 of file ripper.y.

#define RE_OPTION_ENCODING_NONE (   o)    ((o)&RE_OPTION_ARG_ENCODING_NONE)

Definition at line 476 of file ripper.y.

#define RE_OPTION_ENCODING_SHIFT   8

Definition at line 473 of file ripper.y.

#define RE_OPTION_MASK   0xff

Definition at line 477 of file ripper.y.

#define RE_OPTION_ONCE   (1<<16)

Definition at line 472 of file ripper.y.

#define read_escape (   flags,
 
)    parser_read_escape(parser, (flags), (e))
#define realloc   YYREALLOC
#define reduce_nodes (   n)    reduce_nodes_gen(parser,(n))

Definition at line 350 of file ripper.y.

#define reg_compile (   str,
  options 
)    reg_compile_gen(parser, (str), (options))

Definition at line 412 of file ripper.y.

#define reg_fragment_check (   str,
  options 
)    reg_fragment_check_gen(parser, (str), (options))

Definition at line 416 of file ripper.y.

#define reg_fragment_setenc (   str,
  options 
)    reg_fragment_setenc_gen(parser, (str), (options))

Definition at line 414 of file ripper.y.

#define reg_named_capture_assign (   regexp,
  match 
)    reg_named_capture_assign_gen(parser,(regexp),(match))

Definition at line 418 of file ripper.y.

#define REGISTER_SYMID (   id,
  name 
)    register_symid((id), (name), strlen(name), enc)

Definition at line 43 of file ripper.y.

#define regx_options ( )    parser_regx_options(parser)
#define ret_args (   node)    ret_args_gen(parser, (node))

Definition at line 383 of file ripper.y.

#define ripper_flush (   p)    (void)(p)
#define ruby__end__seen   (parser->parser_ruby__end__seen)

Definition at line 308 of file ripper.y.

#define ruby_coverage   (parser->coverage)

Definition at line 318 of file ripper.y.

#define ruby_debug_lines   (parser->debug_lines)

Definition at line 317 of file ripper.y.

#define ruby_eval_tree   (parser->parser_eval_tree)

Definition at line 315 of file ripper.y.

#define ruby_eval_tree_begin   (parser->parser_eval_tree_begin)

Definition at line 316 of file ripper.y.

#define ruby_sourcefile   (parser->parser_ruby_sourcefile)

Definition at line 310 of file ripper.y.

#define ruby_sourceline   (parser->parser_ruby_sourceline)

Definition at line 309 of file ripper.y.

#define set_yylval_id (   x)    (yylval.id = (x))
#define set_yylval_literal (   x)    (yylval.node = NEW_LIT(x))
#define set_yylval_name (   x)    (yylval.id = (x))
#define set_yylval_node (   x)    (yylval.node = (x))
#define set_yylval_num (   x)    (yylval.num = (x))
#define set_yylval_str (   x)    (yylval.node = NEW_STR(x))
#define shadowing_lvar (   name)    shadowing_lvar_gen(parser, (name))

Definition at line 439 of file ripper.y.

#define SIGN_EXTEND (   x,
 
)    (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))

Definition at line 482 of file ripper.y.

#define SIGN_EXTEND_CHAR (   c)    ((((unsigned char)(c)) ^ 128) - 128)
#define SPECIAL_PUNCT (   idx)
Value:
( \
BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
BIT('0', idx))
#define BIT(c, idx)
#define str_copy (   _s,
  _p,
  _n 
)
Value:
((_s) \
? (void)(rb_str_resize((_s), (_n)), \
MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
: (void)((_s) = STR_NEW((_p), (_n))))
#define RSTRING_PTR(string)
Definition: generator.h:42
#define MEMCPY(p1, p2, type, n)
Definition: ruby.h:1053
VALUE rb_str_resize(VALUE, long)
Definition: string.c:1779
#define STR_NEW(p, n)
Definition: ripper.y:271
#define STR_FUNC_ESCAPE   0x01
#define STR_FUNC_EXPAND   0x02
#define STR_FUNC_INDENT   0x20
#define STR_FUNC_QWORDS   0x08
#define STR_FUNC_REGEXP   0x04
#define STR_FUNC_SYMBOL   0x10
#define STR_NEW (   p,
 
)    rb_enc_str_new((p),(n),parser->enc)

Definition at line 271 of file ripper.y.

#define STR_NEW0 ( )    rb_enc_str_new(0,0,parser->enc)

Definition at line 272 of file ripper.y.

#define STR_NEW2 (   p)    rb_enc_str_new((p),strlen(p),parser->enc)

Definition at line 273 of file ripper.y.

#define STR_NEW3 (   p,
  n,
  e,
  func 
)    parser_str_new((p),(n),(e),(func),parser->enc)

Definition at line 274 of file ripper.y.

#define subnodes (   n1,
  n2 
)
Value:
((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
(!node->n2) ? (body = &node->n1, 1) : \
(reduce_nodes(&node->n1), body = &node->n2, 1))
#define reduce_nodes(n)
Definition: ripper.y:350
#define tok ( )    tokenbuf
#define tok_hex (   numlen)    parser_tok_hex(parser, (numlen))
#define TOK_INTERN (   mb)    rb_intern3(tok(), toklen(), parser->enc)

Definition at line 276 of file ripper.y.

#define tokadd (   c)    parser_tokadd(parser, (c))
#define tokadd_escape (   e)    parser_tokadd_escape(parser, (e))
#define tokadd_mbchar (   c)    parser_tokadd_mbchar(parser, (c))
#define tokadd_string (   f,
  t,
  p,
  n,
 
)    parser_tokadd_string(parser,(f),(t),(p),(n),(e))
#define tokaddmbc (   c,
  enc 
)    parser_tokaddmbc(parser, (c), (enc))
#define tokcopy (   n)    memcpy(tokspace(n), lex_p - (n), (n))
#define token_info_pop (   token)    (RTEST(ruby_verbose) ? token_info_pop(parser, (token)) : (void)0)

Definition at line 609 of file ripper.y.

#define token_info_push (   token)    (RTEST(ruby_verbose) ? token_info_push(parser, (token)) : (void)0)

Definition at line 608 of file ripper.y.

#define tokenbuf   (parser->parser_tokenbuf)

Definition at line 293 of file ripper.y.

#define tokfix ( )    (tokenbuf[tokidx]='\0')
#define tokidx   (parser->parser_tokidx)

Definition at line 294 of file ripper.y.

#define toklast ( )    (tokidx>0?tokenbuf[tokidx-1]:0)
#define toklen ( )    tokidx
#define toksiz   (parser->parser_toksiz)

Definition at line 295 of file ripper.y.

#define tokspace (   n)    parser_tokspace(parser, (n))
#define UTF8_ENC ( )
Value:
(parser->utf8 ? parser->utf8 : \
(parser->utf8 = rb_utf8_encoding()))
rb_encoding * rb_utf8_encoding(void)
Definition: encoding.c:1125

Definition at line 269 of file ripper.y.

#define value_expr (   node)    value_expr_gen(parser, (node) = remove_begin(node))

Definition at line 344 of file ripper.y.

#define void_expr (   node)    void_expr0((node) = remove_begin(node))

Definition at line 346 of file ripper.y.

#define void_expr0 (   node)    void_expr_gen(parser, (node))

Definition at line 345 of file ripper.y.

#define void_stmts (   node)    void_stmts_gen(parser, (node))

Definition at line 348 of file ripper.y.

#define VTBL_DEBUG   0

Definition at line 124 of file ripper.y.

Referenced by vtable_add(), vtable_alloc(), and vtable_free().

#define warn_balanced (   op,
  syn 
)
Value:
((void) \
(last_state != EXPR_CLASS && last_state != EXPR_DOT && \
last_state != EXPR_FNAME && last_state != EXPR_ENDFN && \
last_state != EXPR_ENDARG && \
space_seen && !ISSPACE(c) && \
(ambiguous_operator(op, syn), 0)))
#define ambiguous_operator(op, syn)
#define ISSPACE(c)
Definition: ruby.h:1453
#define was_bol ( )    (lex_p == lex_pbeg + 1)
#define whole_match_p (   e,
  l,
  i 
)    parser_whole_match_p(parser,(e),(l),(i))
#define YYCALLOC (   nelem,
  size 
)    rb_parser_calloc(parser, (nelem), (size))
#define YYDEBUG   1
#define yydebug   (parser->parser_yydebug)

Definition at line 312 of file ripper.y.

#define yyerror (   msg)    parser_yyerror(parser, (msg))

Definition at line 279 of file ripper.y.

#define YYERROR_VERBOSE   1
#define YYFREE (   ptr)    rb_parser_free(parser, (ptr))
#define yylval   (*((YYSTYPE*)(parser->parser_yylval)))
#define yylval_id ( )    (yylval.id)
#define YYMALLOC (   size)    rb_parser_malloc(parser, (size))
#define yyparse   ruby_yyparse

Definition at line 328 of file ripper.y.

#define YYREALLOC (   ptr,
  size 
)    rb_parser_realloc(parser, (ptr), (size))
#define YYSTACK_USE_ALLOCA   0

Typedef Documentation

typedef VALUE stack_type

Definition at line 76 of file ripper.y.

typedef struct token_info token_info

Enumeration Type Documentation

Enumerator
EXPR_BEG 
EXPR_END 
EXPR_ENDARG 
EXPR_ENDFN 
EXPR_ARG 
EXPR_CMDARG 
EXPR_MID 
EXPR_FNAME 
EXPR_DOT 
EXPR_CLASS 
EXPR_VALUE 
EXPR_MAX_STATE 
EXPR_BEG 
EXPR_END 
EXPR_ENDARG 
EXPR_ENDFN 
EXPR_ARG 
EXPR_CMDARG 
EXPR_MID 
EXPR_FNAME 
EXPR_DOT 
EXPR_CLASS 
EXPR_VALUE 
EXPR_MAX_STATE 
EXPR_BEG 
EXPR_END 
EXPR_ENDARG 
EXPR_ENDFN 
EXPR_ARG 
EXPR_CMDARG 
EXPR_MID 
EXPR_FNAME 
EXPR_DOT 
EXPR_CLASS 
EXPR_VALUE 
EXPR_MAX_STATE 
EXPR_BEG 
EXPR_END 
EXPR_ENDARG 
EXPR_ENDFN 
EXPR_ARG 
EXPR_CMDARG 
EXPR_MID 
EXPR_FNAME 
EXPR_DOT 
EXPR_CLASS 
EXPR_VALUE 
EXPR_MAX_STATE 

Definition at line 61 of file ripper.y.

Function Documentation

static NODE* arg_append_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static NODE* arg_blk_pass ( NODE ,
NODE  
)
static
static NODE* arg_concat_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static int arg_var_gen ( struct parser_params ,
ID   
)
static
static NODE* aryset_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static NODE* assignable_gen ( struct parser_params ,
ID  ,
NODE  
)
static
static NODE* attrset_gen ( struct parser_params ,
NODE ,
ID   
)
static
static NODE* block_append_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static void block_dup_check_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static NODE* call_bin_op_gen ( struct parser_params ,
NODE ,
ID  ,
NODE  
)
static
static NODE* call_uni_op_gen ( struct parser_params ,
NODE ,
ID   
)
static
static NODE* cond_gen ( struct parser_params ,
NODE  
)
static
stmts dispatch0 ( stmts_new  )

Referenced by arg_ambiguous_gen(), and yyparse().

stmts dispatch0 ( void_stmt  )
static int dvar_curr_gen ( struct parser_params ,
ID   
)
static
static int dvar_defined_gen ( struct parser_params ,
ID  ,
int   
)
static
static int dyna_in_block_gen ( struct parser_params )
static
dyna_pop (   $< vars >)
static void dyna_pop_gen ( struct parser_params ,
const struct vtable  
)
static
static const struct vtable* dyna_push_gen ( struct parser_params )
static
bodystmt escape_Qundef (   $1)

Referenced by yyparse().

static NODE* evstr2dstr_gen ( struct parser_params ,
NODE  
)
static
static void fixpos ( NODE ,
NODE  
)
static
static void fixup_nodes ( NODE **  )
static
static ID formal_argument_gen ( struct parser_params ,
ID   
)
static
static NODE* gettable_gen ( struct parser_params ,
ID   
)
static
static ID internal_id_gen ( struct parser_params )
static
static NODE* list_append_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static NODE* list_concat_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static int literal_concat0 ( struct parser_params ,
VALUE  ,
VALUE   
)
static
static NODE* literal_concat_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static int local_id_gen ( struct parser_params ,
ID   
)
static
static void local_pop_gen ( struct parser_params )
static
static void local_push_gen ( struct parser_params ,
int   
)
static
static ID* local_tbl_gen ( struct parser_params )
static
static int local_var_gen ( struct parser_params ,
ID   
)
static
static NODE* logop_gen ( struct parser_params ,
enum  node_type,
NODE ,
NODE  
)
static
static int lvar_defined_gen ( struct parser_params ,
ID   
)
static
static NODE* match_op_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static NODE* negate_lit ( NODE )
static
static NODE* new_args_gen ( struct parser_params ,
NODE ,
NODE ,
ID  ,
NODE ,
ID   
)
static
static void new_bv_gen ( struct parser_params ,
ID   
)
static
static NODE* new_evstr_gen ( struct parser_params ,
NODE  
)
static
static NODE* new_yield_gen ( struct parser_params ,
NODE  
)
static
static NODE* newline_node ( NODE )
static
static NODE* node_assign_gen ( struct parser_params ,
NODE ,
NODE  
)
static
static NODE* node_newnode ( struct parser_params ,
enum  node_type,
VALUE  ,
VALUE  ,
VALUE   
)
static
static int parser_yyerror ( struct parser_params ,
const char *   
)
static
static void rb_backref_error_gen ( struct parser_params ,
NODE  
)
static
static void reduce_nodes_gen ( struct parser_params ,
NODE **   
)
static
static VALUE reg_compile_gen ( struct parser_params ,
VALUE  ,
int   
)
static
static int reg_fragment_check_gen ( struct parser_params ,
VALUE  ,
int   
)
static
static void reg_fragment_setenc_gen ( struct parser_params ,
VALUE  ,
int   
)
static
static NODE* reg_named_capture_assign_gen ( struct parser_params parser,
VALUE  regexp,
NODE match 
)
static
static NODE* remove_begin ( NODE )
static
static NODE* ret_args_gen ( struct parser_params ,
NODE  
)
static
block_command ripper_id2sym ( '.'  )

Referenced by yyparse().

expr ripper_intern ( "and"  )

Referenced by yyparse().

static ID shadowing_lvar_gen ( struct parser_params ,
ID   
)
static
static NODE* splat_array ( NODE )
static
static void token_info_pop ( struct parser_params ,
const char *  token 
)
static
static void token_info_push ( struct parser_params ,
const char *  token 
)
static
static int value_expr_gen ( struct parser_params ,
NODE  
)
static
static void void_expr_gen ( struct parser_params ,
NODE  
)
static
static void void_stmts_gen ( struct parser_params ,
NODE  
)
static
static void vtable_add ( struct vtable tbl,
ID  id 
)
static

Definition at line 151 of file ripper.y.

References vtable::capa, id, POINTER_P, vtable::pos, rb_bug(), rb_id2name(), REALLOC_N, vtable::tbl, and VTBL_DEBUG.

static struct vtable* vtable_alloc ( struct vtable prev)
static

Definition at line 127 of file ripper.y.

References ALLOC, ALLOC_N, vtable::capa, vtable::pos, vtable::prev, vtable::tbl, and VTBL_DEBUG.

static void vtable_free ( struct vtable tbl)
static

Definition at line 139 of file ripper.y.

References POINTER_P, vtable::tbl, VTBL_DEBUG, and xfree().

static int vtable_included ( const struct vtable tbl,
ID  id 
)
static

Definition at line 166 of file ripper.y.

References i, POINTER_P, vtable::pos, and vtable::tbl.

static int vtable_size ( const struct vtable tbl)
static

Definition at line 114 of file ripper.y.

References POINTER_P, and vtable::pos.

static int yylex ( void *  )
static

Variable Documentation

top_compstmt __pad0__

Definition at line 824 of file ripper.y.

command_call __pad10__

Definition at line 1299 of file ripper.y.

block_command __pad11__

Definition at line 1311 of file ripper.y.

cmd_brace_block __pad12__ = method_arg($$, $4)

Definition at line 1321 of file ripper.y.

command __pad13__

Definition at line 1346 of file ripper.y.

mlhs __pad14__

Definition at line 1453 of file ripper.y.

mlhs_item __pad15__ = mlhs_add($$, $3)

Definition at line 1558 of file ripper.y.

mlhs_node __pad16__

Definition at line 1608 of file ripper.y.

top_stmts __pad1__

Definition at line 826 of file ripper.y.

top_stmt __pad2__

Definition at line 857 of file ripper.y.

bodystmt __pad3__
Initial value:
{' top_compstmt '}'
{
$$ = dispatch1(BEGIN, $4);
}

Definition at line 870 of file ripper.y.

compstmt __pad4__

Definition at line 915 of file ripper.y.

stmts __pad5__

Definition at line 926 of file ripper.y.

stmt __pad6__

Definition at line 957 of file ripper.y.

command_asgn __pad7__

Definition at line 1238 of file ripper.y.

expr __pad8__

Definition at line 1259 of file ripper.y.

expr_value __pad9__

Definition at line 1296 of file ripper.y.

arg

Definition at line 1287 of file ripper.y.

Referenced by apply2files(), call_asynchronous(), chown_internal(), connect_blocking(), detach_process_watcher(), econv_set_replacement(), enc_names_i(), enum_grep(), EVENTSINK_Invoke(), exc_initialize(), exec_recursive(), fcntl(), glob_brace(), grep_i(), grep_iter_i(), gzfile_wrap(), Init_bigdecimal(), init_ext_call(), init_golf(), inspect_enumerator(), io_flush_buffer_sync(), ip_ruby_cmd(), ip_ruby_eval(), iterate_method(), mark_const_entry_i(), mark_entry(), mark_key(), mark_keyvalue(), mark_method_entry_i(), marshal_dump(), marshal_load(), match_inspect_name_iter(), mktime_do(), mktime_r(), new_wrap(), nogvl_getaddrinfo(), nogvl_getnameinfo(), nogvl_ioctl(), nucomp_s_polar(), obj_ivar_each(), onig_foreach_name(), onig_scan_env_set_error_string(), onigenc_apply_all_case_fold_with_map(), onigenc_ascii_apply_all_case_fold(), onigenc_unicode_apply_all_case_fold(), ossl_asn1_decode0(), ossl_dh_initialize(), ossl_dsa_initialize(), ossl_pkcs12_initialize(), ossl_pkcs7_initialize(), ossl_rsa_initialize(), ossl_sslctx_set_session_cache_mode(), ossl_sslctx_set_session_cache_size(), ossl_x509_initialize(), ossl_x509crl_initialize(), ossl_x509name_initialize(), ossl_x509req_initialize(), path_initialize(), print_backtrace(), proc_options(), range_each_func(), rb_ary_aref(), rb_dlcfunc_call(), rb_f_integer(), rb_glob2(), rb_hash_update_func_i(), rb_io_ioctl(), rb_reg_s_union(), rb_str_format(), rb_syserr_new(), rb_vm_call_cfunc(), rb_w32_open(), rb_w32_uopen(), rb_w32_wopen(), rb_waitpid_blocking(), recursive_join(), recvfrom_blocking(), reg_named_capture_assign_gen(), reg_named_capture_assign_iter(), rsock_send_blocking(), rsock_sendto_blocking(), ruby_brace_expand(), ruby_brace_glob0(), ruby_each_words(), ruby_set_argv(), search_convpath_i(), set_rawmode(), set_unblock_function(), setup_narg(), st_foreach(), step_i(), strio_first(), sym_step_i(), thread_suppress_tracing(), time_init_1(), trans_open_i(), udp_init(), utime_internal(), vm_backtrace_alloc(), vm_backtrace_each(), vm_backtrace_push(), vm_yield_with_cfunc(), w_object(), w_symbol(), wgetch_func(), and wgetstr_func().

keyword_next call_args
Initial value:
{
$$ = dispatch1(return, $2)

Definition at line 1430 of file ripper.y.

primary_value tCOLON2 operation2 command_args cmd_brace_block
Initial value:
{
$$ = dispatch2(command, $1, $2)

Definition at line 1358 of file ripper.y.

keyword_yield command_args
Initial value:
{
$$ = dispatch3(call, $1, ripper_intern("::"), $3)
expr ripper_intern("and")

Definition at line 1316 of file ripper.y.

command_call
Initial value:
{
$$ = dispatch2(unary, ripper_id2sym('!'), $2)
block_command ripper_id2sym('.')

Definition at line 1279 of file ripper.y.

Referenced by yyparse().

opt_block_param compstmt
Initial value:
{
$$ = dispatch2(brace_block, escape_Qundef($3), $4)
bodystmt escape_Qundef($1)

Definition at line 1337 of file ripper.y.

keyword_not opt_nl expr
Initial value:
{
$$ = dispatch3(binary, $1, ripper_intern("or"), $3)
expr ripper_intern("and")

Definition at line 1263 of file ripper.y.

Referenced by rb_str_format().

stmt modifier_while expr_value
Initial value:
{
$$ = dispatch2(if_mod, $3, $1)

Definition at line 1005 of file ripper.y.

fitem
Initial value:
{
$$ = dispatch2(alias, $2, $4)
const char * alias
Definition: nkf.c:1127

Definition at line 960 of file ripper.y.

keyword_END

Definition at line 1057 of file ripper.y.

mlhs_node keyword_variable
Initial value:
{
$$ = assignable($1, 0)
#define assignable(id, node)
Definition: ripper.y:391

Definition at line 1615 of file ripper.y.

command_asgn lhs
Initial value:
=' command_asgn
{
$$ = dispatch2(assign, $1, $3);
}

Definition at line 1241 of file ripper.y.

Referenced by formal_argument_gen(), and node_assign_gen().

mlhs mlhs_basic

Definition at line 1453 of file ripper.y.

mlhs_item mlhs_head

Definition at line 1558 of file ripper.y.

mlhs mlhs_inner

Definition at line 1453 of file ripper.y.

mlhs_head mlhs_head mlhs_item
Initial value:
{
$$ = mlhs_add($1, $2)

Definition at line 1486 of file ripper.y.

tSTAR mlhs_node
Initial value:
{
$$ = mlhs_add_star($1, $3)

Definition at line 1494 of file ripper.y.

mlhs_head mlhs_head mlhs_post
Initial value:
{
$1 = mlhs_add_star($1, $3)

Definition at line 1502 of file ripper.y.

pure parser lex param
error stmt
Initial value:
{
$$ = dispatch2(stmts_add, dispatch0(stmts_new), $1)
top_stmts dispatch0(stmts_new)

Definition at line 938 of file ripper.y.

keyword_alias tGVAR tBACK_REF
Initial value:
{
$$ = dispatch2(var_alias, $2, $3)

Definition at line 976 of file ripper.y.

keyword_alias tGVAR tGVAR
Initial value:
{
$$ = dispatch2(var_alias, $2, $3)

Definition at line 968 of file ripper.y.

primary_value tCOLON2 operation2 command_args prec tLOWEST
Initial value:
{
$$ = dispatch4(command_call, $1, ripper_id2sym('.'), $3, $4)
block_command ripper_id2sym('.')
command_call
Definition: ripper.y:1279

Definition at line 1370 of file ripper.y.

keyword_alias tGVAR tNTH_REF
Initial value:
{
$$ = dispatch2(var_alias, $2, $3)

Definition at line 987 of file ripper.y.

error top_stmt
Initial value:
{
$$ = dispatch2(stmts_add, dispatch0(stmts_new), $1)
top_stmts dispatch0(stmts_new)

Definition at line 838 of file ripper.y.

tSTAR
Initial value:
{
$$ = mlhs_add_star($1, Qnil)
#define Qnil
Definition: ruby.h:367

Definition at line 1511 of file ripper.y.

keyword_undef undef_list
Initial value:
{
$$ = dispatch1(undef, $2)

Definition at line 997 of file ripper.y.