summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y32
1 files changed, 32 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index ede3a3efb2..7dd3a8a159 100644
--- a/parse.y
+++ b/parse.y
@@ -11,6 +11,9 @@
%{
+#ifndef PARSER_DEBUG
+#define PARSER_DEBUG 0
+#endif
#define YYDEBUG 1
#define YYERROR_VERBOSE 1
#define YYSTACK_USE_ALLOCA 0
@@ -74,6 +77,10 @@ enum lex_state_e {
EXPR_MAX_STATE
};
+#if PARSER_DEBUG
+static const char *lex_state_name(enum lex_state_e state);
+#endif
+
typedef VALUE stack_type;
# define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
@@ -8479,6 +8486,28 @@ id_is_var_gen(struct parser_params *parser, ID id)
}
#endif /* !RIPPER */
+#if PARSER_DEBUG
+static const char *
+lex_state_name(enum lex_state_e state)
+{
+ switch (state) {
+ case EXPR_BEG: return "EXPR_BEG";
+ case EXPR_END: return "EXPR_END";
+ case EXPR_ENDARG: return "EXPR_ENDARG";
+ case EXPR_ENDFN: return "EXPR_ENDFN";
+ case EXPR_ARG: return "EXPR_ARG";
+ case EXPR_CMDARG: return "EXPR_CMDARG";
+ case EXPR_MID: return "EXPR_MID";
+ case EXPR_FNAME: return "EXPR_FNAME";
+ case EXPR_DOT: return "EXPR_DOT";
+ case EXPR_CLASS: return "EXPR_CLASS";
+ case EXPR_VALUE: return "EXPR_VALUE";
+ case EXPR_MAX_STATE: break;
+ }
+ return NULL;
+}
+#endif
+
#ifdef RIPPER
static VALUE
assignable_gen(struct parser_params *parser, VALUE lhs)
@@ -9807,6 +9836,9 @@ Init_sym(void)
(void)nodetype;
(void)nodeline;
+#if PARSER_DEBUG
+ (void)lex_state_name(-1);
+#endif
Init_id();
}