diff options
| author | Quentin Young <qlyoung@cumulusnetworks.com> | 2016-08-03 19:22:27 +0000 |
|---|---|---|
| committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2016-08-03 19:22:27 +0000 |
| commit | 6ce82b63cd35eac37a4ddf1d0253342d5160b7af (patch) | |
| tree | 87f5037429d403bbc2ae52d81c3e9d0f124b53aa /lib/grammar_sandbox.c | |
| parent | 54431328fc4c0e0a9e0582ece812d244995633da (diff) | |
lib: Implement status variable
Matcher now keeps track of why it failed
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'lib/grammar_sandbox.c')
| -rw-r--r-- | lib/grammar_sandbox.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/grammar_sandbox.c b/lib/grammar_sandbox.c index c53811e062..0eb8d69cee 100644 --- a/lib/grammar_sandbox.c +++ b/lib/grammar_sandbox.c @@ -77,9 +77,11 @@ DEFUN (grammar_test_match, "attempt to match input on DFA\n" "command to match") { + const char *line = argv_concat(argv, argc, 0); + struct list *argvv = NULL; - const char *command = argv_concat(argv, argc, 0); - struct cmd_element *element = match_command (nodegraph, command, &argvv); + struct cmd_element *element = NULL; + enum matcher_rv result = match_command (nodegraph, line, &argvv, &element); if (element) { fprintf(stderr, "Matched: %s\n", element->string); @@ -89,8 +91,20 @@ DEFUN (grammar_test_match, fprintf(stderr, "%s -- %s\n", gn->text, gn->arg); } else { - fprintf(stderr, "Returned NULL\n"); - return CMD_SUCCESS; + switch (result) { + case MATCHER_NO_MATCH: + fprintf(stderr, "%% Unknown command\n"); + break; + case MATCHER_INCOMPLETE: + fprintf(stderr, "%% Incomplete command\n"); + break; + case MATCHER_AMBIGUOUS: + fprintf(stderr, "%% Ambiguous command\n"); + break; + default: + fprintf(stderr, "%% Unknown error\n"); + break; + } } return CMD_SUCCESS; |
