ast 2447 src/extlib.c ScmObj ast; ast 2450 src/extlib.c ast = (ast_scm); ast 2454 src/extlib.c SCM_RESULT = Scm_RegCompFromAST(ast); ast 2466 src/extlib.c ScmObj ast; ast 2469 src/extlib.c ast = (ast_scm); ast 2473 src/extlib.c SCM_RESULT = Scm_RegOptimizeAST(ast); ast 2519 src/gauche.h SCM_EXTERN ScmObj Scm_RegCompFromAST(ScmObj ast); ast 2520 src/gauche.h SCM_EXTERN ScmObj Scm_RegOptimizeAST(ScmObj ast); ast 733 src/regexp.c ScmObj ast = rc1_parse(ctx, TRUE, TRUE); ast 735 src/regexp.c ast = SCM_LIST2(SCM_MAKE_INT(0), Scm_Cons(SCM_SYM_SEQ_UNCASE, ast)); ast 737 src/regexp.c ast = Scm_Cons(SCM_MAKE_INT(0), ast); ast 740 src/regexp.c return ast; ast 791 src/regexp.c static ScmObj rc2_optimize(ScmObj ast, ScmObj rest); ast 827 src/regexp.c static ScmObj rc2_optimize(ScmObj ast, ScmObj rest) ast 830 src/regexp.c if (!SCM_PAIRP(ast)) return ast; ast 831 src/regexp.c type = SCM_CAR(ast); ast 832 src/regexp.c if (SCM_EQ(type, SCM_SYM_COMP)) return ast; ast 836 src/regexp.c SCM_FOR_EACH(sp, SCM_CDR(ast)) { ast 840 src/regexp.c if (SCM_NULLP(sp)) return ast; ast 843 src/regexp.c SCM_FOR_EACH(sp2, SCM_CDR(ast)) { ast 852 src/regexp.c if (SCM_EQ(type, SCM_SYM_REP_BOUND)) seq = SCM_CDDR(ast); ast 853 src/regexp.c else seq = SCM_CDR(ast); ast 855 src/regexp.c if (SCM_EQ(seq, seqo)) return ast; ast 858 src/regexp.c return Scm_Cons(type, Scm_Cons(SCM_CADR(ast), seqo)); ast 904 src/regexp.c ScmObj Scm_RegOptimizeAST(ScmObj ast) ast 906 src/regexp.c return rc2_optimize(ast, SCM_NIL); ast 919 src/regexp.c static void rc3_rec(regcomp_ctx *ctx, ScmObj ast, int lastp, int toplevelp); ast 1018 src/regexp.c static void rc3_rec(regcomp_ctx *ctx, ScmObj ast, int lastp, int toplevelp) ast 1024 src/regexp.c if (!SCM_PAIRP(ast)) { ast 1026 src/regexp.c if (SCM_CHARP(ast)) { ast 1028 src/regexp.c ScmChar ch = SCM_CHAR_VALUE(ast); ast 1042 src/regexp.c if (SCM_CHARSETP(ast)) { ast 1043 src/regexp.c if (SCM_CHARSET_SMALLP(ast)) { ast 1048 src/regexp.c rc3_emit(ctx, rc3_charset_index(rx, ast)); ast 1052 src/regexp.c if (SCM_SYMBOLP(ast)) { ast 1053 src/regexp.c if (SCM_EQ(ast, SCM_SYM_ANY)) { ast 1057 src/regexp.c if (SCM_EQ(ast, SCM_SYM_BOL)) { ast 1061 src/regexp.c if (SCM_EQ(ast, SCM_SYM_EOL)) { ast 1070 src/regexp.c if (SCM_EQ(ast, SCM_SYM_WB)) { ast 1074 src/regexp.c if (SCM_EQ(ast, SCM_SYM_NWB)) { ast 1080 src/regexp.c Scm_Error("internal error in regexp compilation: unrecognized AST item: %S", ast); ast 1084 src/regexp.c type = SCM_CAR(ast); ast 1086 src/regexp.c ScmObj cs = SCM_CDR(ast); ast 1097 src/regexp.c rc3_seq(ctx, SCM_CDR(ast), lastp, toplevelp); ast 1104 src/regexp.c rc3_seq(ctx, SCM_CDR(ast), lastp, toplevelp); ast 1112 src/regexp.c rc3_seq(ctx, SCM_CDR(ast), lastp, toplevelp); ast 1118 src/regexp.c if (SCM_PAIRP(SCM_CDR(ast)) && SCM_NULLP(SCM_CDDR(ast))) { ast 1119 src/regexp.c ScmObj elem = SCM_CADR(ast); ast 1140 src/regexp.c rc3_seq(ctx, SCM_CDR(ast), lastp, toplevelp); ast 1154 src/regexp.c rc3_seq(ctx, SCM_CDR(ast), FALSE, FALSE); ast 1175 src/regexp.c rc3_seq(ctx, SCM_CDR(ast), FALSE, FALSE); ast 1198 src/regexp.c for (clause = SCM_CDR(ast); ast 1256 src/regexp.c SCM_ASSERT(Scm_Length(ast) >= 3 && SCM_INTP(SCM_CADR(ast))); ast 1257 src/regexp.c count = SCM_INT_VALUE(SCM_CADR(ast)); ast 1259 src/regexp.c item = SCM_CDDR(ast); ast 1314 src/regexp.c Scm_Error("internal error in regexp compilation: bad node: %S", ast); ast 1317 src/regexp.c static int is_bol_anchored(ScmObj ast) ast 1320 src/regexp.c if (!SCM_PAIRP(ast)) { ast 1321 src/regexp.c if (SCM_EQ(ast, SCM_SYM_BOL)) return TRUE; ast 1324 src/regexp.c type = SCM_CAR(ast); ast 1327 src/regexp.c if (!SCM_PAIRP(SCM_CDR(ast))) return FALSE; ast 1328 src/regexp.c return is_bol_anchored(SCM_CADR(ast)); ast 1332 src/regexp.c SCM_FOR_EACH(ap, SCM_CDR(ast)) { ast 1341 src/regexp.c static ScmObj rc3(regcomp_ctx *ctx, ScmObj ast) ast 1344 src/regexp.c if (is_bol_anchored(ast)) ctx->rx->flags |= SCM_REGEXP_BOL_ANCHORED; ast 1349 src/regexp.c rc3_rec(ctx, ast, TRUE, TRUE); ast 1354 src/regexp.c rc3_rec(ctx, ast, TRUE, TRUE); ast 1520 src/regexp.c static ScmObj rc_setup_context(regcomp_ctx *ctx, ScmObj ast) ast 1523 src/regexp.c if (!SCM_PAIRP(ast)) { ast 1524 src/regexp.c if (SCM_CHARP(ast)) return ast; ast 1525 src/regexp.c if (SCM_CHARSETP(ast)) { ast 1526 src/regexp.c rc_register_charset(ctx, SCM_CHARSET(ast)); ast 1527 src/regexp.c return ast; ast 1529 src/regexp.c if (SCM_EQ(ast, SCM_SYM_BOL) || SCM_EQ(ast, SCM_SYM_EOL) ast 1530 src/regexp.c || SCM_EQ(ast, SCM_SYM_WB) || SCM_EQ(ast, SCM_SYM_NWB) ast 1531 src/regexp.c || SCM_EQ(ast, SCM_SYM_ANY)) { ast 1532 src/regexp.c return ast; ast 1536 src/regexp.c type = SCM_CAR(ast); ast 1539 src/regexp.c rest = rc_setup_context_seq(ctx, SCM_CDR(ast)); ast 1540 src/regexp.c if (SCM_INT_VALUE(type) == grpno && SCM_EQ(SCM_CDR(ast), rest)) { ast 1541 src/regexp.c return ast; ast 1547 src/regexp.c if (!SCM_CHARSETP(SCM_CDR(ast))) goto badast; ast 1548 src/regexp.c rc_register_charset(ctx, SCM_CHARSET(SCM_CDR(ast))); ast 1549 src/regexp.c return ast; ast 1556 src/regexp.c rest = rc_setup_context_seq(ctx, SCM_CDR(ast)); ast 1557 src/regexp.c if (SCM_EQ(SCM_CDR(ast), rest)) return ast; ast 1561 src/regexp.c if (!SCM_PAIRP(SCM_CDR(ast)) || !SCM_INTP(SCM_CADR(ast)) ast 1562 src/regexp.c || SCM_INT_VALUE(SCM_CADR(ast)) < 0) { ast 1565 src/regexp.c rest = rc_setup_context_seq(ctx, SCM_CDDR(ast)); ast 1566 src/regexp.c if (SCM_EQ(SCM_CDDR(ast), rest)) return ast; ast 1567 src/regexp.c else return Scm_Cons(type, Scm_Cons(SCM_CADR(ast), rest)); ast 1570 src/regexp.c Scm_Error("invalid regexp AST: %S", ast); ast 1599 src/regexp.c ScmObj ast; ast 1613 src/regexp.c ast = rc1(&cctx); ast 1615 src/regexp.c if (flags & SCM_REGEXP_PARSE_ONLY) return ast; ast 1618 src/regexp.c ast = rc2_optimize(ast, SCM_NIL); ast 1621 src/regexp.c return rc3(&cctx, ast); ast 1625 src/regexp.c ScmObj Scm_RegCompFromAST(ScmObj ast) ast 1632 src/regexp.c if (!SCM_PAIRP(ast) || !SCM_INTP(SCM_CAR(ast))) { ast 1634 src/regexp.c ast = SCM_LIST2(SCM_MAKE_INT(0), ast); ast 1636 src/regexp.c ast = rc_setup_context(&cctx, ast); ast 1641 src/regexp.c return rc3(&cctx, ast);