+ else if (!strcmp (p, "context"))
+ {
+ if (r > 1)
+ {
+ struct lexContext *lc = spec->context;
+ r = execTok (spec, &s, arg_no, arg_start, arg_end,
+ &cmd_str, &cmd_len);
+ p = regxStrz (cmd_str, cmd_len, ptmp);
+#if REGX_DEBUG
+ logf (LOG_DEBUG, "begin context %s", p);
+#endif
+ while (lc && strcmp (p, lc->name))
+ lc = lc->next;
+ if (lc)
+ spec->context_stack[++(spec->context_stack_top)] = lc;
+ else
+ logf (LOG_WARN, "unknown context %s", p);
+
+ }
+ r = execTok (spec, &s, arg_no, arg_start, arg_end,
+ &cmd_str, &cmd_len);
+ }
+ else
+ {
+ logf (LOG_WARN, "bad keyword '%s' after begin", p);
+ }