UNPKG

imdone

Version:

A task board and wiki in one!

1,377 lines (1,302 loc) 332 kB
/* ***** BEGIN LICENSE BLOCK ***** * Distributed under the BSD license: * * Copyright (c) 2010, Ajax.org B.V. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Ajax.org B.V. nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ***** END LICENSE BLOCK ***** */ ace.define('ace/mode/jsoniq', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/xquery/JSONiqLexer', 'ace/range', 'ace/mode/behaviour/xquery', 'ace/mode/folding/cstyle'], function(require, exports, module) { var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JSONiqLexer = require("./xquery/JSONiqLexer").JSONiqLexer; var Range = require("../range").Range; var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.$tokenizer = new JSONiqLexer(); this.$behaviour = new XQueryBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); if (match) indent += tab; return indent; }; this.checkOutdent = function(state, line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*[\}\)]/.test(input); }; this.autoOutdent = function(state, doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*[\}\)])/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.toggleCommentLines = function(state, doc, startRow, endRow) { var i, line; var outdent = true; var re = /^\s*\(:(.*):\)/; for (i=startRow; i<= endRow; i++) { if (!re.test(doc.getLine(i))) { outdent = false; break; } } var range = new Range(0, 0, 0, 0); for (i=startRow; i<= endRow; i++) { line = doc.getLine(i); range.start.row = i; range.end.row = i; range.end.column = line.length; doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); } }; this.$id = "ace/mode/jsoniq"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define('ace/mode/xquery/JSONiqLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/JSONiqTokenizer'], function(require, exports, module) { var JSONiqTokenizer = require("./JSONiqTokenizer").JSONiqTokenizer; var TokenHandler = function(code) { var input = code; this.tokens = []; this.reset = function(code) { input = input; this.tokens = []; }; this.startNonterminal = function(name, begin) {}; this.endNonterminal = function(name, end) {}; this.terminal = function(name, begin, end) { this.tokens.push({ name: name, value: input.substring(begin, end) }); }; this.whitespace = function(begin, end) { this.tokens.push({ name: "WS", value: input.substring(begin, end) }); }; }; var keys = "NaN|after|allowing|ancestor|ancestor-or-self|and|append|array|as|ascending|at|attribute|base-uri|before|boundary-space|break|by|case|cast|castable|catch|child|collation|comment|constraint|construction|contains|context|continue|copy|copy-namespaces|count|decimal-format|decimal-separator|declare|default|delete|descendant|descendant-or-self|descending|digit|div|document|document-node|element|else|empty|empty-sequence|encoding|end|eq|every|except|exit|external|false|first|following|following-sibling|for|from|ft-option|function|ge|greatest|group|grouping-separator|gt|idiv|if|import|in|index|infinity|insert|instance|integrity|intersect|into|is|item|json|json-item|jsoniq|last|lax|le|least|let|loop|lt|minus-sign|mod|modify|module|namespace|namespace-node|ne|next|node|nodes|not|null|object|of|only|option|or|order|ordered|ordering|paragraphs|parent|pattern-separator|per-mille|percent|preceding|preceding-sibling|previous|processing-instruction|rename|replace|return|returning|revalidation|satisfies|schema|schema-attribute|schema-element|score|select|self|sentences|sliding|some|stable|start|strict|switch|text|then|times|to|treat|true|try|tumbling|type|typeswitch|union|unordered|updating|validate|value|variable|version|when|where|while|window|with|words|xquery|zero-digit".split("|"); var keywords = keys.map( function(val) { return { name: "'" + val + "'", token: "keyword" }; } ); var ncnames = keys.map( function(val) { return { name: "'" + val + "'", token: "text", next: function(stack){ stack.pop(); } }; } ); var cdata = "constant.language"; var number = "constant"; var xmlcomment = "comment"; var pi = "xml-pe"; var pragma = "constant.buildin"; var Rules = { start: [ { name: "'(#'", token: pragma, next: function(stack){ stack.push("Pragma"); } }, { name: "'(:'", token: "comment", next: function(stack){ stack.push("Comment"); } }, { name: "'(:~'", token: "comment.doc", next: function(stack){ stack.push("CommentDoc"); } }, { name: "'<!--'", token: xmlcomment, next: function(stack){ stack.push("XMLComment"); } }, { name: "'<?'", token: pi, next: function(stack) { stack.push("PI"); } }, { name: "''''", token: "string", next: function(stack){ stack.push("AposString"); } }, { name: "'\"'", token: "string", next: function(stack){ stack.push("QuotString"); } }, { name: "Annotation", token: "support.function" }, { name: "ModuleDecl", token: "keyword", next: function(stack){ stack.push("Prefix"); } }, { name: "OptionDecl", token: "keyword", next: function(stack){ stack.push("_EQName"); } }, { name: "AttrTest", token: "support.type" }, { name: "Variable", token: "variable" }, { name: "'<![CDATA['", token: cdata, next: function(stack){ stack.push("CData"); } }, { name: "IntegerLiteral", token: number }, { name: "DecimalLiteral", token: number }, { name: "DoubleLiteral", token: number }, { name: "Operator", token: "keyword.operator" }, { name: "EQName", token: function(val) { return keys.indexOf(val) !== -1 ? "keyword" : "support.function"; } }, { name: "'('", token:"lparen" }, { name: "')'", token:"rparen" }, { name: "Tag", token: "meta.tag", next: function(stack){ stack.push("StartTag"); } }, { name: "'}'", token: "text", next: function(stack){ if(stack.length > 1) stack.pop(); } }, { name: "'{'", token: "text", next: function(stack){ stack.push("start"); } } //, next: function(stack){ if(stack.length > 1) { stack.pop(); } } } ].concat(keywords), _EQName: [ { name: "EQName", token: "text", next: function(stack) { stack.pop(); } } ].concat(ncnames), Prefix: [ { name: "NCName", token: "text", next: function(stack) { stack.pop(); } } ].concat(ncnames), StartTag: [ { name: "'>'", token: "meta.tag", next: function(stack){ stack.push("TagContent"); } }, { name: "QName", token: "entity.other.attribute-name" }, { name: "'='", token: "text" }, { name: "''''", token: "string", next: function(stack){ stack.push("AposAttr"); } }, { name: "'\"'", token: "string", next: function(stack){ stack.push("QuotAttr"); } }, { name: "'/>'", token: "meta.tag.r", next: function(stack){ stack.pop(); } } ], TagContent: [ { name: "ElementContentChar", token: "text" }, { name: "'<![CDATA['", token: cdata, next: function(stack){ stack.push("CData"); } }, { name: "'<!--'", token: xmlcomment, next: function(stack){ stack.push("XMLComment"); } }, { name: "Tag", token: "meta.tag", next: function(stack){ stack.push("StartTag"); } }, { name: "PredefinedEntityRef", token: "constant.language.escape" }, { name: "CharRef", token: "constant.language.escape" }, { name: "'{{'", token: "text" }, { name: "'}}'", token: "text" }, { name: "'{'", token: "text", next: function(stack){ stack.push("start"); } }, { name: "EndTag", token: "meta.tag", next: function(stack){ stack.pop(); stack.pop(); } } ], AposAttr: [ { name: "''''", token: "string", next: function(stack){ stack.pop(); } }, { name: "EscapeApos", token: "constant.language.escape" }, { name: "AposAttrContentChar", token: "string" }, { name: "PredefinedEntityRef", token: "constant.language.escape" }, { name: "CharRef", token: "constant.language.escape" }, { name: "'{{'", token: "string" }, { name: "'}}'", token: "string" }, { name: "'{'", token: "text", next: function(stack){ stack.push("start"); } } ], QuotAttr: [ { name: "'\"'", token: "string", next: function(stack){ stack.pop(); } }, { name: "EscapeQuot", token: "constant.language.escape" }, { name: "QuotAttrContentChar", token: "string" }, { name: "PredefinedEntityRef", token: "constant.language.escape" }, { name: "CharRef", token: "constant.language.escape" }, { name: "'{{'", token: "string" }, { name: "'}}'", token: "string" }, { name: "'{'", token: "text", next: function(stack){ stack.push("start"); } } ], Pragma: [ { name: "PragmaContents", token: pragma }, { name: "'#'", token: pragma }, { name: "'#)'", token: pragma, next: function(stack){ stack.pop(); } } ], Comment: [ { name: "CommentContents", token: "comment" }, { name: "'(:'", token: "comment", next: function(stack){ stack.push("Comment"); } }, { name: "':)'", token: "comment", next: function(stack){ stack.pop(); } } ], CommentDoc: [ { name: "DocCommentContents", token: "comment.doc" }, { name: "DocTag", token: "comment.doc.tag" }, { name: "'(:'", token: "comment.doc", next: function(stack){ stack.push("CommentDoc"); } }, { name: "':)'", token: "comment.doc", next: function(stack){ stack.pop(); } } ], XMLComment: [ { name: "DirCommentContents", token: xmlcomment }, { name: "'-->'", token: xmlcomment, next: function(stack){ stack.pop(); } } ], CData: [ { name: "CDataSectionContents", token: cdata }, { name: "']]>'", token: cdata, next: function(stack){ stack.pop(); } } ], PI: [ { name: "DirPIContents", token: pi }, { name: "'?'", token: pi }, { name: "'?>'", token: pi, next: function(stack){ stack.pop(); } } ], AposString: [ { name: "''''", token: "string", next: function(stack){ stack.pop(); } }, { name: "PredefinedEntityRef", token: "constant.language.escape" }, { name: "CharRef", token: "constant.language.escape" }, { name: "EscapeApos", token: "constant.language.escape" }, { name: "AposChar", token: "string" } ], QuotString: [ { name: "'\"'", token: "string", next: function(stack){ stack.pop(); } }, { name: "PredefinedEntityRef", token: "constant.language.escape" }, { name: "CharRef", token: "constant.language.escape" }, { name: "EscapeQuot", token: "constant.language.escape" }, { name: "QuotChar", token: "string" } ] }; exports.JSONiqLexer = function() { this.tokens = []; this.getLineTokens = function(line, state, row) { state = (state === "start" || !state) ? '["start"]' : state; var stack = JSON.parse(state); var h = new TokenHandler(line); var tokenizer = new JSONiqTokenizer(line, h); var tokens = []; while(true) { var currentState = stack[stack.length - 1]; try { h.tokens = []; tokenizer["parse_" + currentState](); var info = null; if(h.tokens.length > 1 && h.tokens[0].name === "WS") { tokens.push({ type: "text", value: h.tokens[0].value }); h.tokens.splice(0, 1); } var token = h.tokens[0]; var rules = Rules[currentState]; for(var k = 0; k < rules.length; k++) { var rule = Rules[currentState][k]; if((typeof(rule.name) === "function" && rule.name(token)) || rule.name === token.name) { info = rule; break; } } if(token.name === "EOF") { break; } if(token.value === "") { throw "Encountered empty string lexical rule."; } tokens.push({ type: info === null ? "text" : (typeof(info.token) === "function" ? info.token(token.value) : info.token), value: token.value }); if(info && info.next) { info.next(stack); } } catch(e) { if(e instanceof tokenizer.ParseException) { var index = 0; for(var i=0; i < tokens.length; i++) { index += tokens[i].value.length; } tokens.push({ type: "text", value: line.substring(index) }); return { tokens: tokens, state: JSON.stringify(["start"]) }; } else { throw e; } } } if(this.tokens[row] !== undefined) { var cachedLine = this.lines[row]; var begin = sharedStart([line, cachedLine]); var diff = cachedLine.length - line.length; var idx = 0; var col = 0; for(var i = 0; i < tokens.length; i++) { var token = tokens[i]; for(var j = 0; j < this.tokens[row].length; j++) { var semanticToken = this.tokens[row][j]; if( ((col + token.value.length) <= begin.length && semanticToken.sc === col && semanticToken.ec === (col + token.value.length)) || (semanticToken.sc === (col + diff) && semanticToken.ec === (col + token.value.length + diff)) ) { idx = i; tokens[i].type = semanticToken.type; } } col += token.value.length; } } return { tokens: tokens, state: JSON.stringify(stack) }; }; function sharedStart(A) { var tem1, tem2, s, A = A.slice(0).sort(); tem1 = A[0]; s = tem1.length; tem2 = A.pop(); while(s && tem2.indexOf(tem1) == -1) { tem1 = tem1.substring(0, --s); } return tem1; } }; }); ace.define('ace/mode/xquery/JSONiqTokenizer', ['require', 'exports', 'module' ], function(require, exports, module) { var JSONiqTokenizer = exports.JSONiqTokenizer = function JSONiqTokenizer(string, parsingEventHandler) { init(string, parsingEventHandler); var self = this; this.ParseException = function(b, e, s, o, x) { var begin = b, end = e, state = s, offending = o, expected = x; this.getBegin = function() {return begin;}; this.getEnd = function() {return end;}; this.getState = function() {return state;}; this.getExpected = function() {return expected;}; this.getOffending = function() {return offending;}; this.getMessage = function() { return offending < 0 ? "lexical analysis failed" : "syntax error"; }; }; function init(string, parsingEventHandler) { eventHandler = parsingEventHandler; input = string; size = string.length; reset(0, 0, 0); } this.getInput = function() { return input; }; function reset(l, b, e) { b0 = b; e0 = b; l1 = l; b1 = b; e1 = e; end = e; eventHandler.reset(input); } this.getOffendingToken = function(e) { var o = e.getOffending(); return o >= 0 ? JSONiqTokenizer.TOKEN[o] : null; }; this.getExpectedTokenSet = function(e) { var expected; if (e.getExpected() < 0) { expected = JSONiqTokenizer.getTokenSet(- e.getState()); } else { expected = [JSONiqTokenizer.TOKEN[e.getExpected()]]; } return expected; }; this.getErrorMessage = function(e) { var tokenSet = this.getExpectedTokenSet(e); var found = this.getOffendingToken(e); var prefix = input.substring(0, e.getBegin()); var lines = prefix.split("\n"); var line = lines.length; var column = lines[line - 1].length + 1; var size = e.getEnd() - e.getBegin(); return e.getMessage() + (found == null ? "" : ", found " + found) + "\nwhile expecting " + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + "\n" + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + "at line " + line + ", column " + column + ":\n..." + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + "..."; }; this.parse_start = function() { eventHandler.startNonterminal("start", e0); lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | switch (l1) { case 55: // '<![CDATA[' shift(55); // '<![CDATA[' break; case 54: // '<!--' shift(54); // '<!--' break; case 56: // '<?' shift(56); // '<?' break; case 40: // '(#' shift(40); // '(#' break; case 42: // '(:~' shift(42); // '(:~' break; case 41: // '(:' shift(41); // '(:' break; case 35: // '"' shift(35); // '"' break; case 38: // "'" shift(38); // "'" break; case 274: // '}' shift(274); // '}' break; case 271: // '{' shift(271); // '{' break; case 39: // '(' shift(39); // '(' break; case 43: // ')' shift(43); // ')' break; case 49: // '/' shift(49); // '/' break; case 62: // '[' shift(62); // '[' break; case 63: // ']' shift(63); // ']' break; case 46: // ',' shift(46); // ',' break; case 48: // '.' shift(48); // '.' break; case 53: // ';' shift(53); // ';' break; case 51: // ':' shift(51); // ':' break; case 34: // '!' shift(34); // '!' break; case 273: // '|' shift(273); // '|' break; case 2: // Annotation shift(2); // Annotation break; case 1: // ModuleDecl shift(1); // ModuleDecl break; case 3: // OptionDecl shift(3); // OptionDecl break; case 12: // AttrTest shift(12); // AttrTest break; case 13: // Wildcard shift(13); // Wildcard break; case 15: // IntegerLiteral shift(15); // IntegerLiteral break; case 16: // DecimalLiteral shift(16); // DecimalLiteral break; case 17: // DoubleLiteral shift(17); // DoubleLiteral break; case 5: // Variable shift(5); // Variable break; case 6: // Tag shift(6); // Tag break; case 4: // Operator shift(4); // Operator break; case 33: // EOF shift(33); // EOF break; default: parse_EQName(); } eventHandler.endNonterminal("start", e0); }; this.parse_StartTag = function() { eventHandler.startNonterminal("StartTag", e0); lookahead1W(8); // QName | S^WS | EOF | '"' | "'" | '/>' | '=' | '>' switch (l1) { case 58: // '>' shift(58); // '>' break; case 50: // '/>' shift(50); // '/>' break; case 27: // QName shift(27); // QName break; case 57: // '=' shift(57); // '=' break; case 35: // '"' shift(35); // '"' break; case 38: // "'" shift(38); // "'" break; default: shift(33); // EOF } eventHandler.endNonterminal("StartTag", e0); }; this.parse_TagContent = function() { eventHandler.startNonterminal("TagContent", e0); lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | switch (l1) { case 23: // ElementContentChar shift(23); // ElementContentChar break; case 6: // Tag shift(6); // Tag break; case 7: // EndTag shift(7); // EndTag break; case 55: // '<![CDATA[' shift(55); // '<![CDATA[' break; case 54: // '<!--' shift(54); // '<!--' break; case 18: // PredefinedEntityRef shift(18); // PredefinedEntityRef break; case 29: // CharRef shift(29); // CharRef break; case 272: // '{{' shift(272); // '{{' break; case 275: // '}}' shift(275); // '}}' break; case 271: // '{' shift(271); // '{' break; default: shift(33); // EOF } eventHandler.endNonterminal("TagContent", e0); }; this.parse_AposAttr = function() { eventHandler.startNonterminal("AposAttr", e0); lookahead1(10); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | EOF | "'" | switch (l1) { case 20: // EscapeApos shift(20); // EscapeApos break; case 25: // AposAttrContentChar shift(25); // AposAttrContentChar break; case 18: // PredefinedEntityRef shift(18); // PredefinedEntityRef break; case 29: // CharRef shift(29); // CharRef break; case 272: // '{{' shift(272); // '{{' break; case 275: // '}}' shift(275); // '}}' break; case 271: // '{' shift(271); // '{' break; case 38: // "'" shift(38); // "'" break; default: shift(33); // EOF } eventHandler.endNonterminal("AposAttr", e0); }; this.parse_QuotAttr = function() { eventHandler.startNonterminal("QuotAttr", e0); lookahead1(9); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | EOF | '"' | switch (l1) { case 19: // EscapeQuot shift(19); // EscapeQuot break; case 24: // QuotAttrContentChar shift(24); // QuotAttrContentChar break; case 18: // PredefinedEntityRef shift(18); // PredefinedEntityRef break; case 29: // CharRef shift(29); // CharRef break; case 272: // '{{' shift(272); // '{{' break; case 275: // '}}' shift(275); // '}}' break; case 271: // '{' shift(271); // '{' break; case 35: // '"' shift(35); // '"' break; default: shift(33); // EOF } eventHandler.endNonterminal("QuotAttr", e0); }; this.parse_CData = function() { eventHandler.startNonterminal("CData", e0); lookahead1(1); // CDataSectionContents | EOF | ']]>' switch (l1) { case 11: // CDataSectionContents shift(11); // CDataSectionContents break; case 64: // ']]>' shift(64); // ']]>' break; default: shift(33); // EOF } eventHandler.endNonterminal("CData", e0); }; this.parse_XMLComment = function() { eventHandler.startNonterminal("XMLComment", e0); lookahead1(0); // DirCommentContents | EOF | '-->' switch (l1) { case 9: // DirCommentContents shift(9); // DirCommentContents break; case 47: // '-->' shift(47); // '-->' break; default: shift(33); // EOF } eventHandler.endNonterminal("XMLComment", e0); }; this.parse_PI = function() { eventHandler.startNonterminal("PI", e0); lookahead1(3); // DirPIContents | EOF | '?' | '?>' switch (l1) { case 10: // DirPIContents shift(10); // DirPIContents break; case 59: // '?' shift(59); // '?' break; case 60: // '?>' shift(60); // '?>' break; default: shift(33); // EOF } eventHandler.endNonterminal("PI", e0); }; this.parse_Pragma = function() { eventHandler.startNonterminal("Pragma", e0); lookahead1(2); // PragmaContents | EOF | '#' | '#)' switch (l1) { case 8: // PragmaContents shift(8); // PragmaContents break; case 36: // '#' shift(36); // '#' break; case 37: // '#)' shift(37); // '#)' break; default: shift(33); // EOF } eventHandler.endNonterminal("Pragma", e0); }; this.parse_Comment = function() { eventHandler.startNonterminal("Comment", e0); lookahead1(4); // CommentContents | EOF | '(:' | ':)' switch (l1) { case 52: // ':)' shift(52); // ':)' break; case 41: // '(:' shift(41); // '(:' break; case 30: // CommentContents shift(30); // CommentContents break; default: shift(33); // EOF } eventHandler.endNonterminal("Comment", e0); }; this.parse_CommentDoc = function() { eventHandler.startNonterminal("CommentDoc", e0); lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' switch (l1) { case 31: // DocTag shift(31); // DocTag break; case 32: // DocCommentContents shift(32); // DocCommentContents break; case 52: // ':)' shift(52); // ':)' break; case 41: // '(:' shift(41); // '(:' break; default: shift(33); // EOF } eventHandler.endNonterminal("CommentDoc", e0); }; this.parse_QuotString = function() { eventHandler.startNonterminal("QuotString", e0); lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' switch (l1) { case 18: // PredefinedEntityRef shift(18); // PredefinedEntityRef break; case 29: // CharRef shift(29); // CharRef break; case 19: // EscapeQuot shift(19); // EscapeQuot break; case 21: // QuotChar shift(21); // QuotChar break; case 35: // '"' shift(35); // '"' break; default: shift(33); // EOF } eventHandler.endNonterminal("QuotString", e0); }; this.parse_AposString = function() { eventHandler.startNonterminal("AposString", e0); lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" switch (l1) { case 18: // PredefinedEntityRef shift(18); // PredefinedEntityRef break; case 29: // CharRef shift(29); // CharRef break; case 20: // EscapeApos shift(20); // EscapeApos break; case 22: // AposChar shift(22); // AposChar break; case 38: // "'" shift(38); // "'" break; default: shift(33); // EOF } eventHandler.endNonterminal("AposString", e0); }; this.parse_Prefix = function() { eventHandler.startNonterminal("Prefix", e0); lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | whitespace(); parse_NCName(); eventHandler.endNonterminal("Prefix", e0); }; this.parse__EQName = function() { eventHandler.startNonterminal("_EQName", e0); lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | whitespace(); parse_EQName(); eventHandler.endNonterminal("_EQName", e0); }; function parse_EQName() { eventHandler.startNonterminal("EQName", e0); switch (l1) { case 77: // 'attribute' shift(77); // 'attribute' break; case 91: // 'comment' shift(91); // 'comment' break; case 115: // 'document-node' shift(115); // 'document-node' break; case 116: // 'element' shift(116); // 'element' break; case 119: // 'empty-sequence' shift(119); // 'empty-sequence' break; case 140: // 'function' shift(140); // 'function' break; case 147: // 'if' shift(147); // 'if' break; case 160: // 'item' shift(160); // 'item' break; case 180: // 'namespace-node' shift(180); // 'namespace-node' break; case 186: // 'node' shift(186); // 'node' break; case 211: // 'processing-instruction' shift(211); // 'processing-instruction' break; case 221: // 'schema-attribute' shift(221); // 'schema-attribute' break; case 222: // 'schema-element' shift(222); // 'schema-element' break; case 238: // 'switch' shift(238); // 'switch' break; case 239: // 'text' shift(239); // 'text' break; case 248: // 'typeswitch' shift(248); // 'typeswitch' break; default: parse_FunctionName(); } eventHandler.endNonterminal("EQName", e0); } function parse_FunctionName() { eventHandler.startNonterminal("FunctionName", e0); switch (l1) { case 14: // EQName^Token shift(14); // EQName^Token break; case 65: // 'after' shift(65); // 'after' break; case 68: // 'ancestor' shift(68); // 'ancestor' break; case 69: // 'ancestor-or-self' shift(69); // 'ancestor-or-self' break; case 70: // 'and' shift(70); // 'and' break; case 74: // 'as' shift(74); // 'as' break; case 75: // 'ascending' shift(75); // 'ascending' break; case 79: // 'before' shift(79); // 'before' break; case 83: // 'case' shift(83); // 'case' break; case 84: // 'cast' shift(84); // 'cast' break; case 85: // 'castable' shift(85); // 'castable' break; case 88: // 'child' shift(88); // 'child' break; case 89: // 'collation' shift(89); // 'collation' break; case 98: // 'copy' shift(98); // 'copy' break; case 100: // 'count' shift(100); // 'count' break; case 103: // 'declare' shift(103); // 'declare' break; case 104: // 'default' shift(104); // 'default' break; case 105: // 'delete' shift(105); // 'delete' break; case 106: // 'descendant' shift(106); // 'descendant' break; case 107: // 'descendant-or-self' shift(107); // 'descendant-or-self' break; case 108: // 'descending' shift(108); // 'descending' break; case 113: // 'div' shift(113); // 'div' break; case 114: // 'document' shift(114); // 'document' break; case 117: // 'else' shift(117); // 'else' break; case 118: // 'empty' shift(118); // 'empty' break; case 121: // 'end' shift(121); // 'end' break; case 123: // 'eq' shift(123); // 'eq' break; case 124: // 'every' shift(124); // 'every' break; case 126: // 'except' shift(126); // 'except' break; case 129: // 'first' shift(129); // 'first' break; case 130: // 'following' shift(130); // 'following' break; case 131: // 'following-sibling' shift(131); // 'following-sibling' break; case 132: // 'for' shift(132); // 'for' break; case 141: // 'ge' shift(141); // 'ge' break; case 143: // 'group' shift(143); // 'group' break; case 145: // 'gt' shift(145); // 'gt' break; case 146: // 'idiv' shift(146); // 'idiv' break; case 148: // 'import' shift(148); // 'import' break; case 154: // 'insert' shift(154); // 'insert' break; case 155: // 'instance' shift(155); // 'instance' break; case 157: // 'intersect' shift(157); // 'intersect' break; case 158: // 'into' shift(158); // 'into' break; case 159: // 'is' shift(159); // 'is' break; case 165: // 'last' shift(165); // 'last' break; case 167: // 'le' shift(167); // 'le' break; case 169: // 'let' shift(169); // 'let' break; case 173: // 'lt' shift(173); // 'lt' break; case 175: // 'mod' shift(175); // 'mod' break; case 176: // 'modify' shift(176); // 'modify' break; case 177: // 'module' shift(177); // 'module' break; case 179: // 'namespace' shift(179); // 'namespace' break; case 181: // 'ne' shift(181); // 'ne' break; case 193: // 'only' shift(193); // 'only' break; case 195: // 'or' shift(195); // 'or' break; case 196: // 'order' shift(196); // 'order' break; case 197: // 'ordered' shift(197); // 'ordered' break; case 201: // 'parent' shift(201); // 'parent' break; case 207: // 'preceding' shift(207); // 'preceding' break; case 208: // 'preceding-sibling' shift(208); // 'preceding-sibling' break; case 213: // 'rename' shift(213); // 'rename' break; case 214: // 'replace' shift(214); // 'replace' break; case 215: // 'return' shift(215); // 'return' break; case 219: // 'satisfies' shift(219); // 'satisfies' break; case 224: // 'self' shift(224); // 'self' break; case 230: // 'some' shift(230); // 'some' break; case 231: // 'stable' shift(231); // 'stable' break; case 232: // 'start' shift(232); // 'start' break; case 243: // 'to' shift(243); // 'to' break; case 244: // 'treat' shift(244); // 'treat' break; case 245: // 'try' shift(245); // 'try' break; case 249: // 'union' shift(249); // 'union' break; case 251: // 'unordered' shift(251); // 'unordered' break; case 255: // 'validate' shift(255); // 'validate' break; case 261: // 'where' shift(261); // 'where' break; case 265: // 'with' shift(265); // 'with' break; case 269: // 'xquery' shift(269); // 'xquery' break; case 67: // 'allowing' shift(67); // 'allowing' break; case 76: // 'at' shift(76); // 'at' break; case 78: // 'base-uri' shift(78); // 'base-uri' break; case 80: // 'boundary-space' shift(80); // 'boundary-space' break; case 81: // 'break' shift(81); // 'break' break; case 86: // 'catch' shift(86); // 'catch' break; case 93: // 'construction' shift(93); // 'construction' break; case 96: // 'context' shift(96); // 'context' break; case 97: // 'continue' shift(97); // 'continue' break; case 99: // 'copy-namespaces' shift(99); // 'copy-namespaces' break; case 101: // 'decimal-format' shift(101); // 'decimal-format' break; case 120: // 'encoding' shift(120); // 'encoding' break; case 127: // 'exit' shift(127); // 'exit' break; case 128: // 'external' shift(128); // 'external' break; case 136: // 'ft-option' shift(136); // 'ft-option' break; case 149: // 'in' shift(149); // 'in' break; case 150: // 'index' shift(150); // 'index' break; case 156: // 'integrity' shift(156); // 'integrity' break; case 166: // 'lax' shift(166); // 'lax' break; case 187: // 'nodes' shift(187); // 'nodes' break; case 194: // 'option' shift(194); // 'option' break; case 198: // 'ordering' shift(198); // 'ordering' break; case 217: // 'revalidation' shift(217); // 'revalidation' break; case 220: // 'schema' shift(220); // 'schema' break; case 223: // 'score' shift(223); // 'score' break; case 229: // 'sliding' shift(229); // 'sliding' break; case 235: // 'strict' shift(235); // 'strict' break; case 246: // 'tumbling' shift(246); // 'tumbling' break; case 247: // 'type' shift(247); // 'type' break; case 252: // 'updating' shift(252); // 'updating' break; case 256: // 'value' shift(256); // 'value' break; case 257: // 'variable' shift(257); // 'variable' break; case 258: // 'version' shift(258); // 'version' break; case 262: // 'while' shift(262); // 'while' break; case 92: // 'constraint' shift(92); // 'constraint' break; case 171: // 'loop' shift(171); // 'loop' break; default: shift(216); // 'returning' } eventHandler.endNonterminal("FunctionName", e0); } function parse_NCName() { eventHandler.startNonterminal("NCName", e0); switch (l1) { case 26: // NCName^Token shift(26); // NCName^Token break; case 65: // 'after' shift(65); // 'after' break; case 70: // 'and' shift(70); // 'and' break; case 74: // 'as' shift(74); // 'as' break; case 75: // 'ascending' shift(75); // 'ascending' break; case 79: // 'before' shift(79); // 'before' break; case 83: // 'case' shift(83); // 'case' break; case 84: // 'cast' shift(84); // 'cast' break; case 85: // 'castable' shift(85); // 'castable' break; case 89: // 'collation' shift(89); // 'collation' break; case 100: // 'count' shift(100); // 'count' break; case 104: // 'default' shift(104); // 'default' break; case 108: // 'descending' shift(108); // 'descending' break; case 113: // 'div' shift(113); // 'div' break; case 117: // 'else' shift(117); // 'else' break; case 118: // 'empty' shift(118);