summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/webidl-parser.y12
-rw-r--r--test/data/bindings/blankidl.bnd1
-rw-r--r--test/data/bindings/emptyidl.bnd1
-rw-r--r--test/data/idl/blank.idl4
-rw-r--r--test/data/idl/empty.idl0
5 files changed, 15 insertions, 3 deletions
diff --git a/src/webidl-parser.y b/src/webidl-parser.y
index 7425a21..db10ab7 100644
--- a/src/webidl-parser.y
+++ b/src/webidl-parser.y
@@ -114,7 +114,13 @@ int webidl_wrap()
%%
- /* [1] start with definitions */
+ /* [1] altered from original grammar to be left recusive, avoid reduce/reduce
+ * conficts and have an error term.
+ *
+ * By omitting the empty term from here reduce/reduce conficts are removed as
+ * both ExtendedAttributeList and Definition (by way of Exception) can end
+ * up with an empty term anyhow.
+ */
Definitions:
ExtendedAttributeList Definition
|
@@ -183,14 +189,14 @@ PartialInterface:
TOK_INTERFACE TOK_IDENTIFIER '{' InterfaceMembers '}' ';'
;
- /* [9] */
+ /* [9] slightly altered from original grammar to be left recursive */
InterfaceMembers:
/* empty */
{
$$ = NULL;
}
|
- ExtendedAttributeList InterfaceMember InterfaceMembers
+ InterfaceMembers ExtendedAttributeList InterfaceMember
{
$$ = NULL;
}
diff --git a/test/data/bindings/blankidl.bnd b/test/data/bindings/blankidl.bnd
new file mode 100644
index 0000000..dfd7a4a
--- /dev/null
+++ b/test/data/bindings/blankidl.bnd
@@ -0,0 +1 @@
+webidlfile "blank.idl";
diff --git a/test/data/bindings/emptyidl.bnd b/test/data/bindings/emptyidl.bnd
new file mode 100644
index 0000000..e746325
--- /dev/null
+++ b/test/data/bindings/emptyidl.bnd
@@ -0,0 +1 @@
+webidlfile "empty.idl";
diff --git a/test/data/idl/blank.idl b/test/data/idl/blank.idl
new file mode 100644
index 0000000..4661728
--- /dev/null
+++ b/test/data/idl/blank.idl
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/test/data/idl/empty.idl b/test/data/idl/empty.idl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/data/idl/empty.idl