UNPKG

vagabond-uml

Version:

UML support for Vagabond via XMI and JDL files

1,401 lines (1,341 loc) 168 kB
module.exports = (function() { "use strict"; /* * Generated by PEG.js 0.9.0. * * http://pegjs.org/ */ function peg$subclass(child, parent) { function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); } function peg$SyntaxError(message, expected, found, location) { this.message = message; this.expected = expected; this.found = found; this.location = location; this.name = "SyntaxError"; if (typeof Error.captureStackTrace === "function") { Error.captureStackTrace(this, peg$SyntaxError); } } peg$subclass(peg$SyntaxError, Error); function peg$parse(input) { var options = arguments.length > 1 ? arguments[1] : {}, parser = this, peg$FAILED = {}, peg$startRuleFunctions = { start: peg$parsestart }, peg$startRuleFunction = peg$parsestart, peg$c0 = function(p) { return p; }, peg$c1 = function(ed, p) {return {"entities" : concat([ed],p.entities) , "relationships" : p.relationships, "enums" : p.enums, "dto": p.dto, "pagination": p.pagination, "service": service};}, peg$c2 = function(rd, p) {return {"entities" : p.entities, "relationships" : flattenArray(concat([rd],p.relationships)), "enums" : p.enums, "dto": p.dto, "pagination": p.pagination, "service": service};}, peg$c3 = function(end, p) {return {"entities" : p.entities, "relationships" : p.relationships, "enums": concat([end], p.enums), "dto": p.dto, "pagination": p.pagination, "service": service};}, peg$c4 = function(dto, p) {return {"entities": p.entities, "relationships": p.relationships, "enums": p.enums, "dto": p.dto, "pagination": p.pagination, "service": service};}, peg$c5 = function(pagination, p) {return {"entities" : p.entities, "relationships" : p.relationships, "enums": p.enums, "dto": p.dto, "pagination": p.pagination, "service": service};}, peg$c6 = function(service, p) {return {"entities" : p.entities, "relationships" : p.relationships, "enums": p.enums, "dto": p.dto, "pagination": p.pagination, "service": service};}, peg$c7 = function(p) {return {"entities" : p.entities,"relationships": p.relationships, "enums": p.enums, "dto": p.dto, "pagination": p.pagination, "service": service};}, peg$c8 = "", peg$c9 = function() {return {"entities" : entities,"relationships": relationships, "enums": enums, "dto": dto, "pagination": pagination, "service": service};}, peg$c10 = "entity", peg$c11 = { type: "literal", value: "entity", description: "\"entity\"" }, peg$c12 = function(jd, e, eb) {return {"name" : e, "body":eb, "javadoc":jd};}, peg$c13 = function(e, eb) {return {"name" : e, "body":eb, "javadoc":""};}, peg$c14 = "{", peg$c15 = { type: "literal", value: "{", description: "\"{\"" }, peg$c16 = "}", peg$c17 = { type: "literal", value: "}", description: "\"}\"" }, peg$c18 = function(fdl) {return fdl;}, peg$c19 = function() {return [];}, peg$c20 = ",", peg$c21 = { type: "literal", value: ",", description: "\",\"" }, peg$c22 = function(com, f, t, vl, fdl) {return concat([{"name" : f, "type" : t, "validations" : vl, "javadoc": com}], fdl );}, peg$c23 = function(com, f, t, vl) {return [{"name" : f, "type" : t, "validations" : vl, "javadoc": com}];}, peg$c24 = function(v, vl) {return concat([v], vl);}, peg$c25 = "relationship", peg$c26 = { type: "literal", value: "relationship", description: "\"relationship\"" }, peg$c27 = function(rt, rb, subrb) {rb.cardinality = rt; addCardinalityToRelationships(rt, subrb); return concat([rb], subrb);}, peg$c28 = function(rb, morerb) { return concat([rb], morerb); }, peg$c29 = function(rb) { return rb; }, peg$c30 = "to", peg$c31 = { type: "literal", value: "to", description: "\"to\"" }, peg$c32 = function(from, to) {return {"from" : from , "to" : to};}, peg$c33 = function(jd, e, i) {return {"name" :e, "injectedfield" : i, "javadoc": jd};}, peg$c34 = function(jd, e) {return {"name" :e, "injectedfield" : null, "javadoc": jd};}, peg$c35 = function(e) {return {"name" :e, "injectedfield" : null, "javadoc": ''};}, peg$c36 = "enum", peg$c37 = { type: "literal", value: "enum", description: "\"enum\"" }, peg$c38 = function(e, el) {return {"name":e, "values" : el };}, peg$c39 = function(e, el) {return concat([e],el);}, peg$c40 = function(e) {return [e];}, peg$c41 = "except", peg$c42 = { type: "literal", value: "except", description: "\"except\"" }, peg$c43 = function(sub) {return sub;}, peg$c44 = function(e, sub) {return concat([e], sub);}, peg$c45 = "dto", peg$c46 = { type: "literal", value: "dto", description: "\"dto\"" }, peg$c47 = function(decl, ex) { dto[decl[decl.length - 1]] = dto[decl[decl.length - 1]] || { list: [], excluded: [] }; concat(dto[decl[decl.length - 1]].list, decl.slice(0, decl.length-1)); if (ex) { concat(dto[decl[decl.length - 1]].excluded, ex); } }, peg$c48 = "*", peg$c49 = { type: "literal", value: "*", description: "\"*\"" }, peg$c50 = "with", peg$c51 = { type: "literal", value: "with", description: "\"with\"" }, peg$c52 = /^[A-z\-]/, peg$c53 = { type: "class", value: "[A-z-]", description: "[A-z-]" }, peg$c54 = function(method) {return ['*', method.toString().replace(/,/g,'')];}, peg$c55 = "all", peg$c56 = { type: "literal", value: "all", description: "\"all\"" }, peg$c57 = function(e, method) {return [e, method.toString().replace(/,/g,'')];}, peg$c58 = "paginate", peg$c59 = { type: "literal", value: "paginate", description: "\"paginate\"" }, peg$c60 = function(decl, ex) { pagination[decl[decl.length - 1]] = pagination[decl[decl.length - 1]] || { list: [], excluded: [] }; concat(pagination[decl[decl.length - 1]].list, decl.slice(0, decl.length-1)); if (ex) { concat(pagination[decl[decl.length - 1]].excluded, ex); } }, peg$c61 = "service", peg$c62 = { type: "literal", value: "service", description: "\"service\"" }, peg$c63 = function(jd, s, sb) { return {"name" : s, "body":sb, "javadoc":jd}; }, peg$c64 = function(s, sb) { return {"name" : s, "body":sb, "javadoc":""}; }, peg$c65 = function(mdl) {return mdl;}, peg$c66 = "(", peg$c67 = { type: "literal", value: "(", description: "\"(\"" }, peg$c68 = ")", peg$c69 = { type: "literal", value: ")", description: "\")\"" }, peg$c70 = function(com, t, mn, pl, mdl) { return concat([{"name" : mn, "type" : t, "parameters" : pl, "javadoc": com}], mdl ); }, peg$c71 = function(com, t, mn, pl) { return [{"name" : mn, "type" : t, "parameters" : pl, "javadoc": com}]; }, peg$c72 = function(p, pl) {return concat([p], pl);}, peg$c73 = function(p) {return [p];}, peg$c74 = function(t, pn) { return { "name": pn, "type": t }; }, peg$c75 = "OneToOne", peg$c76 = { type: "literal", value: "OneToOne", description: "\"OneToOne\"" }, peg$c77 = function() {return "one-to-one";}, peg$c78 = "OneToMany", peg$c79 = { type: "literal", value: "OneToMany", description: "\"OneToMany\"" }, peg$c80 = function() {return "one-to-many";}, peg$c81 = "ManyToOne", peg$c82 = { type: "literal", value: "ManyToOne", description: "\"ManyToOne\"" }, peg$c83 = function() {return "many-to-one";}, peg$c84 = "ManyToMany", peg$c85 = { type: "literal", value: "ManyToMany", description: "\"ManyToMany\"" }, peg$c86 = function() {return "many-to-many";}, peg$c87 = { type: "other", description: "a type" }, peg$c88 = /^[A-Z]/, peg$c89 = { type: "class", value: "[A-Z]", description: "[A-Z]" }, peg$c90 = /^[a-zA-Z0-9]/, peg$c91 = { type: "class", value: "[a-zA-Z0-9]", description: "[a-zA-Z0-9]" }, peg$c92 = function(head, tail) {return makeString(concat([head],tail));}, peg$c93 = "required", peg$c94 = { type: "literal", value: "required", description: "\"required\"" }, peg$c95 = function() {return {key:'required', value:''};}, peg$c96 = "minlength", peg$c97 = { type: "literal", value: "minlength", description: "\"minlength\"" }, peg$c98 = function(int) {return {key:'minlength', value:int};}, peg$c99 = "maxlength", peg$c100 = { type: "literal", value: "maxlength", description: "\"maxlength\"" }, peg$c101 = function(int) {return {key:'maxlength', value:int};}, peg$c102 = "minbytes", peg$c103 = { type: "literal", value: "minbytes", description: "\"minbytes\"" }, peg$c104 = "maxbytes", peg$c105 = { type: "literal", value: "maxbytes", description: "\"maxbytes\"" }, peg$c106 = "max", peg$c107 = { type: "literal", value: "max", description: "\"max\"" }, peg$c108 = function(int) {return {key:'max', value:int};}, peg$c109 = "min", peg$c110 = { type: "literal", value: "min", description: "\"min\"" }, peg$c111 = function(int) {return {key:'min', value:int};}, peg$c112 = "pattern", peg$c113 = { type: "literal", value: "pattern", description: "\"pattern\"" }, peg$c114 = function(regexp) {return {key:'pattern' , value:regexp};}, peg$c115 = { type: "other", description: "apostrophe" }, peg$c116 = /^["|']/, peg$c117 = { type: "class", value: "[\"|']", description: "[\"|']" }, peg$c118 = { type: "other", description: "a regular expression" }, peg$c119 = /^[a-zA-Z0-9!@#$%\^&*()_+\-=[\]{};':\\|,.<>\/? ]/, peg$c120 = { type: "class", value: "[a-zA-Z0-9!@#$%^&*()_+\\-=\\[\\]{};':\\\\|,.<>\\/? ]", description: "[a-zA-Z0-9!@#$%^&*()_+\\-=\\[\\]{};':\\\\|,.<>\\/? ]" }, peg$c121 = function(word) {return makeString(word);}, peg$c122 = { type: "other", description: "an enum name" }, peg$c123 = { type: "other", description: "an enum property" }, peg$c124 = /^[_]/, peg$c125 = { type: "class", value: "[_]", description: "[_]" }, peg$c126 = /^[A-Z0-9]/, peg$c127 = { type: "class", value: "[A-Z0-9]", description: "[A-Z0-9]" }, peg$c128 = /^[A-Z0-9_]/, peg$c129 = { type: "class", value: "[A-Z0-9_]", description: "[A-Z0-9_]" }, peg$c130 = function(underscore, head, tail) {return makeString(concat(concat(underscore,[head]), tail));}, peg$c131 = { type: "other", description: "integer" }, peg$c132 = /^[0-9]/, peg$c133 = { type: "class", value: "[0-9]", description: "[0-9]" }, peg$c134 = function(int) {return parseInt(int.join(""), 10);}, peg$c135 = { type: "other", description: "an injected field" }, peg$c136 = /^[a-zA-Z]/, peg$c137 = { type: "class", value: "[a-zA-Z]", description: "[a-zA-Z]" }, peg$c138 = /^[a-zA-Z0-9()]/, peg$c139 = { type: "class", value: "[a-zA-Z0-9()]", description: "[a-zA-Z0-9()]" }, peg$c140 = { type: "other", description: "an entity name" }, peg$c141 = { type: "other", description: "a field name" }, peg$c142 = { type: "other", description: "a service name" }, peg$c143 = { type: "other", description: "a method name" }, peg$c144 = { type: "other", description: "a parameter name" }, peg$c145 = { type: "other", description: "a space" }, peg$c146 = /^['\n'|'\t'|'\r'|' '|\u2028|\u2029]/, peg$c147 = { type: "class", value: "['\\n'|'\\t'|'\\r'|' '|\\u2028|\\u2029]", description: "['\\n'|'\\t'|'\\r'|' '|\\u2028|\\u2029]" }, peg$c148 = function(nc) {return makeString(nc);}, peg$c149 = "/*", peg$c150 = { type: "literal", value: "/*", description: "\"/*\"" }, peg$c151 = /^[*]/, peg$c152 = { type: "class", value: "[*]", description: "[*]" }, peg$c153 = "/", peg$c154 = { type: "literal", value: "/", description: "\"/\"" }, peg$c155 = "//", peg$c156 = { type: "literal", value: "//", description: "\"//\"" }, peg$c157 = /^[^\n\r]/, peg$c158 = { type: "class", value: "[^\\n\\r]", description: "[^\\n\\r]" }, peg$c159 = { type: "any", description: "any character" }, peg$c160 = function(char) {return char;}, peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result; if ("startRule" in options) { if (!(options.startRule in peg$startRuleFunctions)) { throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); } peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; } function text() { return input.substring(peg$savedPos, peg$currPos); } function location() { return peg$computeLocation(peg$savedPos, peg$currPos); } function expected(description) { throw peg$buildException( null, [{ type: "other", description: description }], input.substring(peg$savedPos, peg$currPos), peg$computeLocation(peg$savedPos, peg$currPos) ); } function error(message) { throw peg$buildException( message, null, input.substring(peg$savedPos, peg$currPos), peg$computeLocation(peg$savedPos, peg$currPos) ); } function peg$computePosDetails(pos) { var details = peg$posDetailsCache[pos], p, ch; if (details) { return details; } else { p = pos - 1; while (!peg$posDetailsCache[p]) { p--; } details = peg$posDetailsCache[p]; details = { line: details.line, column: details.column, seenCR: details.seenCR }; while (p < pos) { ch = input.charAt(p); if (ch === "\n") { if (!details.seenCR) { details.line++; } details.column = 1; details.seenCR = false; } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { details.line++; details.column = 1; details.seenCR = true; } else { details.column++; details.seenCR = false; } p++; } peg$posDetailsCache[pos] = details; return details; } } function peg$computeLocation(startPos, endPos) { var startPosDetails = peg$computePosDetails(startPos), endPosDetails = peg$computePosDetails(endPos); return { start: { offset: startPos, line: startPosDetails.line, column: startPosDetails.column }, end: { offset: endPos, line: endPosDetails.line, column: endPosDetails.column } }; } function peg$fail(expected) { if (peg$currPos < peg$maxFailPos) { return; } if (peg$currPos > peg$maxFailPos) { peg$maxFailPos = peg$currPos; peg$maxFailExpected = []; } peg$maxFailExpected.push(expected); } function peg$buildException(message, expected, found, location) { function cleanupExpected(expected) { var i = 1; expected.sort(function(a, b) { if (a.description < b.description) { return -1; } else if (a.description > b.description) { return 1; } else { return 0; } }); while (i < expected.length) { if (expected[i - 1] === expected[i]) { expected.splice(i, 1); } else { i++; } } } function buildMessage(expected, found) { function stringEscape(s) { function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } return s .replace(/\\/g, '\\\\') .replace(/"/g, '\\"') .replace(/\x08/g, '\\b') .replace(/\t/g, '\\t') .replace(/\n/g, '\\n') .replace(/\f/g, '\\f') .replace(/\r/g, '\\r') .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); }) .replace(/[\u0100-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) .replace(/[\u1000-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); }); } var expectedDescs = new Array(expected.length), expectedDesc, foundDesc, i; for (i = 0; i < expected.length; i++) { expectedDescs[i] = expected[i].description; } expectedDesc = expected.length > 1 ? expectedDescs.slice(0, -1).join(", ") + " or " + expectedDescs[expected.length - 1] : expectedDescs[0]; foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; return "Expected " + expectedDesc + " but " + foundDesc + " found."; } if (expected !== null) { cleanupExpected(expected); } return new peg$SyntaxError( message !== null ? message : buildMessage(expected, found), expected, found, location ); } function peg$parsestart() { var s0, s1; s0 = peg$currPos; s1 = peg$parseprog(); if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c0(s1); } s0 = s1; return s0; } function peg$parseprog() { var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parseentityDecl(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c1(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parserelationDecl(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c2(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parseenumDecl(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c3(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parsedtoDecl(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c4(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parsepagiDecl(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c5(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parseserviceDecl(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c6(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parseComment(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c7(s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; s2 = peg$parsespace(); while (s2 !== peg$FAILED) { s1.push(s2); s2 = peg$parsespace(); } if (s1 !== peg$FAILED) { s2 = peg$parseJDLComment(); if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parsespace(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parsespace(); } if (s3 !== peg$FAILED) { s4 = peg$parseprog(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c7(s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$c8; if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c9(); } s0 = s1; } } } } } } } } return s0; } function peg$parseentityDecl() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; s0 = peg$currPos; s1 = peg$parseComment(); if (s1 === peg$FAILED) { s1 = null; } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsespace(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parsespace(); } if (s2 !== peg$FAILED) { s3 = peg$parseJDLComment(); if (s3 === peg$FAILED) { s3 = null; } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parsespace(); while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parsespace(); } if (s4 !== peg$FAILED) { if (input.substr(peg$currPos, 6) === peg$c10) { s5 = peg$c10; peg$currPos += 6; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c11); } } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parsespace(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parsespace(); } if (s6 !== peg$FAILED) { s7 = peg$parseENTITYNAME(); if (s7 !== peg$FAILED) { s8 = []; s9 = peg$parsespace(); while (s9 !== peg$FAILED) { s8.push(s9); s9 = peg$parsespace(); } if (s8 !== peg$FAILED) { s9 = peg$parseentityBody(); if (s9 === peg$FAILED) { s9 = null; } if (s9 !== peg$FAILED) { s10 = []; s11 = peg$parsespace(); while (s11 !== peg$FAILED) { s10.push(s11); s11 = peg$parsespace(); } if (s10 !== peg$FAILED) { s11 = peg$parseJDLComment(); if (s11 === peg$FAILED) { s11 = null; } if (s11 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c12(s1, s7, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.substr(peg$currPos, 6) === peg$c10) { s1 = peg$c10; peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c11); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsespace(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parsespace(); } if (s2 !== peg$FAILED) { s3 = peg$parseENTITYNAME(); if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parsespace(); while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parsespace(); } if (s4 !== peg$FAILED) { s5 = peg$parseentityBody(); if (s5 === peg$FAILED) { s5 = null; } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c13(s3, s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } return s0; } function peg$parseentityBody() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c14; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c15); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsespace(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parsespace(); } if (s2 !== peg$FAILED) { s3 = peg$parseJDLComment(); if (s3 === peg$FAILED) { s3 = null; } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parsespace(); while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parsespace(); } if (s4 !== peg$FAILED) { s5 = peg$parsefieldDeclList(); if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parsespace(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parsespace(); } if (s6 !== peg$FAILED) { s7 = peg$parseJDLComment(); if (s7 === peg$FAILED) { s7 = null; } if (s7 !== peg$FAILED) { s8 = []; s9 = peg$parsespace(); while (s9 !== peg$FAILED) { s8.push(s9); s9 = peg$parsespace(); } if (s8 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s9 = peg$c16; peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c17); } } if (s9 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c18(s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$c8; if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c19(); } s0 = s1; } return s0; } function peg$parsefieldDeclList() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17; s0 = peg$currPos; s1 = peg$parseJDLComment(); if (s1 === peg$FAILED) { s1 = null; } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsespace(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parsespace(); } if (s2 !== peg$FAILED) { s3 = peg$parseComment(); if (s3 === peg$FAILED) { s3 = null; } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parsespace(); while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parsespace(); } if (s4 !== peg$FAILED) { s5 = peg$parseJDLComment(); if (s5 === peg$FAILED) { s5 = null; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parsespace(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parsespace(); } if (s6 !== peg$FAILED) { s7 = peg$parseFIELDNAME(); if (s7 !== peg$FAILED) { s8 = peg$parsespace(); if (s8 !== peg$FAILED) { s9 = peg$parsetype(); if (s9 !== peg$FAILED) { s10 = []; s11 = peg$parsespace(); while (s11 !== peg$FAILED) { s10.push(s11); s11 = peg$parsespace(); } if (s10 !== peg$FAILED) { s11 = peg$parsevalidationList(); if (s11 === peg$FAILED) { s11 = null; } if (s11 !== peg$FAILED) { s12 = []; s13 = peg$parsespace(); while (s13 !== peg$FAILED) { s12.push(s13); s13 = peg$parsespace(); } if (s12 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 44) { s13 = peg$c20; peg$currPos++; } else { s13 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c21); } } if (s13 === peg$FAILED) { s13 = null; } if (s13 !== peg$FAILED) { s14 = []; s15 = peg$parsespace(); while (s15 !== peg$FAILED) { s14.push(s15); s15 = peg$parsespace(); } if (s14 !== peg$FAILED) { s15 = peg$parseJDLComment(); if (s15 === peg$FAILED) { s15 = null; } if (s15 !== peg$FAILED) { s16 = []; s17 = peg$parsespace(); while (s17 !== peg$FAILED) { s16.push(s17); s17 = peg$parsespace(); } if (s16 !== peg$FAILED) { s17 = peg$parsefieldDeclList(); if (s17 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c22(s3, s7, s9, s11, s17); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseComment(); if (s1 === peg$FAILED) { s1 = null; } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsespace(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parsespace(); } if (s2 !== peg$FAILED) { s3 = peg$parseFIELDNAME(); if (s3 !== peg$FAILED) { s4 = peg$parsespace(); if (s4 !== peg$FAILED) { s5 = peg$parsetype(); if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parsespace(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parsespace(); } if (s6 !== peg$FAILED) { s7 = peg$parsevalidationList(); if (s7 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c23(s1, s3, s5, s7); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$c8; if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c19(); } s0 = s1; } } return s0; } function peg$parsevalidationList() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parsevalidation(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsespace(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parsespace(); } if (s2 !== peg$FAILED) { s3 = peg$parsevalidationList(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c24(s1, s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$c8; if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c19(); } s0 = s1; } return s0; } function peg$parserelationDecl() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; s0 = peg$currPos; if (input.substr(peg$currPos, 12) === peg$c25) { s1 = peg$c25; peg$currPos += 12; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c26); } } if (s1 !== peg$FAILED) { s2 = peg$parsespace(); if (s2 !== peg$FAILED) { s3 = peg$parserelationshipType(); if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parsespace(); while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parsespace(); } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { s5 = peg$c14; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c15); } } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parsespace(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parsespace(); } if (s6 !== peg$FAILED) { s7 = peg$parseJDLComment(); if (s7 === peg$FAILED) { s7 = null; } if (s7 !== peg$FAILED) { s8 = []; s9 = peg$parsespace(); while (s9 !== peg$FAILED) { s8.push(s9); s9 = peg$parsespace(); } if (s8 !== peg$FAILED) { s9 = peg$parserelationshipBody(); if (s9 !== peg$FAILED) { s10 = []; s11 = peg$parsespace(); while (s11 !== peg$FAILED) { s10.push(s11); s11 = peg$parsespace(); } if (s10 !== peg$FAILED) { s11 = peg$parsesubRelationshipBodies(); if (s11 === peg$FAILED) { s11 = null; } if (s11 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s12 = peg$c16; peg$currPos++; } else { s12 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c17); } } if (s12 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c27(s3,