diff options
Diffstat (limited to 'internal/parse.h')
| -rw-r--r-- | internal/parse.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/internal/parse.h b/internal/parse.h index e0c81f4f96..8e04664ae8 100644 --- a/internal/parse.h +++ b/internal/parse.h @@ -13,11 +13,15 @@ #include "internal/static_assert.h" // The default parser to use for Ruby code. -// 0: parse.y -// 1: Prism -#ifndef RB_DEFAULT_PARSER -#define RB_DEFAULT_PARSER 1 -#endif +typedef enum { + RB_DEFAULT_PARSER_PARSE_Y, + RB_DEFAULT_PARSER_PRISM, +} ruby_default_parser_enum; + +ruby_default_parser_enum rb_ruby_default_parser(void); +void rb_ruby_default_parser_set(ruby_default_parser_enum parser); + +#define rb_ruby_prism_p() (rb_ruby_default_parser() == RB_DEFAULT_PARSER_PRISM) #ifdef UNIVERSAL_PARSER #define rb_encoding const void @@ -74,9 +78,11 @@ void rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str); int rb_parser_dvar_defined_ref(struct parser_params*, ID, ID**); ID rb_parser_internal_id(struct parser_params*); -int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int); -int rb_reg_named_capture_assign_iter_impl(struct parser_params *p, const char *s, long len, rb_encoding *enc, NODE **succ_block, const rb_code_location_t *loc); +typedef void (*rb_parser_reg_fragment_error_func)(struct parser_params *, VALUE); +int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int, rb_parser_reg_fragment_error_func); +int rb_reg_named_capture_assign_iter_impl(struct parser_params *p, const char *s, long len, rb_encoding *enc, NODE **succ_block, const rb_code_location_t *loc, rb_parser_assignable_func assignable); int rb_parser_local_defined(struct parser_params *p, ID id, const struct rb_iseq_struct *iseq); +NODE *rb_parser_assignable(struct parser_params *p, ID id, NODE *val, const YYLTYPE *loc); RUBY_SYMBOL_EXPORT_END |
