mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-compiler: improve NODE_REGX parser dump to use dump_str
Replace manual pattern parsing with dump_str to properly handle both simple and dynamic regex patterns. This provides consistent output format for literal strings and interpolated expressions. Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -649,7 +649,8 @@ struct mrb_ast_dsym_node {
|
||||
|
||||
#define XSTR_NODE_LIST(n) (xstr_node(n)->list)
|
||||
#define REGX_NODE_LIST(n) (regx_node(n)->list)
|
||||
#define REGX_NODE_OPTIONS(n) (regx_node(n)->options)
|
||||
#define REGX_NODE_FLAGS(n) (regx_node(n)->flags)
|
||||
#define REGX_NODE_ENCODING(n) (regx_node(n)->encoding)
|
||||
#define HEREDOC_NODE_NAME(n) (heredoc_node(n)->name)
|
||||
#define DSYM_NODE_LIST(n) (dsym_node(n)->list)
|
||||
|
||||
|
||||
@@ -8214,16 +8214,16 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
|
||||
case NODE_REGX:
|
||||
printf("NODE_REGX:\n");
|
||||
dump_recur(mrb, tree->car, offset+1);
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("tail: %s\n", (char*)tree->cdr->cdr->car);
|
||||
if (tree->cdr->cdr->cdr->car) {
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("opt: %s\n", (char*)tree->cdr->cdr->cdr->car);
|
||||
if (REGX_NODE_LIST(tree)) {
|
||||
dump_str(mrb, REGX_NODE_LIST(tree), offset+1, lineno);
|
||||
}
|
||||
if (tree->cdr->cdr->cdr->cdr) {
|
||||
if (REGX_NODE_FLAGS(tree)) {
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("enc: %s\n", (char*)tree->cdr->cdr->cdr->cdr);
|
||||
printf("flags: %s\n", REGX_NODE_FLAGS(tree));
|
||||
}
|
||||
if (REGX_NODE_ENCODING(tree)) {
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("encoding: %s\n", REGX_NODE_ENCODING(tree));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -15043,16 +15043,16 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
|
||||
case NODE_REGX:
|
||||
printf("NODE_REGX:\n");
|
||||
dump_recur(mrb, tree->car, offset+1);
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("tail: %s\n", (char*)tree->cdr->cdr->car);
|
||||
if (tree->cdr->cdr->cdr->car) {
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("opt: %s\n", (char*)tree->cdr->cdr->cdr->car);
|
||||
if (REGX_NODE_LIST(tree)) {
|
||||
dump_str(mrb, REGX_NODE_LIST(tree), offset+1, lineno);
|
||||
}
|
||||
if (tree->cdr->cdr->cdr->cdr) {
|
||||
if (REGX_NODE_FLAGS(tree)) {
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("enc: %s\n", (char*)tree->cdr->cdr->cdr->cdr);
|
||||
printf("flags: %s\n", REGX_NODE_FLAGS(tree));
|
||||
}
|
||||
if (REGX_NODE_ENCODING(tree)) {
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("encoding: %s\n", REGX_NODE_ENCODING(tree));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user