parse.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 "probes.h"
#include "id.c"
#include "ruby/regex.h"
#include "ruby/util.h"
#include "lex.c"

Go to the source code of this file.

Data Structures

struct  magic_comment
struct  reg_named_capture_assign_t
struct  symbols

Defines

#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_OP_ID)
#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 id_type(id)   (is_notop_id(id) ? (int)((id)&ID_SCOPE_MASK) : -1)
#define is_asgn_or_id(id)
#define DEF_EXPR(n)   EXPR_##n = (1 << EXPR_##n##_bit)
#define IS_lex_state_for(x, ls)   ((x) & (ls))
#define IS_lex_state(ls)   IS_lex_state_for(lex_state, (ls))
#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 STR_NEW(p, n)   rb_enc_str_new((p),(n),current_enc)
#define STR_NEW0()   rb_enc_str_new(0,0,current_enc)
#define STR_NEW2(p)   rb_enc_str_new((p),strlen(p),current_enc)
#define STR_NEW3(p, n, e, func)   parser_str_new((p),(n),(e),(func),current_enc)
#define ENC_SINGLE(cr)   ((cr)==ENC_CODERANGE_7BIT)
#define TOK_INTERN(mb)   rb_intern3(tok(), toklen(), current_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 brace_nest   (parser->parser_brace_nest)
#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 tokline   (parser->parser_tokline)
#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 ruby_sourcefile_string   (parser->parser_ruby_sourcefile_string)
#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, t)   new_args_gen(parser, (f),(o),(r),(p),(t))
#define new_args_tail(k, kr, b)   new_args_tail_gen(parser, (k),(kr),(b))
#define ret_args(node)   ret_args_gen(parser, (node))
#define new_yield(node)   new_yield_gen(parser, (node))
#define dsym_node(node)   dsym_node_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 new_attr_op_assign(lhs, type, attr, op, rhs)   new_attr_op_assign_gen(parser, (lhs), (attr), (op), (rhs))
#define new_const_op_assign(lhs, op, rhs)   new_const_op_assign_gen(parser, (lhs), (op), (rhs))
#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 new_op_assign(lhs, op, rhs)   new_op_assign_gen(parser, (lhs), (op), (rhs))
#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
#define NODE_HEREDOC   NODE_ARRAY
#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 Qnone   0
#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_warn4S(file, line, fmt, a)   rb_compile_warn((file), (line), (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()   (current_enc->name)
#define parser_mbclen()   mbclen((lex_p-1),lex_pend,current_enc)
#define parser_precise_mbclen()   rb_enc_precise_mbclen((lex_p-1),lex_pend,current_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,current_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()   IS_lex_state(EXPR_ARG_ANY)
#define IS_END()   IS_lex_state(EXPR_END_ANY)
#define IS_BEG()   IS_lex_state(EXPR_BEG_ANY)
#define IS_SPCARG(c)   (IS_ARG() && space_seen && !ISSPACE(c))
#define IS_LABEL_POSSIBLE()   ((IS_lex_state(EXPR_BEG | EXPR_ENDFN) && !cmd_state) || IS_ARG())
#define IS_LABEL_SUFFIX(n)   (peek_n(':',(n)) && !peek_n(':', (n)+1))
#define IS_AFTER_OPERATOR()   IS_lex_state(EXPR_FNAME | EXPR_DOT)
#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   ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
#define subnodes(n1, n2)
#define op_tbl_count   numberof(op_tbl)
#define IDSET_ATTRSET_FOR_SYNTAX   ((1U<<ID_LOCAL)|(1U<<ID_CONST))
#define IDSET_ATTRSET_FOR_INTERN   (~(~0U<<(1<<ID_SCOPE_SHIFT)) & ~(1U<<ID_ATTRSET))
#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 long(* rb_magic_comment_length_t )(struct parser_params *parser, const char *name, long len)
typedef void(* rb_magic_comment_setter_t )(struct parser_params *parser, const char *name, const char *val)

Enumerations

enum  string_type {
  str_squote = (0), str_dquote = (STR_FUNC_EXPAND), str_xquote = (STR_FUNC_EXPAND), str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
  str_sword = (STR_FUNC_QWORDS), str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND), str_ssym = (STR_FUNC_SYMBOL), str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND),
  str_squote = (0), str_dquote = (STR_FUNC_EXPAND), str_xquote = (STR_FUNC_EXPAND), str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
  str_sword = (STR_FUNC_QWORDS), str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND), str_ssym = (STR_FUNC_SYMBOL), str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND),
  str_squote = (0), str_dquote = (STR_FUNC_EXPAND), str_xquote = (STR_FUNC_EXPAND), str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
  str_sword = (STR_FUNC_QWORDS), str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND), str_ssym = (STR_FUNC_SYMBOL), str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND),
  str_squote = (0), str_dquote = (STR_FUNC_EXPAND), str_xquote = (STR_FUNC_EXPAND), str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
  str_sword = (STR_FUNC_QWORDS), str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND), str_ssym = (STR_FUNC_SYMBOL), str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
}

Functions

 if ($2)
 fixpos ($$, $1) = $2
 if (!$$)$$ = NEW_BEGIN(0)
fcall nd_set_line ($$, tokline)
 CMDARG_PUSH (1)
opt_rescue NEW_ERRINFO ())
 fixpos ($$, $2?$2:$5)
 if (!node)
else switch (nd_type(node))
 arg_var (shadowing_lvar(get_id($2)))
else if (!dyna_in_block()&&local_id($2)) yyerror("duplicated block argument name")
static int parser_regx_options (struct parser_params *)
static int parser_tokadd_string (struct parser_params *, int, int, int, long *, rb_encoding **)
static void parser_tokaddmbc (struct parser_params *parser, int c, rb_encoding *enc)
static int parser_parse_string (struct parser_params *, NODE *)
static int parser_here_document (struct parser_params *, NODE *)
static int token_info_get_column (struct parser_params *parser, const char *token)
static int token_info_has_nonspaces (struct parser_params *parser, const char *token)
static void token_info_push (struct parser_params *parser, const char *token)
static void token_info_pop (struct parser_params *parser, const char *token)
static int parser_yyerror (struct parser_params *parser, const char *msg)
static void parser_prepare (struct parser_params *parser)
static VALUE debug_lines (VALUE fname)
static VALUE coverage (VALUE fname, int n)
static int e_option_supplied (struct parser_params *parser)
static VALUE yycompile0 (VALUE arg)
static NODE * yycompile (struct parser_params *parser, VALUE fname, int line)
static rb_encoding * must_be_ascii_compatible (VALUE s)
static VALUE lex_get_str (struct parser_params *parser, VALUE s)
static VALUE lex_getline (struct parser_params *parser)
static NODE * parser_compile_string (volatile VALUE vparser, VALUE fname, VALUE s, int line)
NODE * rb_compile_string (const char *f, VALUE s, int line)
NODE * rb_parser_compile_string (volatile VALUE vparser, const char *f, VALUE s, int line)
NODE * rb_parser_compile_string_path (volatile VALUE vparser, VALUE f, VALUE s, int line)
NODE * rb_compile_cstr (const char *f, const char *s, int len, int line)
NODE * rb_parser_compile_cstr (volatile VALUE vparser, const char *f, const char *s, int len, int line)
static VALUE lex_io_gets (struct parser_params *parser, VALUE io)
NODE * rb_compile_file (const char *f, VALUE file, int start)
NODE * rb_parser_compile_file (volatile VALUE vparser, const char *f, VALUE file, int start)
NODE * rb_parser_compile_file_path (volatile VALUE vparser, VALUE fname, VALUE file, int start)
static VALUE parser_str_new (const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
static int parser_nextc (struct parser_params *parser)
static void parser_pushback (struct parser_params *parser, int c)
static char * parser_newtok (struct parser_params *parser)
static char * parser_tokspace (struct parser_params *parser, int n)
static void parser_tokadd (struct parser_params *parser, int c)
static int parser_tok_hex (struct parser_params *parser, size_t *numlen)
static int parser_tokadd_utf8 (struct parser_params *parser, rb_encoding **encp, int string_literal, int symbol_literal, int regexp_literal)
static int parser_read_escape (struct parser_params *parser, int flags, rb_encoding **encp)
static int parser_tokadd_escape (struct parser_params *parser, rb_encoding **encp)
static void dispose_string (VALUE str)
static int parser_tokadd_mbchar (struct parser_params *parser, int c)
static int simple_re_meta (int c)
static int is_global_name_punct (const char c)
static int parser_peek_variable_name (struct parser_params *parser)
static int parser_heredoc_identifier (struct parser_params *parser)
static void parser_heredoc_restore (struct parser_params *parser, NODE *here)
static int parser_whole_match_p (struct parser_params *parser, const char *eos, long len, int indent)
static void arg_ambiguous_gen (struct parser_params *parser)
static ID formal_argument_gen (struct parser_params *parser, ID lhs)
static int lvar_defined_gen (struct parser_params *parser, ID id)
static long parser_encode_length (struct parser_params *parser, const char *name, long len)
static void parser_set_encode (struct parser_params *parser, const char *name)
static int comment_at_top (struct parser_params *parser)
static void magic_comment_encoding (struct parser_params *parser, const char *name, const char *val)
static void parser_set_token_info (struct parser_params *parser, const char *name, const char *val)
static const char * magic_comment_marker (const char *str, long len)
static int parser_magic_comment (struct parser_params *parser, const char *str, long len)
static void set_file_encoding (struct parser_params *parser, const char *str, const char *send)
static int parser_yylex (struct parser_params *parser)
static int yylex (void *lval, void *p)
static NODE * node_newnode (struct parser_params *parser, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
static enum node_type nodetype (NODE *node)
static int nodeline (NODE *node)
static NODE * newline_node (NODE *node)
static void fixpos (NODE *node, NODE *orig)
static void parser_warning (struct parser_params *parser, NODE *node, const char *mesg)
static void parser_warn (struct parser_params *parser, NODE *node, const char *mesg)
static NODE * block_append_gen (struct parser_params *parser, NODE *head, NODE *tail)
static NODE * list_append_gen (struct parser_params *parser, NODE *list, NODE *item)
static NODE * list_concat_gen (struct parser_params *parser, NODE *head, NODE *tail)
static int literal_concat0 (struct parser_params *parser, VALUE head, VALUE tail)
static NODE * literal_concat_gen (struct parser_params *parser, NODE *head, NODE *tail)
static NODE * evstr2dstr_gen (struct parser_params *parser, NODE *node)
static NODE * new_evstr_gen (struct parser_params *parser, NODE *node)
static NODE * call_bin_op_gen (struct parser_params *parser, NODE *recv, ID id, NODE *arg1)
static NODE * call_uni_op_gen (struct parser_params *parser, NODE *recv, ID id)
static NODE * match_op_gen (struct parser_params *parser, NODE *node1, NODE *node2)
static NODE * gettable_gen (struct parser_params *parser, ID id)
static NODE * assignable_gen (struct parser_params *parser, ID id, NODE *val)
static int is_private_local_id (ID name)
static ID shadowing_lvar_gen (struct parser_params *parser, ID name)
static void new_bv_gen (struct parser_params *parser, ID name)
static NODE * aryset_gen (struct parser_params *parser, NODE *recv, NODE *idx)
static void block_dup_check_gen (struct parser_params *parser, NODE *node1, NODE *node2)
ID rb_id_attrset (ID id)
static NODE * attrset_gen (struct parser_params *parser, NODE *recv, ID id)
static void rb_backref_error_gen (struct parser_params *parser, NODE *node)
static NODE * arg_concat_gen (struct parser_params *parser, NODE *node1, NODE *node2)
static NODE * arg_append_gen (struct parser_params *parser, NODE *node1, NODE *node2)
static NODE * splat_array (NODE *node)
static NODE * node_assign_gen (struct parser_params *parser, NODE *lhs, NODE *rhs)
static int value_expr_gen (struct parser_params *parser, NODE *node)
static void void_expr_gen (struct parser_params *parser, NODE *node)
static void void_stmts_gen (struct parser_params *parser, NODE *node)
static NODE * remove_begin (NODE *node)
static void reduce_nodes_gen (struct parser_params *parser, NODE **body)
static int is_static_content (NODE *node)
static int assign_in_cond (struct parser_params *parser, NODE *node)
static void warn_unless_e_option (struct parser_params *parser, NODE *node, const char *str)
static void warning_unless_e_option (struct parser_params *parser, NODE *node, const char *str)
static void fixup_nodes (NODE **rootnode)
static NODE * cond0 (struct parser_params *, NODE *)
static NODE * range_op (struct parser_params *parser, NODE *node)
static int literal_node (NODE *node)
static NODE * cond_gen (struct parser_params *parser, NODE *node)
static NODE * logop_gen (struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
static void no_blockarg (struct parser_params *parser, NODE *node)
static NODE * ret_args_gen (struct parser_params *parser, NODE *node)
static NODE * new_yield_gen (struct parser_params *parser, NODE *node)
static NODE * negate_lit (NODE *node)
static NODE * arg_blk_pass (NODE *node1, NODE *node2)
static NODE * new_args_gen (struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, NODE *tail)
static NODE * new_args_tail_gen (struct parser_params *parser, NODE *k, ID kr, ID b)
static NODE * dsym_node_gen (struct parser_params *parser, NODE *node)
static NODE * new_op_assign_gen (struct parser_params *parser, NODE *lhs, ID op, NODE *rhs)
static NODE * new_attr_op_assign_gen (struct parser_params *parser, NODE *lhs, ID attr, ID op, NODE *rhs)
static NODE * new_const_op_assign_gen (struct parser_params *parser, NODE *lhs, ID op, NODE *rhs)
static void warn_unused_var (struct parser_params *parser, struct local_vars *local)
static void local_push_gen (struct parser_params *parser, int inherit_dvars)
static void local_pop_gen (struct parser_params *parser)
static ID * local_tbl_gen (struct parser_params *parser)
static int arg_var_gen (struct parser_params *parser, ID id)
static int local_var_gen (struct parser_params *parser, ID id)
static int local_id_gen (struct parser_params *parser, ID id)
static struct vtabledyna_push_gen (struct parser_params *parser)
static void dyna_pop_1 (struct parser_params *parser)
static void dyna_pop_gen (struct parser_params *parser, const struct vtable *lvargs)
static int dyna_in_block_gen (struct parser_params *parser)
static int dvar_defined_gen (struct parser_params *parser, ID id, int get)
static int dvar_curr_gen (struct parser_params *parser, ID id)
static void reg_fragment_setenc_gen (struct parser_params *parser, VALUE str, int options)
static int reg_fragment_check_gen (struct parser_params *parser, VALUE str, int options)
static int reg_named_capture_assign_iter (const OnigUChar *name, const OnigUChar *name_end, int back_num, int *back_refs, OnigRegex regex, void *arg0)
static NODE * reg_named_capture_assign_gen (struct parser_params *parser, VALUE regexp, NODE *match)
static VALUE reg_compile_gen (struct parser_params *parser, VALUE str, int options)
void rb_gc_mark_parser (void)
NODE * rb_parser_append_print (VALUE vparser, NODE *node)
NODE * rb_parser_while_loop (VALUE vparser, NODE *node, int chop, int split)
void Init_sym (void)
void rb_gc_mark_symbols (void)
static ID internal_id_gen (struct parser_params *parser)
static int is_special_global_name (const char *m, const char *e, rb_encoding *enc)
int rb_symname_p (const char *name)
int rb_enc_symname_p (const char *name, rb_encoding *enc)
static int rb_enc_symname_type (const char *name, long len, rb_encoding *enc, unsigned int allowed_atttset)
int rb_enc_symname2_p (const char *name, long len, rb_encoding *enc)
static int rb_str_symname_type (VALUE name, unsigned int allowed_atttset)
static ID register_symid (ID id, const char *name, long len, rb_encoding *enc)
static ID register_symid_str (ID id, VALUE str)
static int sym_check_asciionly (VALUE str)
static ID intern_str (VALUE str)
ID rb_intern3 (const char *name, long len, rb_encoding *enc)
ID rb_intern2 (const char *name, long len)
ID rb_intern (const char *name)
ID rb_intern_str (VALUE str)
VALUE rb_id2str (ID id)
const char * rb_id2name (ID id)
static int symbols_i (VALUE sym, ID value, VALUE ary)
VALUE rb_sym_all_symbols (void)
int rb_is_const_id (ID id)
int rb_is_class_id (ID id)
int rb_is_global_id (ID id)
int rb_is_instance_id (ID id)
int rb_is_attrset_id (ID id)
int rb_is_local_id (ID id)
int rb_is_junk_id (ID id)
ID rb_check_id (volatile VALUE *namep)
 Returns ID for the given name if it is interned already, or 0.
ID rb_check_id_cstr (const char *ptr, long len, rb_encoding *enc)
int rb_is_const_name (VALUE name)
int rb_is_class_name (VALUE name)
int rb_is_global_name (VALUE name)
int rb_is_instance_name (VALUE name)
int rb_is_attrset_name (VALUE name)
int rb_is_local_name (VALUE name)
int rb_is_method_name (VALUE name)
int rb_is_junk_name (VALUE name)
static void parser_initialize (struct parser_params *parser)
static void parser_mark (void *ptr)
static void parser_free (void *ptr)
static size_t parser_memsize (const void *ptr)
struct kwtablerb_reserved_word (const char *str, unsigned int len)
static struct parser_paramsparser_new (void)
VALUE rb_parser_new (void)
VALUE rb_parser_end_seen_p (VALUE vparser)
VALUE rb_parser_encoding (VALUE vparser)
VALUE rb_parser_get_yydebug (VALUE self)
VALUE rb_parser_set_yydebug (VALUE self, VALUE flag)
void * rb_parser_malloc (struct parser_params *parser, size_t size)
void * rb_parser_calloc (struct parser_params *parser, size_t nelem, size_t size)
void * rb_parser_realloc (struct parser_params *parser, void *ptr, size_t size)
void rb_parser_free (struct parser_params *parser, void *ptr)

Variables

top_compstmt __pad0__
fixup_nodes & deferred_nodes
top_stmts __pad1__ = $1
top_stmt __pad2__
top_stmt bodystmt = NEW_BEGIN(0)
compstmt __pad3__
stmts __pad4__ = $1
stmt_or_begin __pad5__
command_asgn __pad6__
 lhs
expr __pad7__
expr_value __pad8__
command_call __pad9__
block_command __pad10__
block_command cmd_brace_block
fcall __pad11__ = ruby_sourceline
command __pad12__
 nd_args = $2
mlhs __pad13__
mlhs_inner __pad14__
mlhs_inner mlhs_basic
mlhs_item __pad15__
mlhs_head __pad16__
mlhs_post __pad17__
 mlhs_post
mlhs_node __pad18__
lhs __pad19__
cname __pad20__
 tCONSTANT
cpath __pad21__
fname __pad22__
fsym __pad23__ = $1
fitem __pad24__
 dsym
undef_list __pad25__
 undef_list
op __pad26__
reswords __pad27__
arg __pad28__
arg_value __pad29__
aref_args __pad30__
 args
paren_args __pad31__
opt_paren_args __pad32__
opt_call_args __pad33__
call_args __pad34__
command_args __pad35__ = NEW_LIST($1)
block_arg __pad36__
opt_block_arg __pad37__
args __pad38__
mrhs __pad39__
primary __pad40__
primary_value __pad41__
k_begin __pad42__
k_if __pad43__
k_unless __pad44__
k_while __pad45__
k_until __pad46__
k_case __pad47__
k_for __pad48__
k_class __pad49__
k_module __pad50__
k_def __pad51__
< num > k_end = ruby_sourceline
then __pad52__
do __pad53__
if_tail __pad54__
opt_else __pad55__
for_var __pad56__
f_marg __pad57__
f_marg_list __pad58__
 f_marg_list
f_margs __pad59__
block_args_tail __pad60__
opt_block_args_tail __pad61__
block_param __pad62__
block_param f_block_optarg
opt_block_param __pad63__
block_param_def __pad64__
opt_bv_decl __pad65__
 opt_nl
bv_decls __pad66__
bv_decls bvar
bvar __pad67__
lambda __pad68__
f_larglist __pad69__
lambda_body __pad70__
do_block __pad71__
block_call __pad72__ = ruby_sourceline
method_call __pad73__
brace_block __pad74__
case_body __pad75__ = ruby_sourceline
case_body cases
opt_rescue __pad76__
 none
exc_list __pad77__
exc_var __pad78__
opt_ensure __pad79__
literal __pad80__
strings __pad81__
string __pad82__
string string1
xstring __pad83__
regexp __pad84__
NODE * node = $2
NODE * list
NODE * prev
words __pad85__ = node
word_list __pad86__
word __pad87__
word symbols
symbol_list __pad88__
qwords __pad89__
qsymbols __pad90__
qword_list __pad91__
qsym_list __pad92__
string_contents __pad93__
xstring_contents __pad94__
regexp_contents __pad95__
string_content __pad96__
 lex_strterm = 0
 lex_state = EXPR_BEG
string_dvar __pad97__
symbol __pad98__
sym __pad99__ = $2
dsym __pad100__
numeric __pad101__ = dsym_node($2)
user_variable __pad102__
keyword_variable __pad103__
var_ref __pad104__
var_lhs __pad105__
backref __pad106__
superclass __pad107__
<'{lex_state=EXPR_BEG;command_start=TRUE;}expr_valueterm{$$=$3;}|errorterm{yyerrok;$$=0;};f_arglist:'('f_argsrparen{$$=$2;lex_state=EXPR_BEG;command_start=TRUE;}|f_argsterm{$$=$1;lex_state=EXPR_BEG;command_start=TRUE;};args_tail:f_kwarg','f_kwrestopt_f_block_arg{$$=new_args_tail($1,
$3, $4);}|f_kwargopt_f_block_arg{$$=new_args_tail($1,
Qnone,
$2);}|f_kwrestopt_f_block_arg{$$=new_args_tail(Qnone,
$1, $2);}|f_block_arg{$$=new_args_tail(Qnone,
Qnone, $1);};opt_args_tail:','args_tail{$$=$2;}|{$$=new_args_tail(Qnone,
Qnone, Qnone);};f_args:f_arg','f_optarg','f_rest_argopt_args_tail{$$=new_args($1,
$3, $5, Qnone, $6);}|f_arg','f_optarg','f_rest_arg','f_argopt_args_tail{$$=new_args($1,
$3, $5, $7, $8);}|f_arg','f_optargopt_args_tail{$$=new_args($1,
$3, Qnone, Qnone, $4);}|f_arg','f_optarg','f_argopt_args_tail{$$=new_args($1,
$3, Qnone, $5, $6);}|f_arg','f_rest_argopt_args_tail{$$=new_args($1,
Qnone, $3, Qnone, $4);}|f_arg','f_rest_arg','f_argopt_args_tail{$$=new_args($1,
Qnone,
$3, $5, $6);}|f_argopt_args_tail{$$=new_args($1,
Qnone, Qnone, Qnone,
$2);}|f_optarg','f_rest_argopt_args_tail{$$=new_args(Qnone,
$1, $3, Qnone, $4);}|f_optarg','f_rest_arg','f_argopt_args_tail{$$=new_args(Qnone,
$1, $3, $5, $6);}|f_optargopt_args_tail{$$=new_args(Qnone,
$1, Qnone, Qnone,
$2);}|f_optarg','f_argopt_args_tail{$$=new_args(Qnone,
$1, Qnone,
$3, $4);}|f_rest_argopt_args_tail{$$=new_args(Qnone,
Qnone, $1, Qnone,
$2);}|f_rest_arg','f_argopt_args_tail{$$=new_args(Qnone,
Qnone, $1, $3, $4);}|args_tail{$$=new_args(Qnone,
Qnone, Qnone, Qnone,
$1);}|{$$=new_args_tail(Qnone,
Qnone, Qnone);$$=new_args(Qnone,
Qnone, Qnone, Qnone,$$);};f_bad_arg:tCONSTANT{yyerror("formalargumentcannotbeaconstant");$$=0;}|tIVAR{yyerror("formalargumentcannotbeaninstancevariable");$$=0;}|tGVAR{yyerror("formalargumentcannotbeaglobalvariable");$$=0;}|tCVAR{yyerror("formalargumentcannotbeaclassvariable");$$=0;};f_norm_arg:f_bad_arg|tIDENTIFIER{formal_argument(get_id($1));$$=$1;};f_arg_item:f_norm_arg{arg_var(get_id($1));$$=NEW_ARGS_AUX($1,
1);}|tLPARENf_margsrparen{IDtid=internal_id();arg_var(tid);if(dyna_in_block()){$2-> 
nd_value = NEW_DVAR(tid)
 nd_next = $2
f_arg __pad108__
f_kw __pad109__
f_block_kw __pad110__ = assignable($1, $2) NEW_KW_ARG(0, $$)
f_block_kwarg __pad111__ = assignable($1, $2) NEW_KW_ARG(0, $$)
 f_block_kwarg
f_kwarg __pad112__
 f_kwarg
kwrest_mark __pad113__
f_kwrest __pad114__
f_opt __pad115__ = $2
f_block_opt __pad116__ = assignable($1, $3) NEW_OPT_ARG(0, $$)
f_block_optarg __pad117__ = assignable($1, $3) NEW_OPT_ARG(0, $$)
f_optarg __pad118__
 f_optarg
restarg_mark __pad119__
f_rest_arg __pad120__
blkarg_mark __pad121__ = $2
f_block_arg __pad122__
opt_f_block_arg __pad123__ = $2
singleton __pad124__
assoc_list __pad125__
assocs __pad126__
assoc __pad127__
operation __pad128__
operation2 __pad129__
operation3 __pad130__
dot_or_colon __pad131__
opt_terms __pad132__
opt_nl __pad133__
rparen __pad134__
rbracket __pad135__
trailer __pad136__
trailer term
terms __pad137__
none __pad138__
static const rb_data_type_t parser_data_type
RUBY_FUNC_EXPORTED const
unsigned int 
ruby_global_name_punct_bits [(0x7e-0x20+31)/32]
static struct magic_comment magic_comments []
static const char id_type_names [][9]
struct {
   ID   token
   const char *   name
op_tbl []
static struct symbols global_symbols
static struct st_hash_type symhash

Define Documentation

#define ADD2HEAP ( n,
c,
 ) 
Value:
((parser->heap = (n))->u1.node = (p), \
                           (n)->u3.cnt = (c), (p))

Definition at line 15723 of file parse.y.

#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""))

Definition at line 11644 of file parse.y.

 
#define arg_ambiguous (  )     (arg_ambiguous_gen(parser), 1)

Definition at line 11308 of file parse.y.

#define arg_append ( h,
 )     arg_append_gen(parser,(h),(t))
#define arg_concat ( h,
 )     arg_concat_gen(parser,(h),(t))
#define arg_var ( id   )     arg_var_gen(parser, (id))
#define aryset ( node1,
node2   )     aryset_gen(parser, (node1), (node2))
#define assignable ( id,
node   )     assignable_gen(parser, (id), (node))
#define assignable_result (  )     (x)
#define attrset ( node,
id   )     attrset_gen(parser, (node), (id))
#define BIT ( c,
idx   )     (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)

Definition at line 10965 of file parse.y.

#define BITSTACK_LEXPOP ( stack   )     ((stack) = ((stack) >> 1) | ((stack) & 1))
#define BITSTACK_POP ( stack   )     ((stack) = (stack) >> 1)
#define BITSTACK_PUSH ( stack,
 )     ((stack) = ((stack)<<1)|((n)&1))
#define BITSTACK_SET_P ( stack   )     ((stack)&1)
#define block_append ( h,
 )     block_append_gen(parser,(h),(t))
#define block_dup_check ( n1,
n2   )     block_dup_check_gen(parser,(n1),(n2))
#define brace_nest   (parser->parser_brace_nest)
#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 calloc   YYCALLOC
#define class_nest   (parser->parser_class_nest)
 
#define CMDARG_LEXPOP (  )     BITSTACK_LEXPOP(cmdarg_stack)
 
#define CMDARG_P (  )     BITSTACK_SET_P(cmdarg_stack)
 
#define CMDARG_POP (  )     BITSTACK_POP(cmdarg_stack)
#define CMDARG_PUSH (  )     BITSTACK_PUSH(cmdarg_stack, (n))
#define cmdarg_stack   (parser->parser_cmdarg_stack)
#define command_start   (parser->parser_command_start)
#define compile_error   parser->nerr++,rb_compile_error_with_enc
#define compile_for_eval   (parser->parser_compile_for_eval)
#define cond ( node   )     cond_gen(parser, (node))
 
#define COND_LEXPOP (  )     BITSTACK_LEXPOP(cond_stack)
 
#define COND_P (  )     BITSTACK_SET_P(cond_stack)
 
#define COND_POP (  )     BITSTACK_POP(cond_stack)
#define COND_PUSH (  )     BITSTACK_PUSH(cond_stack, (n))
#define cond_stack   (parser->parser_cond_stack)
#define cur_mid   (parser->parser_cur_mid)
#define current_enc   (parser->enc)
#define DEF_EXPR (  )     EXPR_##n = (1 << EXPR_##n##_bit)
#define deferred_nodes   (parser->parser_deferred_nodes)
 
#define dispatch_heredoc_end (  )     ((void)0)

Definition at line 11190 of file parse.y.

#define dsym_node ( node   )     dsym_node_gen(parser, (node))
#define dvar_curr ( id   )     dvar_curr_gen(parser, (id))
#define dvar_defined ( id   )     dvar_defined_gen(parser, (id), 0)
#define dvar_defined_get ( id   )     dvar_defined_gen(parser, (id), 1)
#define DVARS_INHERIT   ((void*)1)
#define DVARS_SPECIAL_P ( tbl   )     (!POINTER_P(tbl))
#define DVARS_TOPSCOPE   NULL
 
#define dyna_in_block (  )     dyna_in_block_gen(parser)
#define dyna_pop ( node   )     dyna_pop_gen(parser, (node))
 
#define dyna_push (  )     dyna_push_gen(parser)
#define dyna_var ( id   )     local_var(id)
#define ENC_SINGLE ( cr   )     ((cr)==ENC_CODERANGE_7BIT)
#define ESCAPE_CONTROL   1

Definition at line 10559 of file parse.y.

#define ESCAPE_META   2

Definition at line 10560 of file parse.y.

#define evstr2dstr (  )     evstr2dstr_gen(parser,(n))
#define flush_string_content ( enc   )     ((void)(enc))

Definition at line 10958 of file parse.y.

#define formal_argument ( id   )     formal_argument_gen(parser, (id))
#define free   YYFREE
#define get_id ( id   )     (id)
#define get_value ( val   )     (val)
#define gettable ( id   )     gettable_gen(parser,(id))
#define HEAPCNT ( n,
size   )     ((n) * (size) / sizeof(YYSTYPE))

Definition at line 15721 of file parse.y.

#define here_document (  )     parser_here_document(parser,(n))

Definition at line 9823 of file parse.y.

#define heredoc_end   (parser->parser_heredoc_end)
 
#define heredoc_identifier (  )     parser_heredoc_identifier(parser)

Definition at line 9824 of file parse.y.

#define heredoc_restore (  )     parser_heredoc_restore(parser,(n))

Definition at line 9825 of file parse.y.

#define id_type ( id   )     (is_notop_id(id) ? (int)((id)&ID_SCOPE_MASK) : -1)
#define IDSET_ATTRSET_FOR_INTERN   (~(~0U<<(1<<ID_SCOPE_SHIFT)) & ~(1U<<ID_ATTRSET))

Definition at line 14908 of file parse.y.

#define IDSET_ATTRSET_FOR_SYNTAX   ((1U<<ID_LOCAL)|(1U<<ID_CONST))

Definition at line 14907 of file parse.y.

#define ifndef_ripper (  )     (x)
#define in_def   (parser->parser_in_def)
#define in_defined   (parser->parser_in_defined)
#define in_single   (parser->parser_in_single)
 
#define internal_id (  )     internal_id_gen(parser)
 
#define IS_AFTER_OPERATOR (  )     IS_lex_state(EXPR_FNAME | EXPR_DOT)

Definition at line 11641 of file parse.y.

 
#define IS_ARG (  )     IS_lex_state(EXPR_ARG_ANY)

Definition at line 11635 of file parse.y.

#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_attrset_id ( id   )     (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
 
#define IS_BEG (  )     IS_lex_state(EXPR_BEG_ANY)

Definition at line 11637 of file parse.y.

#define is_class_id ( id   )     (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
#define is_const_id ( id   )     (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
 
#define IS_END (  )     IS_lex_state(EXPR_END_ANY)

Definition at line 11636 of file parse.y.

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

Definition at line 9922 of file parse.y.

#define is_instance_id ( id   )     (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
#define is_junk_id ( id   )     (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
 
#define IS_LABEL_POSSIBLE (  )     ((IS_lex_state(EXPR_BEG | EXPR_ENDFN) && !cmd_state) || IS_ARG())

Definition at line 11639 of file parse.y.

#define IS_LABEL_SUFFIX (  )     (peek_n(':',(n)) && !peek_n(':', (n)+1))

Definition at line 11640 of file parse.y.

#define IS_lex_state ( ls   )     IS_lex_state_for(lex_state, (ls))
#define IS_lex_state_for ( x,
ls   )     ((x) & (ls))
#define is_local_id ( id   )     (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
#define is_notop_id ( id   )     ((id)>tLAST_OP_ID)
#define IS_SPCARG (  )     (IS_ARG() && space_seen && !ISSPACE(c))

Definition at line 11638 of file parse.y.

 
#define lex_eol_p (  )     (lex_p >= lex_pend)

Definition at line 10355 of file parse.y.

#define lex_gets   (parser->parser_lex_gets)
#define lex_gets_ptr   (parser->parser_lex_gets_ptr)
#define lex_goto_eol ( parser   )     ((parser)->parser_lex_p = (parser)->parser_lex_pend)

Definition at line 10354 of file parse.y.

#define lex_input   (parser->parser_lex_input)
#define lex_lastline   (parser->parser_lex_lastline)
#define lex_nextline   (parser->parser_lex_nextline)
#define lex_p   (parser->parser_lex_p)
#define lex_pbeg   (parser->parser_lex_pbeg)
#define lex_pend   (parser->parser_lex_pend)
#define lex_state   (parser->parser_lex_state)
#define lex_strterm   (parser->parser_lex_strterm)
#define list_append ( l,
 )     list_append_gen(parser,(l),(i))
#define list_concat ( h,
 )     list_concat_gen(parser,(h),(t))
#define literal_concat ( h,
 )     literal_concat_gen(parser,(h),(t))
#define local_id ( id   )     local_id_gen(parser, (id))
 
#define local_pop (  )     local_pop_gen(parser)
#define local_push ( top   )     local_push_gen(parser,(top))
 
#define local_tbl (  )     local_tbl_gen(parser)
#define local_var ( id   )     local_var_gen(parser, (id))
#define logop ( type,
node1,
node2   )     logop_gen(parser, (type), (node1), (node2))
#define lpar_beg   (parser->parser_lpar_beg)
#define lvar_defined ( id   )     lvar_defined_gen(parser, (id))
#define LVAR_USED   ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))

Definition at line 13440 of file parse.y.

#define lvtbl   (parser->parser_lvtbl)
#define malloc   YYMALLOC
#define match_op ( node1,
node2   )     match_op_gen(parser, (node1), (node2))
#define mixed_error ( enc1,
enc2   ) 
Value:
if (!errbuf) {  \
        size_t len = sizeof(mixed_msg) - 4;     \
        len += strlen(rb_enc_name(enc1));       \
        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);                        \
    }
#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 nd_func   u1.id
#define nd_nest   u3.cnt
#define nd_paren ( node   )     (char)((node)->u2.id >> CHAR_BIT*2)
#define nd_term ( node   )     SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
#define new_args ( f,
o,
r,
p,
 )     new_args_gen(parser, (f),(o),(r),(p),(t))
#define new_args_tail ( k,
kr,
 )     new_args_tail_gen(parser, (k),(kr),(b))
#define new_attr_op_assign ( lhs,
type,
attr,
op,
rhs   )     new_attr_op_assign_gen(parser, (lhs), (attr), (op), (rhs))
#define new_bv ( id   )     new_bv_gen(parser, (id))
#define new_const_op_assign ( lhs,
op,
rhs   )     new_const_op_assign_gen(parser, (lhs), (op), (rhs))
#define new_evstr (  )     new_evstr_gen(parser,(n))
#define new_op_assign ( lhs,
op,
rhs   )     new_op_assign_gen(parser, (lhs), (op), (rhs))
#define NEW_STRTERM ( func,
term,
paren   )     rb_node_newnode(NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)

Definition at line 10939 of file parse.y.

#define new_yield ( node   )     new_yield_gen(parser, (node))
 
#define NEWHEAP (  )     rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parser->heap, 0)

Definition at line 15722 of file parse.y.

 
#define newtok (  )     parser_newtok(parser)

Definition at line 9813 of file parse.y.

 
#define nextc (  )     parser_nextc(parser)

Definition at line 9811 of file parse.y.

 
#define no_digits (  )     do {yyerror("numeric literal without digits"); return 0;} while (0)
#define node_assign ( node1,
node2   )     node_assign_gen(parser, (node1), (node2))
#define NODE_HEREDOC   NODE_ARRAY
#define NODE_STRTERM   NODE_ZARRAY
#define numberof ( array   )     (int)(sizeof(array) / sizeof((array)[0]))
#define op_tbl_count   numberof(op_tbl)

Definition at line 14783 of file parse.y.

#define paren_nest   (parser->parser_paren_nest)
#define parse_string (  )     parser_parse_string(parser,(n))

Definition at line 9821 of file parse.y.

#define PARSER_ARG   ruby_sourcefile, ruby_sourceline, current_enc,
 
#define parser_encoding_name (  )     (current_enc->name)

Definition at line 9919 of file parse.y.

 
#define parser_is_identchar (  )     (!parser->eofp && is_identchar((lex_p-1),lex_pend,current_enc))

Definition at line 9923 of file parse.y.

 
#define parser_isascii (  )     ISASCII(*(lex_p-1))

Definition at line 9925 of file parse.y.

 
#define parser_mbclen (  )     mbclen((lex_p-1),lex_pend,current_enc)

Definition at line 9920 of file parse.y.

 
#define parser_precise_mbclen (  )     rb_enc_precise_mbclen((lex_p-1),lex_pend,current_enc)

Definition at line 9921 of file parse.y.

#define parser_warn ( node,
mesg   )     parser_warn(parser, (node), (mesg))

Definition at line 13003 of file parse.y.

#define parser_warning ( node,
mesg   )     parser_warning(parser, (node), (mesg))

Definition at line 12996 of file parse.y.

#define peek (  )     peek_n((c), 0)

Definition at line 10356 of file parse.y.

#define peek_n ( c,
 )     (lex_p+(n) < lex_pend && (c) == (unsigned char)lex_p[n])

Definition at line 10357 of file parse.y.

#define POINTER_P ( val   )     ((VALUE)(val) & ~(VALUE)3)
#define pushback (  )     parser_pushback(parser, (c))

Definition at line 9812 of file parse.y.

#define Qnone   0
#define rb_backref_error (  )     rb_backref_error_gen(parser,(n))
#define rb_compile_error   rb_compile_error_with_enc
#define rb_node_newnode ( type,
a1,
a2,
a3   )     node_newnode(parser, (type), (a1), (a2), (a3))
#define rb_warn0 ( fmt   )     rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt))
#define rb_warn4S ( file,
line,
fmt,
 )     rb_compile_warn((file), (line), (fmt), (a))
#define rb_warnI ( fmt,
 )     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,
 )     rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt), (a))
#define rb_warnS ( fmt,
 )     rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))
#define RE_OPTION_ARG_ENCODING_NONE   32
#define RE_OPTION_ENCODING (  )     (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
#define RE_OPTION_ENCODING_IDX (  )     (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
#define RE_OPTION_ENCODING_NONE (  )     ((o)&RE_OPTION_ARG_ENCODING_NONE)
#define RE_OPTION_ENCODING_SHIFT   8
#define RE_OPTION_MASK   0xff
#define RE_OPTION_ONCE   (1<<16)
#define read_escape ( flags,
 )     parser_read_escape(parser, (flags), (e))

Definition at line 9817 of file parse.y.

#define realloc   YYREALLOC
#define reduce_nodes (  )     reduce_nodes_gen(parser,(n))
#define reg_compile ( str,
options   )     reg_compile_gen(parser, (str), (options))
#define reg_fragment_check ( str,
options   )     reg_fragment_check_gen(parser, (str), (options))
#define reg_fragment_setenc ( str,
options   )     reg_fragment_setenc_gen(parser, (str), (options))
#define reg_named_capture_assign ( regexp,
match   )     reg_named_capture_assign_gen(parser,(regexp),(match))
#define REGISTER_SYMID ( id,
name   )     register_symid((id), (name), strlen(name), enc)
 
#define regx_options (  )     parser_regx_options(parser)

Definition at line 9819 of file parse.y.

#define ret_args ( node   )     ret_args_gen(parser, (node))
#define ripper_flush (  )     (void)(p)

Definition at line 9852 of file parse.y.

#define ruby__end__seen   (parser->parser_ruby__end__seen)
#define ruby_coverage   (parser->coverage)
#define ruby_debug_lines   (parser->debug_lines)
#define ruby_eval_tree   (parser->parser_eval_tree)
#define ruby_eval_tree_begin   (parser->parser_eval_tree_begin)
#define ruby_sourcefile   (parser->parser_ruby_sourcefile)
#define ruby_sourcefile_string   (parser->parser_ruby_sourcefile_string)
#define ruby_sourceline   (parser->parser_ruby_sourceline)
#define set_yylval_id (  )     (yylval.id = (x))

Definition at line 9831 of file parse.y.

#define set_yylval_literal (  )     (yylval.node = NEW_LIT(x))

Definition at line 9833 of file parse.y.

#define set_yylval_name (  )     (yylval.id = (x))

Definition at line 9832 of file parse.y.

#define set_yylval_node (  )     (yylval.node = (x))

Definition at line 9834 of file parse.y.

#define set_yylval_num (  )     (yylval.num = (x))

Definition at line 9830 of file parse.y.

#define set_yylval_str (  )     (yylval.node = NEW_STR(x))

Definition at line 9829 of file parse.y.

#define shadowing_lvar ( name   )     shadowing_lvar_gen(parser, (name))
#define SIGN_EXTEND ( x,
 )     (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
#define SIGN_EXTEND_CHAR (  )     ((((unsigned char)(c)) ^ 128) - 128)

Definition at line 9916 of file parse.y.

#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))

Definition at line 10966 of file parse.y.

#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 STR_FUNC_ESCAPE   0x01

Definition at line 10319 of file parse.y.

#define STR_FUNC_EXPAND   0x02

Definition at line 10320 of file parse.y.

#define STR_FUNC_INDENT   0x20

Definition at line 10324 of file parse.y.

#define STR_FUNC_QWORDS   0x08

Definition at line 10322 of file parse.y.

#define STR_FUNC_REGEXP   0x04

Definition at line 10321 of file parse.y.

#define STR_FUNC_SYMBOL   0x10

Definition at line 10323 of file parse.y.

#define STR_NEW ( p,
 )     rb_enc_str_new((p),(n),current_enc)
 
#define STR_NEW0 (  )     rb_enc_str_new(0,0,current_enc)
#define STR_NEW2 (  )     rb_enc_str_new((p),strlen(p),current_enc)
#define STR_NEW3 ( p,
n,
e,
func   )     parser_str_new((p),(n),(e),(func),current_enc)
#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 tok (  )     tokenbuf

Definition at line 10428 of file parse.y.

#define tok_hex ( numlen   )     parser_tok_hex(parser, (numlen))

Definition at line 9816 of file parse.y.

#define TOK_INTERN ( mb   )     rb_intern3(tok(), toklen(), current_enc)
#define tokadd (  )     parser_tokadd(parser, (c))

Definition at line 9815 of file parse.y.

#define tokadd_escape (  )     parser_tokadd_escape(parser, (e))

Definition at line 9818 of file parse.y.

#define tokadd_mbchar (  )     parser_tokadd_mbchar(parser, (c))

Definition at line 10790 of file parse.y.

#define tokadd_string ( f,
t,
p,
n,
 )     parser_tokadd_string(parser,(f),(t),(p),(n),(e))

Definition at line 9820 of file parse.y.

#define tokaddmbc ( c,
enc   )     parser_tokaddmbc(parser, (c), (enc))

Definition at line 9822 of file parse.y.

#define tokcopy (  )     memcpy(tokspace(n), lex_p - (n), (n))

Definition at line 10484 of file parse.y.

#define token_info_pop ( token   )     (RTEST(ruby_verbose) ? token_info_pop(parser, (token)) : (void)0)
#define token_info_push ( token   )     (RTEST(ruby_verbose) ? token_info_push(parser, (token)) : (void)0)
#define tokenbuf   (parser->parser_tokenbuf)
 
#define tokfix (  )     (tokenbuf[tokidx]='\0')

Definition at line 10427 of file parse.y.

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

Definition at line 10430 of file parse.y.

 
#define toklen (  )     tokidx

Definition at line 10429 of file parse.y.

#define tokline   (parser->parser_tokline)
#define toksiz   (parser->parser_toksiz)
#define tokspace (  )     parser_tokspace(parser, (n))

Definition at line 9814 of file parse.y.

#define value_expr ( node   )     value_expr_gen(parser, (node) = remove_begin(node))
#define void_expr ( node   )     void_expr0((node) = remove_begin(node))
#define void_expr0 ( node   )     void_expr_gen(parser, (node))
#define void_stmts ( node   )     void_stmts_gen(parser, (node))
#define VTBL_DEBUG   0
#define warn_balanced ( op,
syn   ) 
Value:
((void) \
    (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN|EXPR_ENDARG) && \
     space_seen && !ISSPACE(c) && \
     (ambiguous_operator(op, syn), 0)))

Definition at line 11650 of file parse.y.

 
#define was_bol (  )     (lex_p == lex_pbeg + 1)

Definition at line 10425 of file parse.y.

#define whole_match_p ( e,
l,
 )     parser_whole_match_p(parser,(e),(l),(i))

Definition at line 9826 of file parse.y.

#define YYCALLOC ( nelem,
size   )     rb_parser_calloc(parser, (nelem), (size))
#define yydebug   (parser->parser_yydebug)
#define YYDEBUG   1
#define yyerror ( msg   )     parser_yyerror(parser, (msg))
#define YYERROR_VERBOSE   1
#define YYFREE ( ptr   )     rb_parser_free(parser, (ptr))
#define yylval   (*((YYSTYPE*)(parser->parser_yylval)))

Definition at line 9802 of file parse.y.

 
#define yylval_id (  )     (yylval.id)

Definition at line 9835 of file parse.y.

#define YYMALLOC ( size   )     rb_parser_malloc(parser, (size))
#define yyparse   ruby_yyparse
#define YYREALLOC ( ptr,
size   )     rb_parser_realloc(parser, (ptr), (size))
#define YYSTACK_USE_ALLOCA   0

Typedef Documentation

typedef long(* rb_magic_comment_length_t)(struct parser_params *parser, const char *name, long len)

Definition at line 11393 of file parse.y.

typedef void(* rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val)

Definition at line 11394 of file parse.y.


Enumeration Type Documentation

Enumerator:
str_squote 
str_dquote 
str_xquote 
str_regexp 
str_sword 
str_dword 
str_ssym 
str_dsym 
str_squote 
str_dquote 
str_xquote 
str_regexp 
str_sword 
str_dword 
str_ssym 
str_dsym 
str_squote 
str_dquote 
str_xquote 
str_regexp 
str_sword 
str_dword 
str_ssym 
str_dsym 
str_squote 
str_dquote 
str_xquote 
str_regexp 
str_sword 
str_dword 
str_ssym 
str_dsym 

Definition at line 10326 of file parse.y.


Function Documentation

static void arg_ambiguous_gen ( struct parser_params parser  )  [static]

Definition at line 11300 of file parse.y.

References RB_TYPE_P, and TypedData_Get_Struct.

static NODE* arg_append_gen ( struct parser_params parser,
NODE *  node1,
NODE *  node2 
) [static]

Definition at line 13583 of file parse.y.

static NODE* arg_blk_pass ( NODE *  node1,
NODE *  node2 
) [static]

Definition at line 14147 of file parse.y.

static NODE* arg_concat_gen ( struct parser_params parser,
NODE *  node1,
NODE *  node2 
) [static]

Definition at line 13558 of file parse.y.

arg_var ( shadowing_lvar(get_id($2))   ) 
static int arg_var_gen ( struct parser_params parser,
ID  id 
) [static]

Definition at line 14390 of file parse.y.

static NODE* aryset_gen ( struct parser_params parser,
NODE *  recv,
NODE *  idx 
) [static]

Definition at line 13481 of file parse.y.

static int assign_in_cond ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13900 of file parse.y.

static NODE* assignable_gen ( struct parser_params parser,
ID  id,
NODE *  val 
) [static]

Definition at line 13351 of file parse.y.

static NODE* attrset_gen ( struct parser_params parser,
NODE *  recv,
ID  id 
) [static]

Definition at line 13537 of file parse.y.

static NODE* block_append_gen ( struct parser_params parser,
NODE *  head,
NODE *  tail 
) [static]

Definition at line 13006 of file parse.y.

static void block_dup_check_gen ( struct parser_params parser,
NODE *  node1,
NODE *  node2 
) [static]

Definition at line 13489 of file parse.y.

static NODE* call_bin_op_gen ( struct parser_params parser,
NODE *  recv,
ID  id,
NODE *  arg1 
) [static]

Definition at line 13225 of file parse.y.

static NODE* call_uni_op_gen ( struct parser_params parser,
NODE *  recv,
ID  id 
) [static]

Definition at line 13233 of file parse.y.

CMDARG_PUSH (  ) 
static int comment_at_top ( struct parser_params parser  )  [static]

Definition at line 11381 of file parse.y.

static NODE * cond0 ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 14007 of file parse.y.

static NODE* cond_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 14064 of file parse.y.

static VALUE coverage ( VALUE  fname,
int  n 
) [static]

Definition at line 10083 of file parse.y.

static VALUE debug_lines ( VALUE  fname  )  [static]

Definition at line 10067 of file parse.y.

static void dispose_string ( VALUE  str  )  [static]
static NODE* dsym_node_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 14205 of file parse.y.

static int dvar_curr_gen ( struct parser_params parser,
ID  id 
) [static]

Definition at line 14515 of file parse.y.

static int dvar_defined_gen ( struct parser_params parser,
ID  id,
int  get 
) [static]

Definition at line 14484 of file parse.y.

static int dyna_in_block_gen ( struct parser_params parser  )  [static]

Definition at line 14478 of file parse.y.

static void dyna_pop_1 ( struct parser_params parser  )  [static]

Definition at line 14446 of file parse.y.

static void dyna_pop_gen ( struct parser_params parser,
const struct vtable lvargs 
) [static]

Definition at line 14464 of file parse.y.

static struct vtable* dyna_push_gen ( struct parser_params parser  )  [static, read]

Definition at line 14435 of file parse.y.

static int e_option_supplied ( struct parser_params parser  )  [static]

Definition at line 10099 of file parse.y.

References ISASCII.

static NODE* evstr2dstr_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13202 of file parse.y.

static void fixpos ( NODE *  node,
NODE *  orig 
) [static]

Definition at line 12983 of file parse.y.

fixpos ( $$  ,
$2?$2:$  5 
)
fixpos ( $$  ,
1 
) = $2
static void fixup_nodes ( NODE **  rootnode  )  [static]

Definition at line 13939 of file parse.y.

static ID formal_argument_gen ( struct parser_params parser,
ID  lhs 
) [static]

Definition at line 11311 of file parse.y.

References NIL_P, and STR_NEW2.

static NODE* gettable_gen ( struct parser_params parser,
ID  id 
) [static]

Definition at line 13274 of file parse.y.

else if ( dyna_in_block)&&local_id($2  ) 
if ( node  ) 

Definition at line 8690 of file parse.y.

if ( !$$   )  = NEW_BEGIN(0)
if ( 2  ) 
void Init_sym ( void   ) 

Definition at line 14833 of file parse.y.

static ID intern_str ( VALUE  str  )  [static]

Definition at line 15082 of file parse.y.

static ID internal_id_gen ( struct parser_params parser  )  [static]

Definition at line 14861 of file parse.y.

static int is_global_name_punct ( const char  c  )  [inline, static]

Definition at line 10983 of file parse.y.

References rb_gc_force_recycle().

static int is_private_local_id ( ID  name  )  [static]

Definition at line 13430 of file parse.y.

static int is_special_global_name ( const char *  m,
const char *  e,
rb_encoding *  enc 
) [static]

Definition at line 14870 of file parse.y.

static int is_static_content ( NODE *  node  )  [static]

Definition at line 13876 of file parse.y.

static VALUE lex_get_str ( struct parser_params parser,
VALUE  s 
) [static]

Definition at line 10185 of file parse.y.

References ID_JUNK.

static VALUE lex_getline ( struct parser_params parser  )  [static]

Definition at line 10205 of file parse.y.

References ID_ATTRSET.

static VALUE lex_io_gets ( struct parser_params parser,
VALUE  io 
) [static]

Definition at line 10281 of file parse.y.

References OBJ_FREEZE.

static NODE* list_append_gen ( struct parser_params parser,
NODE *  list,
NODE *  item 
) [static]

Definition at line 13060 of file parse.y.

static NODE* list_concat_gen ( struct parser_params parser,
NODE *  head,
NODE *  tail 
) [static]

Definition at line 13080 of file parse.y.

static int literal_concat0 ( struct parser_params parser,
VALUE  head,
VALUE  tail 
) [static]

Definition at line 13104 of file parse.y.

static NODE* literal_concat_gen ( struct parser_params parser,
NODE *  head,
NODE *  tail 
) [static]

Definition at line 13121 of file parse.y.

static int literal_node ( NODE *  node  )  [static]

Definition at line 13986 of file parse.y.

static int local_id_gen ( struct parser_params parser,
ID  id 
) [static]

Definition at line 14407 of file parse.y.

static void local_pop_gen ( struct parser_params parser  )  [static]

Definition at line 14349 of file parse.y.

static void local_push_gen ( struct parser_params parser,
int  inherit_dvars 
) [static]

Definition at line 14332 of file parse.y.

static ID* local_tbl_gen ( struct parser_params parser  )  [static]

Definition at line 14365 of file parse.y.

static int local_var_gen ( struct parser_params parser,
ID  id 
) [static]

Definition at line 14397 of file parse.y.

static NODE* logop_gen ( struct parser_params parser,
enum node_type  type,
NODE *  left,
NODE *  right 
) [static]

Definition at line 14071 of file parse.y.

static int lvar_defined_gen ( struct parser_params parser,
ID  id 
) [static]

Definition at line 11322 of file parse.y.

static void magic_comment_encoding ( struct parser_params parser,
const char *  name,
const char *  val 
) [static]

Definition at line 11397 of file parse.y.

References NIL_P.

static const char* magic_comment_marker ( const char *  str,
long  len 
) [static]

Definition at line 11441 of file parse.y.

References Qnil, Qundef, rb_eArgError, rb_raise(), RSTRING_PTR, and StringValue.

static NODE* match_op_gen ( struct parser_params parser,
NODE *  node1,
NODE *  node2 
) [static]

Definition at line 13240 of file parse.y.

static rb_encoding* must_be_ascii_compatible ( VALUE  s  )  [static]

Definition at line 10175 of file parse.y.

fcall nd_set_line ( $$  ,
tokline   
)
Type Constraints
static NODE* negate_lit ( NODE *  node  )  [static]

Definition at line 14119 of file parse.y.

static NODE* new_args_gen ( struct parser_params parser,
NODE *  m,
NODE *  o,
ID  r,
NODE *  p,
NODE *  tail 
) [static]

Definition at line 14158 of file parse.y.

static NODE* new_args_tail_gen ( struct parser_params parser,
NODE *  k,
ID  kr,
ID  b 
) [static]

Definition at line 14180 of file parse.y.

static NODE* new_attr_op_assign_gen ( struct parser_params parser,
NODE *  lhs,
ID  attr,
ID  op,
NODE *  rhs 
) [static]

Definition at line 14261 of file parse.y.

static void new_bv_gen ( struct parser_params parser,
ID  name 
) [static]

Definition at line 13467 of file parse.y.

static NODE* new_const_op_assign_gen ( struct parser_params parser,
NODE *  lhs,
ID  op,
NODE *  rhs 
) [static]

Definition at line 14277 of file parse.y.

opt_rescue NEW_ERRINFO (  ) 
Type Constraints
static NODE* new_evstr_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13211 of file parse.y.

static NODE* new_op_assign_gen ( struct parser_params parser,
NODE *  lhs,
ID  op,
NODE *  rhs 
) [static]

Definition at line 14232 of file parse.y.

static NODE* new_yield_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 14111 of file parse.y.

static NODE* newline_node ( NODE *  node  )  [static]

Definition at line 12973 of file parse.y.

static void no_blockarg ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 14086 of file parse.y.

static NODE* node_assign_gen ( struct parser_params parser,
NODE *  lhs,
NODE *  rhs 
) [static]

Definition at line 13609 of file parse.y.

static NODE* node_newnode ( struct parser_params parser,
enum node_type  type,
VALUE  a0,
VALUE  a1,
VALUE  a2 
) [static]

Definition at line 12953 of file parse.y.

static int nodeline ( NODE *  node  )  [static]

Definition at line 12967 of file parse.y.

static enum node_type nodetype ( NODE *  node  )  [static]

Definition at line 12961 of file parse.y.

static NODE* parser_compile_string ( volatile VALUE  vparser,
VALUE  fname,
VALUE  s,
int  line 
) [static]

Definition at line 10228 of file parse.y.

static long parser_encode_length ( struct parser_params parser,
const char *  name,
long  len 
) [static]

Definition at line 11329 of file parse.y.

static void parser_free ( void *  ptr  )  [static]

Definition at line 15586 of file parse.y.

static int parser_here_document ( struct parser_params parser,
NODE *  here 
) [static]

Definition at line 11194 of file parse.y.

References rb_intern.

static int parser_heredoc_identifier ( struct parser_params parser  )  [static]

Definition at line 11084 of file parse.y.

References rb_funcall().

static void parser_heredoc_restore ( struct parser_params parser,
NODE *  here 
) [static]

Definition at line 11147 of file parse.y.

References keyword__LINE__.

static void parser_initialize ( struct parser_params parser  )  [static]

Definition at line 15507 of file parse.y.

static int parser_magic_comment ( struct parser_params parser,
const char *  str,
long  len 
) [static]
static void parser_mark ( void *  ptr  )  [static]

Definition at line 15560 of file parse.y.

static size_t parser_memsize ( const void *  ptr  )  [static]

Definition at line 15603 of file parse.y.

static struct parser_params* parser_new ( void   )  [static, read]

Definition at line 15641 of file parse.y.

static char* parser_newtok ( struct parser_params parser  )  [static]
static int parser_nextc ( struct parser_params parser  )  [inline, static]

Definition at line 10360 of file parse.y.

static int parser_parse_string ( struct parser_params parser,
NODE *  quote 
) [static]

Definition at line 11026 of file parse.y.

static int parser_peek_variable_name ( struct parser_params parser  )  [static]

Definition at line 10990 of file parse.y.

References xfree.

static void parser_prepare ( struct parser_params parser  )  [static]

Definition at line 11611 of file parse.y.

static void parser_pushback ( struct parser_params parser,
int  c 
) [static]

Definition at line 10416 of file parse.y.

static int parser_read_escape ( struct parser_params parser,
int  flags,
rb_encoding **  encp 
) [static]

Definition at line 10563 of file parse.y.

static int parser_regx_options ( struct parser_params parser  )  [static]

Definition at line 10734 of file parse.y.

References NULL.

static void parser_set_encode ( struct parser_params parser,
const char *  name 
) [static]

Definition at line 11349 of file parse.y.

static void parser_set_token_info ( struct parser_params parser,
const char *  name,
const char *  val 
) [static]
static VALUE parser_str_new ( const char *  p,
long  n,
rb_encoding *  enc,
int  func,
rb_encoding *  enc0 
) [static]

Definition at line 10338 of file parse.y.

References op_tbl, op_tbl_count, rb_enc_isascii, and rb_enc_ispunct.

static int parser_tok_hex ( struct parser_params parser,
size_t *  numlen 
) [static]

Definition at line 10471 of file parse.y.

References ID_CLASS, ID_CONST, ID_GLOBAL, ID_INSTANCE, ID_JUNK, ID_LOCAL, and rb_id2str().

static void parser_tokadd ( struct parser_params parser,
int  c 
) [static]

Definition at line 10461 of file parse.y.

References rb_cString, and RBASIC.

static int parser_tokadd_escape ( struct parser_params parser,
rb_encoding **  encp 
) [static]

Definition at line 10661 of file parse.y.

static int parser_tokadd_mbchar ( struct parser_params parser,
int  c 
) [static]

Definition at line 10777 of file parse.y.

static int parser_tokadd_string ( struct parser_params parser,
int  func,
int  term,
int  paren,
long *  nest,
rb_encoding **  encp 
) [static]

Definition at line 10806 of file parse.y.

References xfree.

static int parser_tokadd_utf8 ( struct parser_params parser,
rb_encoding **  encp,
int  string_literal,
int  symbol_literal,
int  regexp_literal 
) [static]

Definition at line 10488 of file parse.y.

static void parser_tokaddmbc ( struct parser_params parser,
int  c,
rb_encoding *  enc 
) [static]

Definition at line 10654 of file parse.y.

References rb_id_attrset().

static char* parser_tokspace ( struct parser_params parser,
int  n 
) [static]

Definition at line 10449 of file parse.y.

References global_symbols, OBJ_FREEZE, symbols::op_sym, op_tbl, and rb_usascii_str_new2.

static void parser_warn ( struct parser_params parser,
NODE *  node,
const char *  mesg 
) [static]

Definition at line 12999 of file parse.y.

static void parser_warning ( struct parser_params parser,
NODE *  node,
const char *  mesg 
) [static]

Definition at line 12992 of file parse.y.

static int parser_whole_match_p ( struct parser_params parser,
const char *  eos,
long  len,
int  indent 
) [static]

Definition at line 11164 of file parse.y.

References ID2SYM, rb_id2name(), rb_intern, rb_intern2(), tANDOP, and tOROP.

static int parser_yyerror ( struct parser_params parser,
const char *  msg 
) [static]

Definition at line 10002 of file parse.y.

static int parser_yylex ( struct parser_params parser  )  [static]

Definition at line 11656 of file parse.y.

static NODE* range_op ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13970 of file parse.y.

static void rb_backref_error_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13545 of file parse.y.

ID rb_check_id ( volatile VALUE *  namep  ) 

Returns ID for the given name if it is interned already, or 0.

Parameters:
namep the pointer to the name object
Returns:
the ID for *namep
Precondition:
the object referred by namep must be a Symbol or a String, or possible to convert with to_str method.
Postcondition:
the object referred by namep is a Symbol or a String if non-zero value is returned, or is a String if 0 is returned.

Definition at line 15378 of file parse.y.

ID rb_check_id_cstr ( const char *  ptr,
long  len,
rb_encoding *  enc 
)

Definition at line 15425 of file parse.y.

NODE* rb_compile_cstr ( const char *  f,
const char *  s,
int  len,
int  line 
)

Definition at line 10267 of file parse.y.

NODE* rb_compile_file ( const char *  f,
VALUE  file,
int  start 
)

Definition at line 10287 of file parse.y.

NODE* rb_compile_string ( const char *  f,
VALUE  s,
int  line 
)

Definition at line 10247 of file parse.y.

int rb_enc_symname2_p ( const char *  name,
long  len,
rb_encoding *  enc 
)

Definition at line 15008 of file parse.y.

int rb_enc_symname_p ( const char *  name,
rb_encoding *  enc 
)

Definition at line 14902 of file parse.y.

static int rb_enc_symname_type ( const char *  name,
long  len,
rb_encoding *  enc,
unsigned int  allowed_atttset 
) [static]

Definition at line 14911 of file parse.y.

void rb_gc_mark_parser ( void   ) 

Definition at line 14681 of file parse.y.

void rb_gc_mark_symbols ( void   ) 

Definition at line 14852 of file parse.y.

const char* rb_id2name ( ID  id  ) 

Definition at line 15284 of file parse.y.

VALUE rb_id2str ( ID  id  ) 

Definition at line 15218 of file parse.y.

ID rb_id_attrset ( ID  id  ) 

Definition at line 13508 of file parse.y.

ID rb_intern ( const char *  name  ) 

Definition at line 15202 of file parse.y.

ID rb_intern2 ( const char *  name,
long  len 
)

Definition at line 15195 of file parse.y.

ID rb_intern3 ( const char *  name,
long  len,
rb_encoding *  enc 
)

Definition at line 15060 of file parse.y.

ID rb_intern_str ( VALUE  str  ) 

Definition at line 15208 of file parse.y.

int rb_is_attrset_id ( ID  id  ) 

Definition at line 15349 of file parse.y.

int rb_is_attrset_name ( VALUE  name  ) 

Definition at line 15477 of file parse.y.

int rb_is_class_id ( ID  id  ) 

Definition at line 15331 of file parse.y.

int rb_is_class_name ( VALUE  name  ) 

Definition at line 15459 of file parse.y.

int rb_is_const_id ( ID  id  ) 

Definition at line 15325 of file parse.y.

int rb_is_const_name ( VALUE  name  ) 

Definition at line 15453 of file parse.y.

int rb_is_global_id ( ID  id  ) 

Definition at line 15337 of file parse.y.

int rb_is_global_name ( VALUE  name  ) 

Definition at line 15465 of file parse.y.

int rb_is_instance_id ( ID  id  ) 

Definition at line 15343 of file parse.y.

int rb_is_instance_name ( VALUE  name  ) 

Definition at line 15471 of file parse.y.

int rb_is_junk_id ( ID  id  ) 

Definition at line 15361 of file parse.y.

int rb_is_junk_name ( VALUE  name  ) 

Definition at line 15499 of file parse.y.

int rb_is_local_id ( ID  id  ) 

Definition at line 15355 of file parse.y.

int rb_is_local_name ( VALUE  name  ) 

Definition at line 15483 of file parse.y.

int rb_is_method_name ( VALUE  name  ) 

Definition at line 15489 of file parse.y.

NODE* rb_parser_append_print ( VALUE  vparser,
NODE *  node 
)

Definition at line 14686 of file parse.y.

void* rb_parser_calloc ( struct parser_params parser,
size_t  nelem,
size_t  size 
)

Definition at line 15737 of file parse.y.

NODE* rb_parser_compile_cstr ( volatile VALUE  vparser,
const char *  f,
const char *  s,
int  len,
int  line 
)

Definition at line 10274 of file parse.y.

References RSTRING_NOEMBED, and T_STRING.

NODE* rb_parser_compile_file ( volatile VALUE  vparser,
const char *  f,
VALUE  file,
int  start 
)

Definition at line 10295 of file parse.y.

NODE* rb_parser_compile_file_path ( volatile VALUE  vparser,
VALUE  fname,
VALUE  file,
int  start 
)

Definition at line 10301 of file parse.y.

References ID_JUNK, rb_enc_asciicompat, and RSTRING_GETMEM.

NODE* rb_parser_compile_string ( volatile VALUE  vparser,
const char *  f,
VALUE  s,
int  line 
)

Definition at line 10254 of file parse.y.

References ENC_CODERANGE_7BIT, ENC_CODERANGE_BROKEN, rb_eEncodingError, rb_raise(), and TRUE.

NODE* rb_parser_compile_string_path ( volatile VALUE  vparser,
VALUE  f,
VALUE  s,
int  line 
)

Definition at line 10260 of file parse.y.

VALUE rb_parser_encoding ( VALUE  vparser  ) 

Definition at line 15681 of file parse.y.

VALUE rb_parser_end_seen_p ( VALUE  vparser  ) 

Definition at line 15666 of file parse.y.

void rb_parser_free ( struct parser_params parser,
void *  ptr 
)

Definition at line 15767 of file parse.y.

VALUE rb_parser_get_yydebug ( VALUE  self  ) 

Definition at line 15696 of file parse.y.

void* rb_parser_malloc ( struct parser_params parser,
size_t  size 
)

Definition at line 15727 of file parse.y.

VALUE rb_parser_new ( void   ) 

Definition at line 15652 of file parse.y.

void* rb_parser_realloc ( struct parser_params parser,
void *  ptr,
size_t  size 
)

Definition at line 15747 of file parse.y.

VALUE rb_parser_set_yydebug ( VALUE  self,
VALUE  flag 
)

Definition at line 15711 of file parse.y.

NODE* rb_parser_while_loop ( VALUE  vparser,
NODE *  node,
int  chop,
int  split 
)

Definition at line 14718 of file parse.y.

struct kwtable* rb_reserved_word ( const char *  str,
unsigned int  len 
) [read]

Definition at line 15635 of file parse.y.

static int rb_str_symname_type ( VALUE  name,
unsigned int  allowed_atttset 
) [static]

Definition at line 15014 of file parse.y.

VALUE rb_sym_all_symbols ( void   ) 

Definition at line 15316 of file parse.y.

int rb_symname_p ( const char *  name  ) 

Definition at line 14896 of file parse.y.

static void reduce_nodes_gen ( struct parser_params parser,
NODE **  body 
) [static]

Definition at line 13815 of file parse.y.

static VALUE reg_compile_gen ( struct parser_params parser,
VALUE  str,
int  options 
) [static]

Definition at line 14657 of file parse.y.

static int reg_fragment_check_gen ( struct parser_params parser,
VALUE  str,
int  options 
) [static]

Definition at line 14562 of file parse.y.

static void reg_fragment_setenc_gen ( struct parser_params parser,
VALUE  str,
int  options 
) [static]

Definition at line 14523 of file parse.y.

static NODE* reg_named_capture_assign_gen ( struct parser_params parser,
VALUE  regexp,
NODE *  match 
) [static]

Definition at line 14625 of file parse.y.

static int reg_named_capture_assign_iter ( const OnigUChar name,
const OnigUChar name_end,
int  back_num,
int *  back_refs,
OnigRegex  regex,
void *  arg0 
) [static]

Definition at line 14585 of file parse.y.

static ID register_symid ( ID  id,
const char *  name,
long  len,
rb_encoding *  enc 
) [static]

Definition at line 15024 of file parse.y.

static ID register_symid_str ( ID  id,
VALUE  str 
) [static]

Definition at line 15031 of file parse.y.

static NODE* remove_begin ( NODE *  node  )  [static]

Definition at line 13805 of file parse.y.

static NODE* ret_args_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 14094 of file parse.y.

static void set_file_encoding ( struct parser_params parser,
const char *  str,
const char *  send 
) [static]

Definition at line 11568 of file parse.y.

static ID shadowing_lvar_gen ( struct parser_params parser,
ID  name 
) [static]

Definition at line 13443 of file parse.y.

static int simple_re_meta ( int  c  )  [inline, static]

Definition at line 10793 of file parse.y.

static NODE* splat_array ( NODE *  node  )  [static]

Definition at line 13601 of file parse.y.

else switch ( nd_type(node  ) 

Definition at line 8693 of file parse.y.

References nd_type, NEW_ATTRASGN, NODE_SELF, and tASET.

Referenced by dump_node().

static int sym_check_asciionly ( VALUE  str  )  [static]

Definition at line 15040 of file parse.y.

static int symbols_i ( VALUE  sym,
ID  value,
VALUE  ary 
) [static]

Definition at line 15293 of file parse.y.

static int token_info_get_column ( struct parser_params parser,
const char *  token 
) [static]

Definition at line 9929 of file parse.y.

References nd_type, NODE_PRELUDE, and TypedData_Get_Struct.

static int token_info_has_nonspaces ( struct parser_params parser,
const char *  token 
) [static]

Definition at line 9943 of file parse.y.

static void token_info_pop ( struct parser_params parser,
const char *  token 
) [static]

Definition at line 9973 of file parse.y.

References tDOT2.

static void token_info_push ( struct parser_params parser,
const char *  token 
) [static]

Definition at line 9956 of file parse.y.

References NEW_OPT_N.

static int value_expr_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13640 of file parse.y.

static void void_expr_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13702 of file parse.y.

static void void_stmts_gen ( struct parser_params parser,
NODE *  node 
) [static]

Definition at line 13791 of file parse.y.

static void warn_unless_e_option ( struct parser_params parser,
NODE *  node,
const char *  str 
) [static]

Definition at line 13927 of file parse.y.

static void warn_unused_var ( struct parser_params parser,
struct local_vars local 
) [static]

Definition at line 14312 of file parse.y.

static void warning_unless_e_option ( struct parser_params parser,
NODE *  node,
const char *  str 
) [static]

Definition at line 13933 of file parse.y.

static NODE* yycompile ( struct parser_params parser,
VALUE  fname,
int  line 
) [static]

Definition at line 10165 of file parse.y.

static VALUE yycompile0 ( VALUE  arg  )  [static]

Definition at line 10105 of file parse.y.

References rb_ascii8bit_encoding(), and rb_enc_symname_p().

static int yylex ( void *  lval,
void *  p 
) [static]

Definition at line 12926 of file parse.y.


Variable Documentation

top_compstmt __pad0__

Definition at line 5673 of file parse.y.

Definition at line 9094 of file parse.y.

numeric __pad101__ = dsym_node($2)

Definition at line 9096 of file parse.y.

user_variable __pad102__

Definition at line 9121 of file parse.y.

keyword_variable __pad103__

Definition at line 9130 of file parse.y.

var_ref __pad104__

Definition at line 9137 of file parse.y.

var_lhs __pad105__

Definition at line 9160 of file parse.y.

backref __pad106__

Definition at line 9160 of file parse.y.

superclass __pad107__

Definition at line 9187 of file parse.y.

f_arg __pad108__

Definition at line 9394 of file parse.y.

f_kw __pad109__

Definition at line 9394 of file parse.y.

block_command __pad10__

Definition at line 6128 of file parse.y.

f_block_kw __pad110__ = assignable($1, $2) NEW_KW_ARG(0, $$)

Definition at line 9421 of file parse.y.

f_block_kwarg __pad111__ = assignable($1, $2) NEW_KW_ARG(0, $$)

Definition at line 9433 of file parse.y.

Definition at line 9448 of file parse.y.

kwrest_mark __pad113__

Definition at line 9473 of file parse.y.

f_kwrest __pad114__

Definition at line 9495 of file parse.y.

f_opt __pad115__ = $2

Definition at line 9496 of file parse.y.

f_block_opt __pad116__ = assignable($1, $3) NEW_OPT_ARG(0, $$)

Definition at line 9509 of file parse.y.

f_block_optarg __pad117__ = assignable($1, $3) NEW_OPT_ARG(0, $$)

Definition at line 9521 of file parse.y.

Definition at line 9536 of file parse.y.

restarg_mark __pad119__

Definition at line 9560 of file parse.y.

fcall __pad11__ = ruby_sourceline

Definition at line 6140 of file parse.y.

f_rest_arg __pad120__

Definition at line 9584 of file parse.y.

blkarg_mark __pad121__ = $2

Definition at line 9588 of file parse.y.

f_block_arg __pad122__

Definition at line 9612 of file parse.y.

opt_f_block_arg __pad123__ = $2

Definition at line 9618 of file parse.y.

singleton __pad124__

Definition at line 9618 of file parse.y.

assoc_list __pad125__

Definition at line 9676 of file parse.y.

assocs __pad126__

Definition at line 9687 of file parse.y.

assoc __pad127__

Definition at line 9687 of file parse.y.

operation __pad128__

Definition at line 9687 of file parse.y.

operation2 __pad129__

Definition at line 9743 of file parse.y.

command __pad12__

Definition at line 6166 of file parse.y.

operation3 __pad130__

Definition at line 9748 of file parse.y.

dot_or_colon __pad131__

Definition at line 9760 of file parse.y.

opt_terms __pad132__

Definition at line 9764 of file parse.y.

Definition at line 9768 of file parse.y.

rparen __pad134__

Definition at line 9771 of file parse.y.

rbracket __pad135__

Definition at line 9774 of file parse.y.

trailer __pad136__

Definition at line 9778 of file parse.y.

terms __pad137__

Definition at line 9783 of file parse.y.

Definition at line 9787 of file parse.y.

mlhs __pad13__

Definition at line 6274 of file parse.y.

Definition at line 6285 of file parse.y.

mlhs_item __pad15__

Definition at line 6285 of file parse.y.

Definition at line 6393 of file parse.y.

Definition at line 6393 of file parse.y.

mlhs_node __pad18__

Definition at line 6421 of file parse.y.

Definition at line 6421 of file parse.y.

top_stmts __pad1__ = $1

Definition at line 5682 of file parse.y.

cname __pad20__

Definition at line 6590 of file parse.y.

cpath __pad21__

Definition at line 6606 of file parse.y.

fname __pad22__

Definition at line 6627 of file parse.y.

fsym __pad23__ = $1

Definition at line 6635 of file parse.y.

fitem __pad24__

Definition at line 6655 of file parse.y.

Definition at line 6666 of file parse.y.

Definition at line 6671 of file parse.y.

reswords __pad27__

Definition at line 6711 of file parse.y.

arg __pad28__

Definition at line 6730 of file parse.y.

arg_value __pad29__

Definition at line 7127 of file parse.y.

top_stmt __pad2__

Definition at line 5715 of file parse.y.

aref_args __pad30__

Definition at line 7134 of file parse.y.

paren_args __pad31__

Definition at line 7141 of file parse.y.

opt_paren_args __pad32__

Definition at line 7167 of file parse.y.

opt_call_args __pad33__

Definition at line 7175 of file parse.y.

call_args __pad34__

Definition at line 7175 of file parse.y.

command_args __pad35__ = NEW_LIST($1)

Definition at line 7201 of file parse.y.

block_arg __pad36__

Definition at line 7252 of file parse.y.

opt_block_arg __pad37__

Definition at line 7262 of file parse.y.

Definition at line 7262 of file parse.y.

mrhs __pad39__

Definition at line 7318 of file parse.y.

compstmt __pad3__

Definition at line 5770 of file parse.y.

primary __pad40__

Definition at line 7318 of file parse.y.

primary_value __pad41__

Definition at line 7318 of file parse.y.

k_begin __pad42__

Definition at line 7840 of file parse.y.

k_if __pad43__

Definition at line 7846 of file parse.y.

k_unless __pad44__

Definition at line 7852 of file parse.y.

k_while __pad45__

Definition at line 7858 of file parse.y.

k_until __pad46__

Definition at line 7864 of file parse.y.

k_case __pad47__

Definition at line 7870 of file parse.y.

k_for __pad48__

Definition at line 7876 of file parse.y.

k_class __pad49__

Definition at line 7882 of file parse.y.

stmts __pad4__ = $1

Definition at line 5779 of file parse.y.

k_module __pad50__

Definition at line 7888 of file parse.y.

k_def __pad51__

Definition at line 7894 of file parse.y.

then __pad52__

Definition at line 7910 of file parse.y.

Definition at line 7931 of file parse.y.

if_tail __pad54__

Definition at line 7939 of file parse.y.

opt_else __pad55__

Definition at line 7945 of file parse.y.

Definition at line 7956 of file parse.y.

f_marg __pad57__

Definition at line 7964 of file parse.y.

Definition at line 7964 of file parse.y.

f_margs __pad59__

Definition at line 7988 of file parse.y.

stmt_or_begin __pad5__

Definition at line 5812 of file parse.y.

block_args_tail __pad60__

Definition at line 7988 of file parse.y.

opt_block_args_tail __pad61__

Definition at line 7988 of file parse.y.

block_param __pad62__

Definition at line 7988 of file parse.y.

opt_block_param __pad63__

Definition at line 7988 of file parse.y.

block_param_def __pad64__

Definition at line 8179 of file parse.y.

opt_bv_decl __pad65__

Definition at line 8207 of file parse.y.

Definition at line 8222 of file parse.y.

Definition at line 8242 of file parse.y.

lambda __pad68__

Definition at line 8252 of file parse.y.

f_larglist __pad69__

Definition at line 8276 of file parse.y.

command_asgn __pad6__

Definition at line 6049 of file parse.y.

lambda_body __pad70__

Definition at line 8294 of file parse.y.

do_block __pad71__

Definition at line 8304 of file parse.y.

block_call __pad72__ = ruby_sourceline

Definition at line 8310 of file parse.y.

method_call __pad73__

Definition at line 8376 of file parse.y.

brace_block __pad74__

Definition at line 8489 of file parse.y.

case_body __pad75__ = ruby_sourceline

Definition at line 8495 of file parse.y.

opt_rescue __pad76__

Definition at line 8553 of file parse.y.

exc_list __pad77__

Definition at line 8572 of file parse.y.

exc_var __pad78__

Definition at line 8586 of file parse.y.

opt_ensure __pad79__

Definition at line 8598 of file parse.y.

expr __pad7__

Definition at line 6076 of file parse.y.

literal __pad80__

Definition at line 8610 of file parse.y.

strings __pad81__

Definition at line 8621 of file parse.y.

string __pad82__

Definition at line 8628 of file parse.y.

Definition at line 8655 of file parse.y.

Definition at line 8677 of file parse.y.

Definition at line 8742 of file parse.y.

word_list __pad86__

Definition at line 8766 of file parse.y.

word __pad87__

Definition at line 8784 of file parse.y.

symbol_list __pad88__

Definition at line 8821 of file parse.y.

qwords __pad89__

Definition at line 8847 of file parse.y.

expr_value __pad8__

Definition at line 6076 of file parse.y.

qsymbols __pad90__

Definition at line 8866 of file parse.y.

qword_list __pad91__

Definition at line 8885 of file parse.y.

qsym_list __pad92__

Definition at line 8903 of file parse.y.

string_contents __pad93__

Definition at line 8925 of file parse.y.

xstring_contents __pad94__

Definition at line 8943 of file parse.y.

regexp_contents __pad95__

Definition at line 8961 of file parse.y.

string_content __pad96__

Definition at line 8998 of file parse.y.

string_dvar __pad97__

Definition at line 9046 of file parse.y.

symbol __pad98__

Definition at line 9073 of file parse.y.

sym __pad99__ = $2

Definition at line 9079 of file parse.y.

command_call __pad9__

Definition at line 6118 of file parse.y.

Definition at line 7141 of file parse.y.

top_stmt bodystmt = NEW_BEGIN(0)

Definition at line 5732 of file parse.y.

Definition at line 8222 of file parse.y.

case_body cases

Definition at line 8495 of file parse.y.

block_command cmd_brace_block

Definition at line 6128 of file parse.y.

fixup_nodes& deferred_nodes

Definition at line 5679 of file parse.y.

Definition at line 6661 of file parse.y.

Definition at line 9448 of file parse.y.

Definition at line 7988 of file parse.y.

Definition at line 9473 of file parse.y.

f_margs f_marg_list

Definition at line 7988 of file parse.y.

Definition at line 9560 of file parse.y.

struct symbols global_symbols [static]

Referenced by parser_newtok(), and parser_tokspace().

const char id_type_names[][9] [static]
Initial value:
 {
    "LOCAL",
    "INSTANCE",
    "",                         
    "GLOBAL",
    "ATTRSET",
    "CONST",
    "CLASS",
    "JUNK",
}

Definition at line 13496 of file parse.y.

<num> k_end = ruby_sourceline

Definition at line 7900 of file parse.y.

lex_state = EXPR_BEG

Definition at line 9005 of file parse.y.

Definition at line 9004 of file parse.y.

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

Definition at line 6060 of file parse.y.

NODE* list

Definition at line 8689 of file parse.y.

struct magic_comment magic_comments[] [static]
Initial value:

Definition at line 11433 of file parse.y.

Definition at line 6285 of file parse.y.

Definition at line 6421 of file parse.y.

const char* name

Definition at line 14760 of file parse.y.

nd_args = $2

Definition at line 6172 of file parse.y.

nd_next = $2

Definition at line 9389 of file parse.y.

<'{lex_state=EXPR_BEG;command_start=TRUE;}expr_valueterm{$$=$3;}|errorterm{yyerrok;$$=0;};f_arglist:'('f_argsrparen{$$=$2;lex_state=EXPR_BEG;command_start=TRUE;}|f_argsterm{$$=$1;lex_state=EXPR_BEG;command_start=TRUE;};args_tail:f_kwarg','f_kwrestopt_f_block_arg{$$=new_args_tail($1,$3,$4);}|f_kwargopt_f_block_arg{$$=new_args_tail($1,Qnone,$2);}|f_kwrestopt_f_block_arg{$$=new_args_tail(Qnone,$1,$2);}|f_block_arg{$$=new_args_tail(Qnone,Qnone,$1);};opt_args_tail:','args_tail{$$=$2;}|{$$=new_args_tail(Qnone,Qnone,Qnone);};f_args:f_arg','f_optarg','f_rest_argopt_args_tail{$$=new_args($1,$3,$5,Qnone,$6);}|f_arg','f_optarg','f_rest_arg','f_argopt_args_tail{$$=new_args($1,$3,$5,$7,$8);}|f_arg','f_optargopt_args_tail{$$=new_args($1,$3,Qnone,Qnone,$4);}|f_arg','f_optarg','f_argopt_args_tail{$$=new_args($1,$3,Qnone,$5,$6);}|f_arg','f_rest_argopt_args_tail{$$=new_args($1,Qnone,$3,Qnone,$4);}|f_arg','f_rest_arg','f_argopt_args_tail{$$=new_args($1,Qnone,$3,$5,$6);}|f_argopt_args_tail{$$=new_args($1,Qnone,Qnone,Qnone,$2);}|f_optarg','f_rest_argopt_args_tail{$$=new_args(Qnone,$1,$3,Qnone,$4);}|f_optarg','f_rest_arg','f_argopt_args_tail{$$=new_args(Qnone,$1,$3,$5,$6);}|f_optargopt_args_tail{$$=new_args(Qnone,$1,Qnone,Qnone,$2);}|f_optarg','f_argopt_args_tail{$$=new_args(Qnone,$1,Qnone,$3,$4);}|f_rest_argopt_args_tail{$$=new_args(Qnone,Qnone,$1,Qnone,$2);}|f_rest_arg','f_argopt_args_tail{$$=new_args(Qnone,Qnone,$1,$3,$4);}|args_tail{$$=new_args(Qnone,Qnone,Qnone,Qnone,$1);}|{$$=new_args_tail(Qnone,Qnone,Qnone);$$=new_args(Qnone,Qnone,Qnone,Qnone,$$);};f_bad_arg:tCONSTANT{yyerror("formalargumentcannotbeaconstant");$$=0;}|tIVAR{yyerror("formalargumentcannotbeaninstancevariable");$$=0;}|tGVAR{yyerror("formalargumentcannotbeaglobalvariable");$$=0;}|tCVAR{yyerror("formalargumentcannotbeaclassvariable");$$=0;};f_norm_arg:f_bad_arg|tIDENTIFIER{formal_argument(get_id($1));$$=$1;};f_arg_item:f_norm_arg{arg_var(get_id($1));$$=NEW_ARGS_AUX($1,1);}|tLPARENf_margsrparen{IDtid=internal_id();arg_var(tid);if(dyna_in_block()){$2-> nd_value = NEW_DVAR(tid)

Definition at line 9383 of file parse.y.

NODE* node = $2

Definition at line 8567 of file parse.y.

struct { ... } op_tbl[] [static]

Referenced by parser_str_new(), and parser_tokspace().

Definition at line 8214 of file parse.y.

static const rb_data_type_t parser_data_type [static]
Initial value:
 {
    "parser",
    {
        parser_mark,
        parser_free,
        parser_memsize,
    },
}

Definition at line 10225 of file parse.y.

NODE * prev
const unsigned int ruby_global_name_punct_bits[]
Initial value:

Definition at line 10961 of file parse.y.

string string1

Definition at line 8628 of file parse.y.

word symbols

Definition at line 8784 of file parse.y.

struct st_hash_type symhash [static]
Initial value:

Definition at line 14800 of file parse.y.

Definition at line 6601 of file parse.y.

trailer term

Definition at line 9778 of file parse.y.

ID token

Definition at line 14759 of file parse.y.

Definition at line 6671 of file parse.y.


Generated on 18 May 2020 for Ruby by  doxygen 1.6.1