| T_OP_UNARY word { $$ = ap_expr_unary_op_make( $1, $2, ctx); }
| word T_OP_BINARY word { $$ = ap_expr_binary_op_make($2, $1, $3, ctx); }
| '(' expr ')' { $$ = $2; }
+ | T_ERROR { YYABORT; }
;
comparison: word T_OP_EQ word { $$ = ap_expr_make(op_EQ, $1, $3, ctx); }
%%
-void yyerror(ap_expr_parse_ctx_t *ctx, char *s)
+void yyerror(ap_expr_parse_ctx_t *ctx, const char *s)
{
/* s is allocated on the stack */
ctx->error = apr_pstrdup(ctx->ptemp, s);
/* flex/bison functions */
int ap_expr_yyparse(ap_expr_parse_ctx_t *context);
-void ap_expr_yyerror(ap_expr_parse_ctx_t *context, char *err);
+void ap_expr_yyerror(ap_expr_parse_ctx_t *context, const char *err);
int ap_expr_yylex_init(void **scanner);
int ap_expr_yylex_destroy(void *scanner);
void ap_expr_yyset_extra(ap_expr_parse_ctx_t *context, void *scanner);