}
-/*----------------------------------.
-| Parse what comes after %skeleton. |
-`----------------------------------*/
-void
-parse_skel_decl (void)
+/*---------------------------------.
+| Parse a double quoted parameter. |
+`---------------------------------*/
+
+static const char *
+parse_dquoted_param (const char *from)
{
- /* Complete with parse_dquoted_param () on the CVS branch 1.29. */
+ struct obstack param_obstack;
+ const char *param = NULL;
+ int c;
+
+ obstack_init (¶m_obstack);
+ c = skip_white_space ();
+
+ if (c != '"')
+ {
+ complain (_("invalid %s declaration"), from);
+ ungetc (c, finput);
+ skip_to_char ('%');
+ return NULL;
+ }
+
+ for (;;)
+ {
+ if (literalchar (NULL, &c, '\"'))
+ obstack_1grow (¶m_obstack, c);
+ else
+ break;
+ }
+
+ obstack_1grow (¶m_obstack, '\0');
+ param = obstack_finish (¶m_obstack);
+
+ if (c != '"' || strlen (param) == 0)
+ {
+ complain (_("invalid %s declaration"), from);
+ if (c != '"')
+ ungetc (c, finput);
+ skip_to_char ('%');
+ return NULL;
+ }
+
+ return param;
}
-/*---------------------------------------.
-| Parse what comes after %skeleton_path. |
-`---------------------------------------*/
+/*----------------------------------.
+| Parse what comes after %skeleton. |
+`----------------------------------*/
-void
-parse_include_decl (void)
+static void
+parse_skel_decl (void)
{
- /* Complete with parse_dquoted_param () on the CVS branch 1.29. */
+ skeleton = parse_dquoted_param ("%skeleton");
}
/*----------------------------------------------------------------.
parse_skel_decl ();
break;
- case tok_include:
- parse_include_decl ();
- break;
-
case tok_noop:
break;
{
int c;
int count;
- char buf[4096];
/* offset is always 0 if parser has already popped the stack pointer */
if (semantic_parser)
rule_table[ruleno].lhs = p->sym->value;
rule_table[ruleno].rhs = itemno;
rule_table[ruleno].line = p->line;
+ rule_table[ruleno].useful = TRUE;
p = p->next;
while (p && p->sym)
}
ritem[itemno] = 0;
+
+ if (trace_flag)
+ ritem_print (stderr);
}
\f
/*-------------------------------------------------------------------.
/* Assign the symbols their symbol numbers. Write #defines for the
token symbols into FDEFINES if requested. */
packsymbols ();
- symbols_output ();
/* Convert the grammar into the format described in gram.h. */
packgram ();
/* Output the headers. */