diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-18 00:08:19 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-18 00:08:19 +0000 |
commit | d1e63172c6ecf2606ff9a947d917117eb6923436 (patch) | |
tree | e1789775c8eb2c828ba119c5cfc510a7f58f82d3 /parse.y | |
parent | 5166f948792af7335e1c2576ac506e3cc73104f2 (diff) | |
download | ruby-d1e63172c6ecf2606ff9a947d917117eb6923436.tar.gz |
parse.y: ripper_lex_state_name
* parse.y (ripper_lex_state_name): represent lex_state as OR-ed
form.
* ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer::Elem#to_a):
lex_state for inspection.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59949 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -568,6 +568,7 @@ RUBY_SYMBOL_EXPORT_BEGIN VALUE rb_parser_reg_compile(struct parser_params* parser, VALUE str, int options); int rb_reg_fragment_setenc(struct parser_params*, VALUE, int); enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int); +VALUE rb_parser_lex_state_name(enum lex_state_e state); void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int); PRINTF_ARGS(void rb_parser_fatal(struct parser_params *parser, const char *fmt, ...), 2, 3); RUBY_SYMBOL_EXPORT_END @@ -9191,6 +9192,12 @@ rb_parser_trace_lex_state(struct parser_params *parser, enum lex_state_e from, return to; } +VALUE +rb_parser_lex_state_name(enum lex_state_e state) +{ + return append_lex_state_name(state, rb_str_new(0, 0)); +} + static void append_bitstack_value(stack_type stack, VALUE mesg) { @@ -11484,6 +11491,11 @@ ripper_value(VALUE self, VALUE obj) } #endif +static VALUE +ripper_lex_state_name(VALUE self, VALUE state) +{ + return rb_parser_lex_state_name(NUM2INT(state)); +} void Init_ripper(void) @@ -11526,6 +11538,8 @@ InitVM_ripper(void) rb_define_singleton_method(Ripper, "dedent_string", parser_dedent_string, 2); rb_define_private_method(Ripper, "dedent_string", parser_dedent_string, 2); + rb_define_singleton_method(Ripper, "lex_state_name", ripper_lex_state_name, 1); + <% @exprs.each do |expr, desc| -%> /* <%=desc%> */ rb_define_const(Ripper, "<%=expr%>", INT2NUM(<%=expr%>)); |