--- l2_spec_parse.y 2001/11/08 09:28:35 1.3
+++ l2_spec_parse.y 2001/11/08 21:58:00 1.4
@@ -51,6 +51,10 @@
do { l2_env_errorinfo(CTX->env, L2_ERR_ARG, "%s", msg); \
CTX->rv = L2_ERR_ARG; } while (0)
#define YYERROR_VERBOSE
+
+/* scanner state transition */
+extern void l2_spec_scan_push(l2_spec_ctx_t *, const char *state);
+extern void l2_spec_scan_pop(l2_spec_ctx_t *);
%}
/* parser options */
@@ -75,6 +79,7 @@
/* list of scanner tokens */
%token <cpValue> T_ID
+%token <cpValue> T_PARAM
%token <cpValue> T_STRING
%token T_OP_ARROW
@@ -221,9 +226,9 @@
/* channel parameter */
channel_param
- : T_ID '=' T_STRING {
- if ((CTX->rv = l2_channel_configure(CTX->chTmp, "%s=\"%s\"", $1, $3)) != L2_OK) {
- l2_env_errorinfo(CTX->env, CTX->rv, "failed to configure channel with '%s=\"%s\"'", $1, $3);
+ : T_ID '=' { l2_spec_scan_push(CTX, "SS_PARAM"); } T_PARAM { l2_spec_scan_pop(CTX); } {
+ if ((CTX->rv = l2_channel_configure(CTX->chTmp, "%s=\"%s\"", $1, $4)) != L2_OK) {
+ l2_env_errorinfo(CTX->env, CTX->rv, "failed to configure channel with '%s=\"%s\"'", $1, $4);
YYERROR;
}
}
|