code: function setSideConditions(topSymbol) {
        if (topSymbol === "prefixDecl") {
          state.inPrefixDecl = true;
        } else {
          state.inPrefixDecl = false;
        }
        switch (topSymbol) {
          case "disallowVars":
            state.allowVars = false;
            break;
          case "allowVars":
            state.allowVars = true;
            break;
          case "disallowBnodes":
            state.allowBnodes = false;
            break;
          case "allowBnodes":
            state.allowBnodes = true;
            break;
          case "storeProperty":
            state.storeProperty = true;
            break;
        }
      }
docs: Some fake non-terminals are just there to have side-effect on state - i.e. allow or disallow variables and bnodes in certain non-nesting contexts