diff --git a/lib/command_lex.l b/lib/command_lex.l index 0cb306b6828d..d76792626313 100644 --- a/lib/command_lex.l +++ b/lib/command_lex.l @@ -26,7 +26,7 @@ #include "command_parse.h" %} -WORD (\-|\+)?[a-z\*][-+_a-zA-Z0-9\*]* +WORD (\-|\+)?[a-z0-9\*][-+_a-zA-Z0-9\*]* IPV4 A\.B\.C\.D IPV4_PREFIX A\.B\.C\.D\/M IPV6 X:X::X:X diff --git a/lib/command_parse.y b/lib/command_parse.y index 43062eb5da97..c920e11380cd 100644 --- a/lib/command_parse.y +++ b/lib/command_parse.y @@ -73,7 +73,7 @@ struct cmd_element *el; struct graph *graph; - struct graph_node *currnode, *startnode; + struct graph_node *currnode; /* pointers to copy of command docstring */ char *docstr_start, *docstr; @@ -91,7 +91,6 @@ /* union types for parsed rules */ %type start -%type sentence_root %type literal_token %type placeholder_token %type simple_token @@ -151,9 +150,7 @@ /* called automatically before yyparse */ %initial-action { /* clear state pointers */ - ctx->currnode = ctx->startnode = NULL; - - ctx->startnode = vector_slot (ctx->graph->nodes, 0); + ctx->currnode = vector_slot (ctx->graph->nodes, 0); /* copy docstring and keep a pointer to the copy */ if (ctx->el->doc) @@ -173,15 +170,15 @@ %% start: - sentence_root cmd_token_seq + cmd_token_seq { // tack on the command element terminate_graph (ctx, ctx->currnode); } -| sentence_root cmd_token_seq placeholder_token '.' '.' '.' +| cmd_token_seq placeholder_token '.' '.' '.' { - if ((ctx->currnode = add_edge_dedup (ctx->currnode, $3)) != $3) - graph_delete_node (ctx->graph, $3); + if ((ctx->currnode = add_edge_dedup (ctx->currnode, $2)) != $2) + graph_delete_node (ctx->graph, $2); ((struct cmd_token *)ctx->currnode->data)->allowrepeat = 1; @@ -194,19 +191,6 @@ start: } ; -sentence_root: WORD -{ - struct graph_node *root = - new_token_node (ctx, WORD_TKN, strdup ($1), doc_next(ctx)); - - if ((ctx->currnode = add_edge_dedup (ctx->startnode, root)) != root) - graph_delete_node (ctx->graph, root); - - free ($1); - $$ = ctx->currnode; -} -; - cmd_token_seq: /* empty */ | cmd_token_seq cmd_token