summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vincent.sanders@collabora.co.uk>2012-09-07 18:04:03 +0100
committerVincent Sanders <vincent.sanders@collabora.co.uk>2012-09-07 18:04:03 +0100
commitc7493cf58c439bb3b9d2cf2cd989d3dc6f7ebb39 (patch)
treeff9c20eaa58515b8eee9aa47f1b8c7a9c7f1762a
parent686b84a6ccd64015c0de4e542504fa44424fb987 (diff)
downloadnsgenbind-c7493cf58c439bb3b9d2cf2cd989d3dc6f7ebb39.tar.gz
nsgenbind-c7493cf58c439bb3b9d2cf2cd989d3dc6f7ebb39.tar.bz2
alter InterfaceMembers to be left recusrsive
Document accurately the changes from the w3c grammar
-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