From a8e67c64aa6932f11fb81d5c3dd7ae613721edb8 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sat, 28 May 2011 13:22:23 +0300 Subject: Accept empty input files. * src/bind-gram.y: Input may be empty. * src/grecs-gram.y: Likewise. * src/meta1-gram.y: Likewise. * tests/empty.at: New test. * tests/Makefile.am: Add new testcase. * tests/testsuite.at: Add new testcase. --- src/bind-gram.y | 17 ++++++++++++++--- src/grecs-gram.y | 17 ++++++++++++++--- src/meta1-gram.y | 17 ++++++++++++++--- 3 files changed, 42 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/bind-gram.y b/src/bind-gram.y index 5acc780..7259e5d 100644 --- a/src/bind-gram.y +++ b/src/bind-gram.y @@ -55,17 +55,28 @@ static struct grecs_value *stmtlist_to_value(struct grecs_node *node); %type value ctlsub %type vallist tag %type vlist ctllist -%type stmt simple block +%type stmt simple block maybe_stmtlist %type stmtlist %% -input : stmtlist +input : maybe_stmtlist { parse_tree = grecs_node_create(grecs_node_root, &grecs_current_locus); parse_tree->v.texttab = grecs_text_table(); - grecs_node_bind(parse_tree, $1.head, 1); + grecs_node_bind(parse_tree, $1, 1); + } + ; + +maybe_stmtlist: + /* empty */ + { + $$ = NULL; + } + | stmtlist + { + $$ = $1.head; } ; diff --git a/src/grecs-gram.y b/src/grecs-gram.y index 3452074..bbe3d5e 100644 --- a/src/grecs-gram.y +++ b/src/grecs-gram.y @@ -51,17 +51,28 @@ static struct grecs_node *parse_tree; %type value %type vallist tag %type values list vlist -%type stmt simple block +%type stmt simple block maybe_stmtlist %type stmtlist %% -input : stmtlist +input : maybe_stmtlist { parse_tree = grecs_node_create(grecs_node_root, &grecs_current_locus); parse_tree->v.texttab = grecs_text_table(); - grecs_node_bind(parse_tree, $1.head, 1); + grecs_node_bind(parse_tree, $1, 1); + } + ; + +maybe_stmtlist: + /* empty */ + { + $$ = NULL; + } + | stmtlist + { + $$ = $1.head; } ; diff --git a/src/meta1-gram.y b/src/meta1-gram.y index 2983221..455c362 100644 --- a/src/meta1-gram.y +++ b/src/meta1-gram.y @@ -43,7 +43,7 @@ extern int yy_flex_debug; %token META1_IDENT %token META1_STRING -%type stmt simple block +%type stmt simple block maybe_stmtlist %type stmtlist %type tag value %type string slist @@ -51,12 +51,23 @@ extern int yy_flex_debug; %type values list %% -input : stmtlist +input : maybe_stmtlist { parse_tree = grecs_node_create(grecs_node_root, &grecs_current_locus); parse_tree->v.texttab = grecs_text_table(); - grecs_node_bind(parse_tree, $1.head, 1); + grecs_node_bind(parse_tree, $1, 1); + } + ; + +maybe_stmtlist: + /* empty */ + { + $$ = NULL; + } + | stmtlist + { + $$ = $1.head; } ; -- cgit v1.2.1