@@ -3123,6 +3123,20 @@ static node_t *parse_primary(input_state_t *input, node_t *rule) {
31233123 );
31243124 input -> errnum ++ ;
31253125 }
3126+ if (strncmp (n_p -> data .reference .rvar , "pcc_" , 4 ) == 0 ) {
3127+ print_error (
3128+ "%s:" FMT_LU ":" FMT_LU ": Starting with 'pcc_' in rule variable identifier '%s'\n" ,
3129+ input -> path , (ulong_t )(l + 1 ), (ulong_t )(m + 1 ), n_p -> data .reference .rvar
3130+ );
3131+ input -> errnum ++ ;
3132+ }
3133+ if (strncmp (n_p -> data .reference .rvar , "PCC_" , 4 ) == 0 ) {
3134+ print_error (
3135+ "%s:" FMT_LU ":" FMT_LU ": Starting with 'PCC_' in rule variable identifier '%s'\n" ,
3136+ input -> path , (ulong_t )(l + 1 ), (ulong_t )(m + 1 ), n_p -> data .reference .rvar
3137+ );
3138+ input -> errnum ++ ;
3139+ }
31263140 {
31273141 size_t i ;
31283142 for (i = 0 ; i < rule -> data .rule .rvars .n ; i ++ ) {
@@ -3629,6 +3643,20 @@ static bool_t parse_directive_marker_(input_state_t *input, const char *name, st
36293643 );
36303644 input -> errnum ++ ;
36313645 }
3646+ if (strncmp (output -> p [i ], "pcc_" , 4 ) == 0 ) {
3647+ print_error (
3648+ "%s:" FMT_LU ":" FMT_LU ": Starting with 'pcc_' in marker variable identifier '%s'\n" ,
3649+ input -> path , (ulong_t )(l + 1 ), (ulong_t )(m + 1 ), output -> p [i ]
3650+ );
3651+ input -> errnum ++ ;
3652+ }
3653+ if (strncmp (output -> p [i ], "PCC_" , 4 ) == 0 ) {
3654+ print_error (
3655+ "%s:" FMT_LU ":" FMT_LU ": Starting with 'PCC_' in marker variable identifier '%s'\n" ,
3656+ input -> path , (ulong_t )(l + 1 ), (ulong_t )(m + 1 ), output -> p [i ]
3657+ );
3658+ input -> errnum ++ ;
3659+ }
36323660 }
36333661 }
36343662 }
@@ -6403,6 +6431,79 @@ static bool_t generate(context_t *ctx) {
64036431 "}\n"
64046432 "\n"
64056433 );
6434+ stream__puts (
6435+ & sstream ,
6436+ "MARK_FUNC_AS_USED\n"
6437+ "static pcc_auxil_t pcc_ref_auxil_(pcc_context_t *ctx) {\n"
6438+ " return ctx->auxil;\n"
6439+ "}\n"
6440+ "\n"
6441+ "MARK_FUNC_AS_USED\n"
6442+ "static const char *pcc_ref_capture_0_(pcc_context_t *ctx) {\n"
6443+ " return pcc_get_capture_string(ctx, &(ctx->capt0));\n"
6444+ "}\n"
6445+ "\n"
6446+ "MARK_FUNC_AS_USED\n"
6447+ "static size_t pcc_ref_capture_0s_(pcc_context_t *ctx) {\n"
6448+ " return ctx->pos + ctx->capt0.range.start;\n"
6449+ "}\n"
6450+ "\n"
6451+ "MARK_FUNC_AS_USED\n"
6452+ "static size_t pcc_ref_capture_0e_(pcc_context_t *ctx) {\n"
6453+ " return ctx->pos + ctx->capt0.range.end;\n"
6454+ "}\n"
6455+ "\n"
6456+ "MARK_FUNC_AS_USED\n"
6457+ "static const char *pcc_ref_capture_(pcc_context_t *ctx, pcc_thunk_chunk_t *in, size_t index) {\n"
6458+ " return pcc_get_capture_string(ctx, &(in->capts.p[index]));\n"
6459+ "}\n"
6460+ "\n"
6461+ "MARK_FUNC_AS_USED\n"
6462+ "static size_t pcc_ref_capture_s_(pcc_context_t *ctx, pcc_thunk_chunk_t *in, size_t index) {\n"
6463+ " return ctx->pos + in->capts.p[index].range.start;\n"
6464+ "}\n"
6465+ "\n"
6466+ "MARK_FUNC_AS_USED\n"
6467+ "static size_t pcc_ref_capture_e_(pcc_context_t *ctx, pcc_thunk_chunk_t *in, size_t index) {\n"
6468+ " return ctx->pos + in->capts.p[index].range.end;\n"
6469+ "}\n"
6470+ "\n"
6471+ "MARK_FUNC_AS_USED\n"
6472+ "static const char *pcc_ref_leaf_capture_0_(pcc_context_t *ctx, pcc_thunk_t *in) {\n"
6473+ " return pcc_get_capture_string(ctx, &(in->data.leaf.capt0));\n"
6474+ "}\n"
6475+ "\n"
6476+ "MARK_FUNC_AS_USED\n"
6477+ "static size_t pcc_ref_leaf_capture_0s_(pcc_context_t *ctx, pcc_thunk_t *in) {\n"
6478+ " return ctx->pos + in->data.leaf.capt0.range.start;\n"
6479+ "}\n"
6480+ "\n"
6481+ "MARK_FUNC_AS_USED\n"
6482+ "static size_t pcc_ref_leaf_capture_0e_(pcc_context_t *ctx, pcc_thunk_t *in) {\n"
6483+ " return ctx->pos + in->data.leaf.capt0.range.end;\n"
6484+ "}\n"
6485+ "\n"
6486+ "MARK_FUNC_AS_USED\n"
6487+ "static const char *pcc_ref_leaf_capture_(pcc_context_t *ctx, pcc_thunk_t *in, size_t index) {\n"
6488+ " return pcc_get_capture_string(ctx, in->data.leaf.capts.p[index]);\n"
6489+ "}\n"
6490+ "\n"
6491+ "MARK_FUNC_AS_USED\n"
6492+ "static size_t pcc_ref_leaf_capture_s_(pcc_context_t *ctx, pcc_thunk_t *in, size_t index) {\n"
6493+ " return ctx->pos + in->data.leaf.capts.p[index]->range.start;\n"
6494+ "}\n"
6495+ "\n"
6496+ "MARK_FUNC_AS_USED\n"
6497+ "static size_t pcc_ref_leaf_capture_e_(pcc_context_t *ctx, pcc_thunk_t *in, size_t index) {\n"
6498+ " return ctx->pos + in->data.leaf.capts.p[index]->range.end;\n"
6499+ "}\n"
6500+ "\n"
6501+ "MARK_FUNC_AS_USED\n"
6502+ "static pcc_value_t *pcc_ref_leaf_variable_(pcc_context_t *ctx, pcc_thunk_t *in, size_t index) {\n"
6503+ " return in->data.leaf.values.p[index];\n"
6504+ "}\n"
6505+ "\n"
6506+ );
64066507 {
64076508 size_t i , j , k ;
64086509 for (i = 0 ; i < ctx -> rules .n ; i ++ ) {
@@ -6418,31 +6519,31 @@ static bool_t generate(context_t *ctx) {
64186519 );
64196520 stream__puts (
64206521 & sstream ,
6421- "#define auxil (pcc_ctx->auxil )\n"
6522+ "#define auxil pcc_ref_auxil_ (pcc_ctx)\n"
64226523 "#define " VARNAME_PROGPRED_OUT " (*pcc_out)\n"
64236524 );
64246525 stream__puts (
64256526 & sstream ,
6426- "#define " VARNAME_CAPTURE_PREFIX "0 pcc_get_capture_string (pcc_ctx, &(pcc_ctx->capt0) )\n"
6427- "#define " VARNAME_CAPTURE_PREFIX "0s ((const size_t)( pcc_ctx->pos + pcc_ctx->capt0.range.start) )\n"
6428- "#define " VARNAME_CAPTURE_PREFIX "0e ((const size_t)( pcc_ctx->pos + pcc_ctx->capt0.range.end) )\n"
6527+ "#define " VARNAME_CAPTURE_PREFIX "0 pcc_ref_capture_0_ (pcc_ctx)\n"
6528+ "#define " VARNAME_CAPTURE_PREFIX "0s pcc_ref_capture_0s_( pcc_ctx)\n"
6529+ "#define " VARNAME_CAPTURE_PREFIX "0e pcc_ref_capture_0e_( pcc_ctx)\n"
64296530 );
64306531 k = 0 ;
64316532 while (k < c -> n ) {
64326533 assert (c -> p [k ]-> type == NODE_CAPTURE );
64336534 stream__printf (
64346535 & sstream ,
6435- "#define " VARNAME_CAPTURE_PREFIX FMT_LU " pcc_get_capture_string (pcc_ctx, &( pcc_in->capts.p[ " FMT_LU "]) )\n" ,
6536+ "#define " VARNAME_CAPTURE_PREFIX FMT_LU " pcc_ref_capture_ (pcc_ctx, pcc_in, " FMT_LU ")\n" ,
64366537 (ulong_t )(c -> p [k ]-> data .capture .index + 1 ), (ulong_t )c -> p [k ]-> data .capture .index
64376538 );
64386539 stream__printf (
64396540 & sstream ,
6440- "#define " VARNAME_CAPTURE_PREFIX FMT_LU "s ((const size_t)( pcc_ctx->pos + pcc_in->capts.p[ " FMT_LU "].range.start) )\n" ,
6541+ "#define " VARNAME_CAPTURE_PREFIX FMT_LU "s pcc_ref_capture_s_( pcc_ctx, pcc_in, " FMT_LU ")\n" ,
64416542 (ulong_t )(c -> p [k ]-> data .capture .index + 1 ), (ulong_t )c -> p [k ]-> data .capture .index
64426543 );
64436544 stream__printf (
64446545 & sstream ,
6445- "#define " VARNAME_CAPTURE_PREFIX FMT_LU "e ((const size_t)( pcc_ctx->pos + pcc_in->capts.p[ " FMT_LU "].range.end) )\n" ,
6546+ "#define " VARNAME_CAPTURE_PREFIX FMT_LU "e pcc_ref_capture_e_( pcc_ctx, pcc_in, " FMT_LU ")\n" ,
64466547 (ulong_t )(c -> p [k ]-> data .capture .index + 1 ), (ulong_t )c -> p [k ]-> data .capture .index
64476548 );
64486549 k ++ ;
@@ -6522,41 +6623,41 @@ static bool_t generate(context_t *ctx) {
65226623 );
65236624 stream__puts (
65246625 & sstream ,
6525- "#define auxil (pcc_ctx->auxil )\n"
6626+ "#define auxil pcc_ref_auxil_ (pcc_ctx)\n"
65266627 "#define " VARNAME_ACTION_OUT " (*pcc_out)\n"
65276628 );
65286629 k = 0 ;
65296630 while (k < v -> n ) {
65306631 assert (v -> p [k ]-> type == NODE_REFERENCE );
65316632 stream__printf (
65326633 & sstream ,
6533- "#define %s (*( pcc_in->data.leaf.values.p[ " FMT_LU "] ))\n" ,
6634+ "#define %s (*pcc_ref_leaf_variable_(pcc_ctx, pcc_in, " FMT_LU "))\n" ,
65346635 v -> p [k ]-> data .reference .rvar , (ulong_t )v -> p [k ]-> data .reference .index
65356636 );
65366637 k ++ ;
65376638 }
65386639 stream__puts (
65396640 & sstream ,
6540- "#define " VARNAME_CAPTURE_PREFIX "0 pcc_get_capture_string (pcc_ctx, &( pcc_in->data.leaf.capt0) )\n"
6541- "#define " VARNAME_CAPTURE_PREFIX "0s ((const size_t)( pcc_ctx->pos + pcc_in->data.leaf.capt0.range.start) )\n"
6542- "#define " VARNAME_CAPTURE_PREFIX "0e ((const size_t)( pcc_ctx->pos + pcc_in->data.leaf.capt0.range.end) )\n"
6641+ "#define " VARNAME_CAPTURE_PREFIX "0 pcc_ref_leaf_capture_0_ (pcc_ctx, pcc_in)\n"
6642+ "#define " VARNAME_CAPTURE_PREFIX "0s pcc_ref_leaf_capture_0s_( pcc_ctx, pcc_in)\n"
6643+ "#define " VARNAME_CAPTURE_PREFIX "0e pcc_ref_leaf_capture_0e_( pcc_ctx, pcc_in)\n"
65436644 );
65446645 k = 0 ;
65456646 while (k < c -> n ) {
65466647 assert (c -> p [k ]-> type == NODE_CAPTURE );
65476648 stream__printf (
65486649 & sstream ,
6549- "#define " VARNAME_CAPTURE_PREFIX FMT_LU " pcc_get_capture_string (pcc_ctx, pcc_in->data.leaf.capts.p[ " FMT_LU "] )\n" ,
6650+ "#define " VARNAME_CAPTURE_PREFIX FMT_LU " pcc_ref_leaf_capture_ (pcc_ctx, pcc_in, " FMT_LU ")\n" ,
65506651 (ulong_t )(c -> p [k ]-> data .capture .index + 1 ), (ulong_t )c -> p [k ]-> data .capture .index
65516652 );
65526653 stream__printf (
65536654 & sstream ,
6554- "#define " VARNAME_CAPTURE_PREFIX FMT_LU "s ((const size_t)( pcc_ctx->pos + pcc_in->data.leaf.capts.p[ " FMT_LU "]->range.start) )\n" ,
6655+ "#define " VARNAME_CAPTURE_PREFIX FMT_LU "s pcc_ref_leaf_capture_s_( pcc_ctx, pcc_in, " FMT_LU ")\n" ,
65556656 (ulong_t )(c -> p [k ]-> data .capture .index + 1 ), (ulong_t )c -> p [k ]-> data .capture .index
65566657 );
65576658 stream__printf (
65586659 & sstream ,
6559- "#define " VARNAME_CAPTURE_PREFIX FMT_LU "e ((const size_t)( pcc_ctx->pos + pcc_in->data.leaf.capts.p[ " FMT_LU "]->range.end) )\n" ,
6660+ "#define " VARNAME_CAPTURE_PREFIX FMT_LU "e pcc_ref_leaf_capture_e_( pcc_ctx, pcc_in, " FMT_LU ")\n" ,
65606661 (ulong_t )(c -> p [k ]-> data .capture .index + 1 ), (ulong_t )c -> p [k ]-> data .capture .index
65616662 );
65626663 k ++ ;
0 commit comments