diff options
Diffstat (limited to 'print-syntax.c')
| -rw-r--r-- | print-syntax.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/print-syntax.c b/print-syntax.c index 3228401..07b3858 100644 --- a/print-syntax.c +++ b/print-syntax.c @@ -26,6 +26,15 @@ print_sentence(const union libparser_sentence *sentence, int indent) indent += 1; break; + case LIBPARSER_SENTENCE_TYPE_ND_ALTERNATION: + printf("("); + print_sentence(sentence->binary.left, indent + 1); + printf(" ?| \n%*.s", indent + 1, ""); + indent = print_sentence(sentence->binary.right, indent + 1); + printf(")"); + indent += 1; + break; + case LIBPARSER_SENTENCE_TYPE_ALTERNATION: printf("("); print_sentence(sentence->binary.left, indent + 1); @@ -49,6 +58,9 @@ print_sentence(const union libparser_sentence *sentence, int indent) indent += 1; break; + case LIBPARSER_SENTENCE_TYPE_ND_OPTIONAL: + printf("?"); + /* fall through */ case LIBPARSER_SENTENCE_TYPE_OPTIONAL: printf("["); indent = print_sentence(sentence->unary.sentence, indent + 1); @@ -56,6 +68,9 @@ print_sentence(const union libparser_sentence *sentence, int indent) indent += 1; break; + case LIBPARSER_SENTENCE_TYPE_ND_REPEATED: + printf("?"); + /* fall through */ case LIBPARSER_SENTENCE_TYPE_REPEATED: printf("{"); indent = print_sentence(sentence->unary.sentence, indent + 1); |
