From 148f4dc8c493553d1b1e3ffb12fb7d710bc9a37f Mon Sep 17 00:00:00 2001 From: William Candillon Date: Mon, 25 Feb 2013 15:59:33 +0100 Subject: [PATCH] Improvements in the XQuery parse tree handler API. --- lib/ace/mode/xquery/JSONParseTreeHandler.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/ace/mode/xquery/JSONParseTreeHandler.js b/lib/ace/mode/xquery/JSONParseTreeHandler.js index 579f6867..9b850763 100644 --- a/lib/ace/mode/xquery/JSONParseTreeHandler.js +++ b/lib/ace/mode/xquery/JSONParseTreeHandler.js @@ -65,7 +65,7 @@ define(function(require, exports, module){ } } - function popNode(name, end){ + function popNode(){ if(ptr.children.length > 0) { var s = ptr.children[0]; @@ -111,7 +111,14 @@ define(function(require, exports, module){ } } } - + + this.closeParseTree = function() { + while(ptr.getParent !== null) { + popNode(); + } + popNode(); + }; + this.peek = function() { return ptr; }; @@ -127,21 +134,21 @@ define(function(require, exports, module){ }; this.endNonterminal = function(name, end) { - popNode(name, end); + popNode(); }; this.terminal = function(name, begin, end) { name = (name.substring(0, 1) === "'" && name.substring(name.length - 1) === "'") ? "TOKEN" : name; pushNode(name, begin); setValue(ptr, begin, end); - popNode(name, end); + popNode(); }; this.whitespace = function(begin, end) { var name = "WS"; pushNode(name, begin); setValue(ptr, begin, end); - popNode(name, end); + popNode(); }; function setValue(node, begin, end) {