imdone
Version:
A task board and wiki in one!
1,389 lines (1,304 loc) • 333 kB
JavaScript
/* ***** 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/xquery', ['require', 'exports', 'module' , 'ace/worker/worker_client', 'ace/lib/oop', 'ace/mode/text', 'ace/mode/xquery/XQueryLexer', 'ace/range', 'ace/mode/behaviour/xquery', 'ace/mode/folding/cstyle'], function(require, exports, module) {
var WorkerClient = require("../worker/worker_client").WorkerClient;
var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var XQueryLexer = require("./xquery/XQueryLexer").XQueryLexer;
var Range = require("../range").Range;
var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour;
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
var Mode = function() {
this.$tokenizer = new XQueryLexer();
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.createWorker = function(session) {
var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker");
var that = this;
worker.attachToDocument(session.getDocument());
worker.on("error", function(e) {
session.setAnnotations([e.data]);
});
worker.on("ok", function(e) {
session.clearAnnotations();
});
worker.on("highlight", function(tokens) {
that.$tokenizer.tokens = tokens.data.tokens;
that.$tokenizer.lines = session.getDocument().getAllLines();
var rows = Object.keys(that.$tokenizer.tokens);
for(var i=0; i < rows.length; i++) {
var row = parseInt(rows[i]);
delete session.bgTokenizer.lines[row];
delete session.bgTokenizer.states[row];
session.bgTokenizer.fireUpdateEvent(row, row);
}
});
return worker;
};
this.$id = "ace/mode/xquery";
}).call(Mode.prototype);
exports.Mode = Mode;
});
ace.define('ace/mode/xquery/XQueryLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/XQueryTokenizer'], function(require, exports, module) {
var XQueryTokenizer = require("./XQueryTokenizer").XQueryTokenizer;
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 = "after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict".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.XQueryLexer = 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 XQueryTokenizer(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/XQueryTokenizer', ['require', 'exports', 'module' ], function(require, exports, module) {
var XQueryTokenizer = exports.XQueryTokenizer = function XQueryTokenizer(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 ? XQueryTokenizer.TOKEN[o] : null;
};
this.getExpectedTokenSet = function(e)
{
var expected;
if (e.getExpected() < 0)
{
expected = XQueryTokenizer.getTokenSet(- e.getState());
}
else
{
expected = [XQueryTokenizer.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: