aboutsummaryrefslogtreecommitdiffstats
path: root/print-syntax.c
diff options
context:
space:
mode:
Diffstat (limited to 'print-syntax.c')
-rw-r--r--print-syntax.c15
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);