snomed-expression-builder
Version:
Snomed Expresssion to MongoQuery
756 lines (686 loc) • 41.2 kB
JavaScript
// Generated by JavaScript APG, Version [`apg-js2`](https://github.com/ldthomas/apg-js2)
module.exports = function(){
"use strict";
//```
// SUMMARY
// rules = 66
// udts = 0
// opcodes = 382
// --- ABNF original opcodes
// ALT = 42
// CAT = 54
// REP = 32
// RNM = 168
// TLS = 59
// TBS = 11
// TRG = 16
// --- SABNF superset opcodes
// UDT = 0
// AND = 0
// NOT = 0
// BKA = 0
// BKN = 0
// BKR = 0
// ABG = 0
// AEN = 0
// characters = [9 - 244]
//```
/* OBJECT IDENTIFIER (for internal parser use) */
this.grammarObject = 'grammarObject';
/* RULES */
this.rules = [];
this.rules[0] = {name: 'expressionConstraint', lower: 'expressionconstraint', index: 0, isBkr: false};
this.rules[1] = {name: 'simpleExpressionConstraint', lower: 'simpleexpressionconstraint', index: 1, isBkr: false};
this.rules[2] = {name: 'refinedExpressionConstraint', lower: 'refinedexpressionconstraint', index: 2, isBkr: false};
this.rules[3] = {name: 'compoundExpressionConstraint', lower: 'compoundexpressionconstraint', index: 3, isBkr: false};
this.rules[4] = {name: 'conjunctionExpressionConstraint', lower: 'conjunctionexpressionconstraint', index: 4, isBkr: false};
this.rules[5] = {name: 'disjunctionExpressionConstraint', lower: 'disjunctionexpressionconstraint', index: 5, isBkr: false};
this.rules[6] = {name: 'exclusionExpressionConstraint', lower: 'exclusionexpressionconstraint', index: 6, isBkr: false};
this.rules[7] = {name: 'subExpressionConstraint', lower: 'subexpressionconstraint', index: 7, isBkr: false};
this.rules[8] = {name: 'focusConcept', lower: 'focusconcept', index: 8, isBkr: false};
this.rules[9] = {name: 'memberOf', lower: 'memberof', index: 9, isBkr: false};
this.rules[10] = {name: 'conceptReference', lower: 'conceptreference', index: 10, isBkr: false};
this.rules[11] = {name: 'conceptId', lower: 'conceptid', index: 11, isBkr: false};
this.rules[12] = {name: 'term', lower: 'term', index: 12, isBkr: false};
this.rules[13] = {name: 'wildCard', lower: 'wildcard', index: 13, isBkr: false};
this.rules[14] = {name: 'constraintOperator', lower: 'constraintoperator', index: 14, isBkr: false};
this.rules[15] = {name: 'descendantOf', lower: 'descendantof', index: 15, isBkr: false};
this.rules[16] = {name: 'descendantOrSelfOf', lower: 'descendantorselfof', index: 16, isBkr: false};
this.rules[17] = {name: 'ancestorOf', lower: 'ancestorof', index: 17, isBkr: false};
this.rules[18] = {name: 'ancestorOrSelfOf', lower: 'ancestororselfof', index: 18, isBkr: false};
this.rules[19] = {name: 'conjunction', lower: 'conjunction', index: 19, isBkr: false};
this.rules[20] = {name: 'disjunction', lower: 'disjunction', index: 20, isBkr: false};
this.rules[21] = {name: 'exclusion', lower: 'exclusion', index: 21, isBkr: false};
this.rules[22] = {name: 'refinement', lower: 'refinement', index: 22, isBkr: false};
this.rules[23] = {name: 'conjunctionRefinementSet', lower: 'conjunctionrefinementset', index: 23, isBkr: false};
this.rules[24] = {name: 'disjunctionRefinementSet', lower: 'disjunctionrefinementset', index: 24, isBkr: false};
this.rules[25] = {name: 'subRefinement', lower: 'subrefinement', index: 25, isBkr: false};
this.rules[26] = {name: 'attributeSet', lower: 'attributeset', index: 26, isBkr: false};
this.rules[27] = {name: 'conjunctionAttributeSet', lower: 'conjunctionattributeset', index: 27, isBkr: false};
this.rules[28] = {name: 'disjunctionAttributeSet', lower: 'disjunctionattributeset', index: 28, isBkr: false};
this.rules[29] = {name: 'subAttributeSet', lower: 'subattributeset', index: 29, isBkr: false};
this.rules[30] = {name: 'attributeGroup', lower: 'attributegroup', index: 30, isBkr: false};
this.rules[31] = {name: 'attribute', lower: 'attribute', index: 31, isBkr: false};
this.rules[32] = {name: 'cardinality', lower: 'cardinality', index: 32, isBkr: false};
this.rules[33] = {name: 'to', lower: 'to', index: 33, isBkr: false};
this.rules[34] = {name: 'many', lower: 'many', index: 34, isBkr: false};
this.rules[35] = {name: 'reverseFlag', lower: 'reverseflag', index: 35, isBkr: false};
this.rules[36] = {name: 'attributeOperator', lower: 'attributeoperator', index: 36, isBkr: false};
this.rules[37] = {name: 'attributeName', lower: 'attributename', index: 37, isBkr: false};
this.rules[38] = {name: 'expressionConstraintValue', lower: 'expressionconstraintvalue', index: 38, isBkr: false};
this.rules[39] = {name: 'expressionComparisonOperator', lower: 'expressioncomparisonoperator', index: 39, isBkr: false};
this.rules[40] = {name: 'numericComparisonOperator', lower: 'numericcomparisonoperator', index: 40, isBkr: false};
this.rules[41] = {name: 'stringComparisonOperator', lower: 'stringcomparisonoperator', index: 41, isBkr: false};
this.rules[42] = {name: 'numericValue', lower: 'numericvalue', index: 42, isBkr: false};
this.rules[43] = {name: 'stringValue', lower: 'stringvalue', index: 43, isBkr: false};
this.rules[44] = {name: 'integerValue', lower: 'integervalue', index: 44, isBkr: false};
this.rules[45] = {name: 'decimalValue', lower: 'decimalvalue', index: 45, isBkr: false};
this.rules[46] = {name: 'nonNegativeIntegerValue', lower: 'nonnegativeintegervalue', index: 46, isBkr: false};
this.rules[47] = {name: 'sctId', lower: 'sctid', index: 47, isBkr: false};
this.rules[48] = {name: 'ws', lower: 'ws', index: 48, isBkr: false};
this.rules[49] = {name: 'mws', lower: 'mws', index: 49, isBkr: false};
this.rules[50] = {name: 'SP', lower: 'sp', index: 50, isBkr: false};
this.rules[51] = {name: 'HTAB', lower: 'htab', index: 51, isBkr: false};
this.rules[52] = {name: 'CR', lower: 'cr', index: 52, isBkr: false};
this.rules[53] = {name: 'LF', lower: 'lf', index: 53, isBkr: false};
this.rules[54] = {name: 'QM', lower: 'qm', index: 54, isBkr: false};
this.rules[55] = {name: 'BS', lower: 'bs', index: 55, isBkr: false};
this.rules[56] = {name: 'digit', lower: 'digit', index: 56, isBkr: false};
this.rules[57] = {name: 'zero', lower: 'zero', index: 57, isBkr: false};
this.rules[58] = {name: 'digitNonZero', lower: 'digitnonzero', index: 58, isBkr: false};
this.rules[59] = {name: 'nonwsNonPipe', lower: 'nonwsnonpipe', index: 59, isBkr: false};
this.rules[60] = {name: 'anyNonEscapedChar', lower: 'anynonescapedchar', index: 60, isBkr: false};
this.rules[61] = {name: 'escapedChar', lower: 'escapedchar', index: 61, isBkr: false};
this.rules[62] = {name: 'UTF8-2', lower: 'utf8-2', index: 62, isBkr: false};
this.rules[63] = {name: 'UTF8-3', lower: 'utf8-3', index: 63, isBkr: false};
this.rules[64] = {name: 'UTF8-4', lower: 'utf8-4', index: 64, isBkr: false};
this.rules[65] = {name: 'UTF8-tail', lower: 'utf8-tail', index: 65, isBkr: false};
/* UDTS */
this.udts = [];
/* OPCODES */
/* expressionConstraint */
this.rules[0].opcodes = [];
this.rules[0].opcodes[0] = {type: 2, children: [1,2,6]};// CAT
this.rules[0].opcodes[1] = {type: 4, index: 48};// RNM(ws)
this.rules[0].opcodes[2] = {type: 1, children: [3,4,5]};// ALT
this.rules[0].opcodes[3] = {type: 4, index: 2};// RNM(refinedExpressionConstraint)
this.rules[0].opcodes[4] = {type: 4, index: 3};// RNM(compoundExpressionConstraint)
this.rules[0].opcodes[5] = {type: 4, index: 1};// RNM(simpleExpressionConstraint)
this.rules[0].opcodes[6] = {type: 4, index: 48};// RNM(ws)
/* simpleExpressionConstraint */
this.rules[1].opcodes = [];
this.rules[1].opcodes[0] = {type: 2, children: [1,5]};// CAT
this.rules[1].opcodes[1] = {type: 3, min: 0, max: 1};// REP
this.rules[1].opcodes[2] = {type: 2, children: [3,4]};// CAT
this.rules[1].opcodes[3] = {type: 4, index: 14};// RNM(constraintOperator)
this.rules[1].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[1].opcodes[5] = {type: 4, index: 8};// RNM(focusConcept)
/* refinedExpressionConstraint */
this.rules[2].opcodes = [];
this.rules[2].opcodes[0] = {type: 2, children: [1,2,3,4,5]};// CAT
this.rules[2].opcodes[1] = {type: 4, index: 1};// RNM(simpleExpressionConstraint)
this.rules[2].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[2].opcodes[3] = {type: 7, string: [58]};// TLS
this.rules[2].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[2].opcodes[5] = {type: 4, index: 22};// RNM(refinement)
/* compoundExpressionConstraint */
this.rules[3].opcodes = [];
this.rules[3].opcodes[0] = {type: 1, children: [1,2,3]};// ALT
this.rules[3].opcodes[1] = {type: 4, index: 4};// RNM(conjunctionExpressionConstraint)
this.rules[3].opcodes[2] = {type: 4, index: 5};// RNM(disjunctionExpressionConstraint)
this.rules[3].opcodes[3] = {type: 4, index: 6};// RNM(exclusionExpressionConstraint)
/* conjunctionExpressionConstraint */
this.rules[4].opcodes = [];
this.rules[4].opcodes[0] = {type: 2, children: [1,2]};// CAT
this.rules[4].opcodes[1] = {type: 4, index: 7};// RNM(subExpressionConstraint)
this.rules[4].opcodes[2] = {type: 3, min: 1, max: Infinity};// REP
this.rules[4].opcodes[3] = {type: 2, children: [4,5,6,7]};// CAT
this.rules[4].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[4].opcodes[5] = {type: 4, index: 19};// RNM(conjunction)
this.rules[4].opcodes[6] = {type: 4, index: 48};// RNM(ws)
this.rules[4].opcodes[7] = {type: 4, index: 7};// RNM(subExpressionConstraint)
/* disjunctionExpressionConstraint */
this.rules[5].opcodes = [];
this.rules[5].opcodes[0] = {type: 2, children: [1,2]};// CAT
this.rules[5].opcodes[1] = {type: 4, index: 7};// RNM(subExpressionConstraint)
this.rules[5].opcodes[2] = {type: 3, min: 1, max: Infinity};// REP
this.rules[5].opcodes[3] = {type: 2, children: [4,5,6,7]};// CAT
this.rules[5].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[5].opcodes[5] = {type: 4, index: 20};// RNM(disjunction)
this.rules[5].opcodes[6] = {type: 4, index: 48};// RNM(ws)
this.rules[5].opcodes[7] = {type: 4, index: 7};// RNM(subExpressionConstraint)
/* exclusionExpressionConstraint */
this.rules[6].opcodes = [];
this.rules[6].opcodes[0] = {type: 2, children: [1,2,3,4,5]};// CAT
this.rules[6].opcodes[1] = {type: 4, index: 7};// RNM(subExpressionConstraint)
this.rules[6].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[6].opcodes[3] = {type: 4, index: 21};// RNM(exclusion)
this.rules[6].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[6].opcodes[5] = {type: 4, index: 7};// RNM(subExpressionConstraint)
/* subExpressionConstraint */
this.rules[7].opcodes = [];
this.rules[7].opcodes[0] = {type: 1, children: [1,2]};// ALT
this.rules[7].opcodes[1] = {type: 4, index: 1};// RNM(simpleExpressionConstraint)
this.rules[7].opcodes[2] = {type: 2, children: [3,4,5,8,9]};// CAT
this.rules[7].opcodes[3] = {type: 7, string: [40]};// TLS
this.rules[7].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[7].opcodes[5] = {type: 1, children: [6,7]};// ALT
this.rules[7].opcodes[6] = {type: 4, index: 3};// RNM(compoundExpressionConstraint)
this.rules[7].opcodes[7] = {type: 4, index: 2};// RNM(refinedExpressionConstraint)
this.rules[7].opcodes[8] = {type: 4, index: 48};// RNM(ws)
this.rules[7].opcodes[9] = {type: 7, string: [41]};// TLS
/* focusConcept */
this.rules[8].opcodes = [];
this.rules[8].opcodes[0] = {type: 2, children: [1,5]};// CAT
this.rules[8].opcodes[1] = {type: 3, min: 0, max: 1};// REP
this.rules[8].opcodes[2] = {type: 2, children: [3,4]};// CAT
this.rules[8].opcodes[3] = {type: 4, index: 9};// RNM(memberOf)
this.rules[8].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[8].opcodes[5] = {type: 1, children: [6,7]};// ALT
this.rules[8].opcodes[6] = {type: 4, index: 10};// RNM(conceptReference)
this.rules[8].opcodes[7] = {type: 4, index: 13};// RNM(wildCard)
/* memberOf */
this.rules[9].opcodes = [];
this.rules[9].opcodes[0] = {type: 7, string: [94]};// TLS
/* conceptReference */
this.rules[10].opcodes = [];
this.rules[10].opcodes[0] = {type: 2, children: [1,2]};// CAT
this.rules[10].opcodes[1] = {type: 4, index: 11};// RNM(conceptId)
this.rules[10].opcodes[2] = {type: 3, min: 0, max: 1};// REP
this.rules[10].opcodes[3] = {type: 2, children: [4,5,6,7,8,9]};// CAT
this.rules[10].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[10].opcodes[5] = {type: 7, string: [124]};// TLS
this.rules[10].opcodes[6] = {type: 4, index: 48};// RNM(ws)
this.rules[10].opcodes[7] = {type: 4, index: 12};// RNM(term)
this.rules[10].opcodes[8] = {type: 4, index: 48};// RNM(ws)
this.rules[10].opcodes[9] = {type: 7, string: [124]};// TLS
/* conceptId */
this.rules[11].opcodes = [];
this.rules[11].opcodes[0] = {type: 4, index: 47};// RNM(sctId)
/* term */
this.rules[12].opcodes = [];
this.rules[12].opcodes[0] = {type: 2, children: [1,3]};// CAT
this.rules[12].opcodes[1] = {type: 3, min: 1, max: Infinity};// REP
this.rules[12].opcodes[2] = {type: 4, index: 59};// RNM(nonwsNonPipe)
this.rules[12].opcodes[3] = {type: 3, min: 0, max: Infinity};// REP
this.rules[12].opcodes[4] = {type: 2, children: [5,7]};// CAT
this.rules[12].opcodes[5] = {type: 3, min: 1, max: Infinity};// REP
this.rules[12].opcodes[6] = {type: 4, index: 50};// RNM(SP)
this.rules[12].opcodes[7] = {type: 3, min: 1, max: Infinity};// REP
this.rules[12].opcodes[8] = {type: 4, index: 59};// RNM(nonwsNonPipe)
/* wildCard */
this.rules[13].opcodes = [];
this.rules[13].opcodes[0] = {type: 7, string: [42]};// TLS
/* constraintOperator */
this.rules[14].opcodes = [];
this.rules[14].opcodes[0] = {type: 1, children: [1,2,3,4]};// ALT
this.rules[14].opcodes[1] = {type: 4, index: 16};// RNM(descendantOrSelfOf)
this.rules[14].opcodes[2] = {type: 4, index: 15};// RNM(descendantOf)
this.rules[14].opcodes[3] = {type: 4, index: 18};// RNM(ancestorOrSelfOf)
this.rules[14].opcodes[4] = {type: 4, index: 17};// RNM(ancestorOf)
/* descendantOf */
this.rules[15].opcodes = [];
this.rules[15].opcodes[0] = {type: 7, string: [60]};// TLS
/* descendantOrSelfOf */
this.rules[16].opcodes = [];
this.rules[16].opcodes[0] = {type: 7, string: [60,60]};// TLS
/* ancestorOf */
this.rules[17].opcodes = [];
this.rules[17].opcodes[0] = {type: 7, string: [62]};// TLS
/* ancestorOrSelfOf */
this.rules[18].opcodes = [];
this.rules[18].opcodes[0] = {type: 7, string: [62,62]};// TLS
/* conjunction */
this.rules[19].opcodes = [];
this.rules[19].opcodes[0] = {type: 1, children: [1,12]};// ALT
this.rules[19].opcodes[1] = {type: 2, children: [2,5,8,11]};// CAT
this.rules[19].opcodes[2] = {type: 1, children: [3,4]};// ALT
this.rules[19].opcodes[3] = {type: 7, string: [97]};// TLS
this.rules[19].opcodes[4] = {type: 7, string: [97]};// TLS
this.rules[19].opcodes[5] = {type: 1, children: [6,7]};// ALT
this.rules[19].opcodes[6] = {type: 7, string: [110]};// TLS
this.rules[19].opcodes[7] = {type: 7, string: [110]};// TLS
this.rules[19].opcodes[8] = {type: 1, children: [9,10]};// ALT
this.rules[19].opcodes[9] = {type: 7, string: [100]};// TLS
this.rules[19].opcodes[10] = {type: 7, string: [100]};// TLS
this.rules[19].opcodes[11] = {type: 4, index: 49};// RNM(mws)
this.rules[19].opcodes[12] = {type: 7, string: [44]};// TLS
/* disjunction */
this.rules[20].opcodes = [];
this.rules[20].opcodes[0] = {type: 2, children: [1,4,7]};// CAT
this.rules[20].opcodes[1] = {type: 1, children: [2,3]};// ALT
this.rules[20].opcodes[2] = {type: 7, string: [111]};// TLS
this.rules[20].opcodes[3] = {type: 7, string: [111]};// TLS
this.rules[20].opcodes[4] = {type: 1, children: [5,6]};// ALT
this.rules[20].opcodes[5] = {type: 7, string: [114]};// TLS
this.rules[20].opcodes[6] = {type: 7, string: [114]};// TLS
this.rules[20].opcodes[7] = {type: 4, index: 49};// RNM(mws)
/* exclusion */
this.rules[21].opcodes = [];
this.rules[21].opcodes[0] = {type: 2, children: [1,4,7,10,13,16]};// CAT
this.rules[21].opcodes[1] = {type: 1, children: [2,3]};// ALT
this.rules[21].opcodes[2] = {type: 7, string: [109]};// TLS
this.rules[21].opcodes[3] = {type: 7, string: [109]};// TLS
this.rules[21].opcodes[4] = {type: 1, children: [5,6]};// ALT
this.rules[21].opcodes[5] = {type: 7, string: [105]};// TLS
this.rules[21].opcodes[6] = {type: 7, string: [105]};// TLS
this.rules[21].opcodes[7] = {type: 1, children: [8,9]};// ALT
this.rules[21].opcodes[8] = {type: 7, string: [110]};// TLS
this.rules[21].opcodes[9] = {type: 7, string: [110]};// TLS
this.rules[21].opcodes[10] = {type: 1, children: [11,12]};// ALT
this.rules[21].opcodes[11] = {type: 7, string: [117]};// TLS
this.rules[21].opcodes[12] = {type: 7, string: [117]};// TLS
this.rules[21].opcodes[13] = {type: 1, children: [14,15]};// ALT
this.rules[21].opcodes[14] = {type: 7, string: [115]};// TLS
this.rules[21].opcodes[15] = {type: 7, string: [115]};// TLS
this.rules[21].opcodes[16] = {type: 4, index: 49};// RNM(mws)
/* refinement */
this.rules[22].opcodes = [];
this.rules[22].opcodes[0] = {type: 2, children: [1,2,3]};// CAT
this.rules[22].opcodes[1] = {type: 4, index: 25};// RNM(subRefinement)
this.rules[22].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[22].opcodes[3] = {type: 3, min: 0, max: 1};// REP
this.rules[22].opcodes[4] = {type: 1, children: [5,6]};// ALT
this.rules[22].opcodes[5] = {type: 4, index: 23};// RNM(conjunctionRefinementSet)
this.rules[22].opcodes[6] = {type: 4, index: 24};// RNM(disjunctionRefinementSet)
/* conjunctionRefinementSet */
this.rules[23].opcodes = [];
this.rules[23].opcodes[0] = {type: 3, min: 1, max: Infinity};// REP
this.rules[23].opcodes[1] = {type: 2, children: [2,3,4,5]};// CAT
this.rules[23].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[23].opcodes[3] = {type: 4, index: 19};// RNM(conjunction)
this.rules[23].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[23].opcodes[5] = {type: 4, index: 25};// RNM(subRefinement)
/* disjunctionRefinementSet */
this.rules[24].opcodes = [];
this.rules[24].opcodes[0] = {type: 3, min: 1, max: Infinity};// REP
this.rules[24].opcodes[1] = {type: 2, children: [2,3,4,5]};// CAT
this.rules[24].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[24].opcodes[3] = {type: 4, index: 20};// RNM(disjunction)
this.rules[24].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[24].opcodes[5] = {type: 4, index: 25};// RNM(subRefinement)
/* subRefinement */
this.rules[25].opcodes = [];
this.rules[25].opcodes[0] = {type: 1, children: [1,2,3]};// ALT
this.rules[25].opcodes[1] = {type: 4, index: 26};// RNM(attributeSet)
this.rules[25].opcodes[2] = {type: 4, index: 30};// RNM(attributeGroup)
this.rules[25].opcodes[3] = {type: 2, children: [4,5,6,7,8]};// CAT
this.rules[25].opcodes[4] = {type: 7, string: [40]};// TLS
this.rules[25].opcodes[5] = {type: 4, index: 48};// RNM(ws)
this.rules[25].opcodes[6] = {type: 4, index: 22};// RNM(refinement)
this.rules[25].opcodes[7] = {type: 4, index: 48};// RNM(ws)
this.rules[25].opcodes[8] = {type: 7, string: [41]};// TLS
/* attributeSet */
this.rules[26].opcodes = [];
this.rules[26].opcodes[0] = {type: 2, children: [1,2,3]};// CAT
this.rules[26].opcodes[1] = {type: 4, index: 29};// RNM(subAttributeSet)
this.rules[26].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[26].opcodes[3] = {type: 3, min: 0, max: 1};// REP
this.rules[26].opcodes[4] = {type: 1, children: [5,6]};// ALT
this.rules[26].opcodes[5] = {type: 4, index: 27};// RNM(conjunctionAttributeSet)
this.rules[26].opcodes[6] = {type: 4, index: 28};// RNM(disjunctionAttributeSet)
/* conjunctionAttributeSet */
this.rules[27].opcodes = [];
this.rules[27].opcodes[0] = {type: 3, min: 1, max: Infinity};// REP
this.rules[27].opcodes[1] = {type: 2, children: [2,3,4,5]};// CAT
this.rules[27].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[27].opcodes[3] = {type: 4, index: 19};// RNM(conjunction)
this.rules[27].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[27].opcodes[5] = {type: 4, index: 29};// RNM(subAttributeSet)
/* disjunctionAttributeSet */
this.rules[28].opcodes = [];
this.rules[28].opcodes[0] = {type: 3, min: 1, max: Infinity};// REP
this.rules[28].opcodes[1] = {type: 2, children: [2,3,4,5]};// CAT
this.rules[28].opcodes[2] = {type: 4, index: 48};// RNM(ws)
this.rules[28].opcodes[3] = {type: 4, index: 20};// RNM(disjunction)
this.rules[28].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[28].opcodes[5] = {type: 4, index: 29};// RNM(subAttributeSet)
/* subAttributeSet */
this.rules[29].opcodes = [];
this.rules[29].opcodes[0] = {type: 1, children: [1,2]};// ALT
this.rules[29].opcodes[1] = {type: 4, index: 31};// RNM(attribute)
this.rules[29].opcodes[2] = {type: 2, children: [3,4,5,6,7]};// CAT
this.rules[29].opcodes[3] = {type: 7, string: [40]};// TLS
this.rules[29].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[29].opcodes[5] = {type: 4, index: 26};// RNM(attributeSet)
this.rules[29].opcodes[6] = {type: 4, index: 48};// RNM(ws)
this.rules[29].opcodes[7] = {type: 7, string: [41]};// TLS
/* attributeGroup */
this.rules[30].opcodes = [];
this.rules[30].opcodes[0] = {type: 2, children: [1,5,6,7,8,9]};// CAT
this.rules[30].opcodes[1] = {type: 3, min: 0, max: 1};// REP
this.rules[30].opcodes[2] = {type: 2, children: [3,4]};// CAT
this.rules[30].opcodes[3] = {type: 4, index: 32};// RNM(cardinality)
this.rules[30].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[30].opcodes[5] = {type: 7, string: [123]};// TLS
this.rules[30].opcodes[6] = {type: 4, index: 48};// RNM(ws)
this.rules[30].opcodes[7] = {type: 4, index: 26};// RNM(attributeSet)
this.rules[30].opcodes[8] = {type: 4, index: 48};// RNM(ws)
this.rules[30].opcodes[9] = {type: 7, string: [125]};// TLS
/* attribute */
this.rules[31].opcodes = [];
this.rules[31].opcodes[0] = {type: 2, children: [1,5,9,13,14,15]};// CAT
this.rules[31].opcodes[1] = {type: 3, min: 0, max: 1};// REP
this.rules[31].opcodes[2] = {type: 2, children: [3,4]};// CAT
this.rules[31].opcodes[3] = {type: 4, index: 32};// RNM(cardinality)
this.rules[31].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[31].opcodes[5] = {type: 3, min: 0, max: 1};// REP
this.rules[31].opcodes[6] = {type: 2, children: [7,8]};// CAT
this.rules[31].opcodes[7] = {type: 4, index: 35};// RNM(reverseFlag)
this.rules[31].opcodes[8] = {type: 4, index: 48};// RNM(ws)
this.rules[31].opcodes[9] = {type: 3, min: 0, max: 1};// REP
this.rules[31].opcodes[10] = {type: 2, children: [11,12]};// CAT
this.rules[31].opcodes[11] = {type: 4, index: 36};// RNM(attributeOperator)
this.rules[31].opcodes[12] = {type: 4, index: 48};// RNM(ws)
this.rules[31].opcodes[13] = {type: 4, index: 37};// RNM(attributeName)
this.rules[31].opcodes[14] = {type: 4, index: 48};// RNM(ws)
this.rules[31].opcodes[15] = {type: 1, children: [16,20,24]};// ALT
this.rules[31].opcodes[16] = {type: 2, children: [17,18,19]};// CAT
this.rules[31].opcodes[17] = {type: 4, index: 39};// RNM(expressionComparisonOperator)
this.rules[31].opcodes[18] = {type: 4, index: 48};// RNM(ws)
this.rules[31].opcodes[19] = {type: 4, index: 38};// RNM(expressionConstraintValue)
this.rules[31].opcodes[20] = {type: 2, children: [21,22,23]};// CAT
this.rules[31].opcodes[21] = {type: 4, index: 40};// RNM(numericComparisonOperator)
this.rules[31].opcodes[22] = {type: 4, index: 48};// RNM(ws)
this.rules[31].opcodes[23] = {type: 4, index: 42};// RNM(numericValue)
this.rules[31].opcodes[24] = {type: 2, children: [25,26,27]};// CAT
this.rules[31].opcodes[25] = {type: 4, index: 41};// RNM(stringComparisonOperator)
this.rules[31].opcodes[26] = {type: 4, index: 48};// RNM(ws)
this.rules[31].opcodes[27] = {type: 4, index: 43};// RNM(stringValue)
/* cardinality */
this.rules[32].opcodes = [];
this.rules[32].opcodes[0] = {type: 2, children: [1,2,3,4,7]};// CAT
this.rules[32].opcodes[1] = {type: 7, string: [91]};// TLS
this.rules[32].opcodes[2] = {type: 4, index: 46};// RNM(nonNegativeIntegerValue)
this.rules[32].opcodes[3] = {type: 4, index: 33};// RNM(to)
this.rules[32].opcodes[4] = {type: 1, children: [5,6]};// ALT
this.rules[32].opcodes[5] = {type: 4, index: 46};// RNM(nonNegativeIntegerValue)
this.rules[32].opcodes[6] = {type: 4, index: 34};// RNM(many)
this.rules[32].opcodes[7] = {type: 7, string: [93]};// TLS
/* to */
this.rules[33].opcodes = [];
this.rules[33].opcodes[0] = {type: 7, string: [46,46]};// TLS
/* many */
this.rules[34].opcodes = [];
this.rules[34].opcodes[0] = {type: 7, string: [42]};// TLS
/* reverseFlag */
this.rules[35].opcodes = [];
this.rules[35].opcodes[0] = {type: 7, string: [114]};// TLS
/* attributeOperator */
this.rules[36].opcodes = [];
this.rules[36].opcodes[0] = {type: 1, children: [1,2]};// ALT
this.rules[36].opcodes[1] = {type: 4, index: 16};// RNM(descendantOrSelfOf)
this.rules[36].opcodes[2] = {type: 4, index: 15};// RNM(descendantOf)
/* attributeName */
this.rules[37].opcodes = [];
this.rules[37].opcodes[0] = {type: 1, children: [1,2]};// ALT
this.rules[37].opcodes[1] = {type: 4, index: 10};// RNM(conceptReference)
this.rules[37].opcodes[2] = {type: 4, index: 13};// RNM(wildCard)
/* expressionConstraintValue */
this.rules[38].opcodes = [];
this.rules[38].opcodes[0] = {type: 1, children: [1,2]};// ALT
this.rules[38].opcodes[1] = {type: 4, index: 1};// RNM(simpleExpressionConstraint)
this.rules[38].opcodes[2] = {type: 2, children: [3,4,5,8,9]};// CAT
this.rules[38].opcodes[3] = {type: 7, string: [40]};// TLS
this.rules[38].opcodes[4] = {type: 4, index: 48};// RNM(ws)
this.rules[38].opcodes[5] = {type: 1, children: [6,7]};// ALT
this.rules[38].opcodes[6] = {type: 4, index: 2};// RNM(refinedExpressionConstraint)
this.rules[38].opcodes[7] = {type: 4, index: 3};// RNM(compoundExpressionConstraint)
this.rules[38].opcodes[8] = {type: 4, index: 48};// RNM(ws)
this.rules[38].opcodes[9] = {type: 7, string: [41]};// TLS
/* expressionComparisonOperator */
this.rules[39].opcodes = [];
this.rules[39].opcodes[0] = {type: 1, children: [1,2]};// ALT
this.rules[39].opcodes[1] = {type: 7, string: [61]};// TLS
this.rules[39].opcodes[2] = {type: 7, string: [33,61]};// TLS
/* numericComparisonOperator */
this.rules[40].opcodes = [];
this.rules[40].opcodes[0] = {type: 1, children: [1,2,3,4,5,6]};// ALT
this.rules[40].opcodes[1] = {type: 7, string: [61]};// TLS
this.rules[40].opcodes[2] = {type: 7, string: [33,61]};// TLS
this.rules[40].opcodes[3] = {type: 7, string: [60,61]};// TLS
this.rules[40].opcodes[4] = {type: 7, string: [60]};// TLS
this.rules[40].opcodes[5] = {type: 7, string: [62,61]};// TLS
this.rules[40].opcodes[6] = {type: 7, string: [62]};// TLS
/* stringComparisonOperator */
this.rules[41].opcodes = [];
this.rules[41].opcodes[0] = {type: 1, children: [1,2]};// ALT
this.rules[41].opcodes[1] = {type: 7, string: [61]};// TLS
this.rules[41].opcodes[2] = {type: 7, string: [33,61]};// TLS
/* numericValue */
this.rules[42].opcodes = [];
this.rules[42].opcodes[0] = {type: 2, children: [1,2]};// CAT
this.rules[42].opcodes[1] = {type: 7, string: [35]};// TLS
this.rules[42].opcodes[2] = {type: 1, children: [3,4]};// ALT
this.rules[42].opcodes[3] = {type: 4, index: 45};// RNM(decimalValue)
this.rules[42].opcodes[4] = {type: 4, index: 44};// RNM(integerValue)
/* stringValue */
this.rules[43].opcodes = [];
this.rules[43].opcodes[0] = {type: 2, children: [1,2,6]};// CAT
this.rules[43].opcodes[1] = {type: 4, index: 54};// RNM(QM)
this.rules[43].opcodes[2] = {type: 3, min: 1, max: Infinity};// REP
this.rules[43].opcodes[3] = {type: 1, children: [4,5]};// ALT
this.rules[43].opcodes[4] = {type: 4, index: 60};// RNM(anyNonEscapedChar)
this.rules[43].opcodes[5] = {type: 4, index: 61};// RNM(escapedChar)
this.rules[43].opcodes[6] = {type: 4, index: 54};// RNM(QM)
/* integerValue */
this.rules[44].opcodes = [];
this.rules[44].opcodes[0] = {type: 1, children: [1,9]};// ALT
this.rules[44].opcodes[1] = {type: 2, children: [2,6,7]};// CAT
this.rules[44].opcodes[2] = {type: 3, min: 0, max: 1};// REP
this.rules[44].opcodes[3] = {type: 1, children: [4,5]};// ALT
this.rules[44].opcodes[4] = {type: 7, string: [45]};// TLS
this.rules[44].opcodes[5] = {type: 7, string: [43]};// TLS
this.rules[44].opcodes[6] = {type: 4, index: 58};// RNM(digitNonZero)
this.rules[44].opcodes[7] = {type: 3, min: 0, max: Infinity};// REP
this.rules[44].opcodes[8] = {type: 4, index: 56};// RNM(digit)
this.rules[44].opcodes[9] = {type: 4, index: 57};// RNM(zero)
/* decimalValue */
this.rules[45].opcodes = [];
this.rules[45].opcodes[0] = {type: 2, children: [1,2,3]};// CAT
this.rules[45].opcodes[1] = {type: 4, index: 44};// RNM(integerValue)
this.rules[45].opcodes[2] = {type: 7, string: [46]};// TLS
this.rules[45].opcodes[3] = {type: 3, min: 1, max: Infinity};// REP
this.rules[45].opcodes[4] = {type: 4, index: 56};// RNM(digit)
/* nonNegativeIntegerValue */
this.rules[46].opcodes = [];
this.rules[46].opcodes[0] = {type: 1, children: [1,5]};// ALT
this.rules[46].opcodes[1] = {type: 2, children: [2,3]};// CAT
this.rules[46].opcodes[2] = {type: 4, index: 58};// RNM(digitNonZero)
this.rules[46].opcodes[3] = {type: 3, min: 0, max: Infinity};// REP
this.rules[46].opcodes[4] = {type: 4, index: 56};// RNM(digit)
this.rules[46].opcodes[5] = {type: 4, index: 57};// RNM(zero)
/* sctId */
this.rules[47].opcodes = [];
this.rules[47].opcodes[0] = {type: 2, children: [1,2]};// CAT
this.rules[47].opcodes[1] = {type: 4, index: 58};// RNM(digitNonZero)
this.rules[47].opcodes[2] = {type: 3, min: 5, max: 17};// REP
this.rules[47].opcodes[3] = {type: 4, index: 56};// RNM(digit)
/* ws */
this.rules[48].opcodes = [];
this.rules[48].opcodes[0] = {type: 3, min: 0, max: Infinity};// REP
this.rules[48].opcodes[1] = {type: 1, children: [2,3,4,5]};// ALT
this.rules[48].opcodes[2] = {type: 4, index: 50};// RNM(SP)
this.rules[48].opcodes[3] = {type: 4, index: 51};// RNM(HTAB)
this.rules[48].opcodes[4] = {type: 4, index: 52};// RNM(CR)
this.rules[48].opcodes[5] = {type: 4, index: 53};// RNM(LF)
/* mws */
this.rules[49].opcodes = [];
this.rules[49].opcodes[0] = {type: 3, min: 1, max: Infinity};// REP
this.rules[49].opcodes[1] = {type: 1, children: [2,3,4,5]};// ALT
this.rules[49].opcodes[2] = {type: 4, index: 50};// RNM(SP)
this.rules[49].opcodes[3] = {type: 4, index: 51};// RNM(HTAB)
this.rules[49].opcodes[4] = {type: 4, index: 52};// RNM(CR)
this.rules[49].opcodes[5] = {type: 4, index: 53};// RNM(LF)
/* SP */
this.rules[50].opcodes = [];
this.rules[50].opcodes[0] = {type: 6, string: [32]};// TBS
/* HTAB */
this.rules[51].opcodes = [];
this.rules[51].opcodes[0] = {type: 6, string: [9]};// TBS
/* CR */
this.rules[52].opcodes = [];
this.rules[52].opcodes[0] = {type: 6, string: [13]};// TBS
/* LF */
this.rules[53].opcodes = [];
this.rules[53].opcodes[0] = {type: 6, string: [10]};// TBS
/* QM */
this.rules[54].opcodes = [];
this.rules[54].opcodes[0] = {type: 6, string: [34]};// TBS
/* BS */
this.rules[55].opcodes = [];
this.rules[55].opcodes[0] = {type: 6, string: [92]};// TBS
/* digit */
this.rules[56].opcodes = [];
this.rules[56].opcodes[0] = {type: 5, min: 48, max: 57};// TRG
/* zero */
this.rules[57].opcodes = [];
this.rules[57].opcodes[0] = {type: 6, string: [48]};// TBS
/* digitNonZero */
this.rules[58].opcodes = [];
this.rules[58].opcodes[0] = {type: 5, min: 49, max: 57};// TRG
/* nonwsNonPipe */
this.rules[59].opcodes = [];
this.rules[59].opcodes[0] = {type: 1, children: [1,2,3,4,5]};// ALT
this.rules[59].opcodes[1] = {type: 5, min: 33, max: 123};// TRG
this.rules[59].opcodes[2] = {type: 5, min: 125, max: 126};// TRG
this.rules[59].opcodes[3] = {type: 4, index: 62};// RNM(UTF8-2)
this.rules[59].opcodes[4] = {type: 4, index: 63};// RNM(UTF8-3)
this.rules[59].opcodes[5] = {type: 4, index: 64};// RNM(UTF8-4)
/* anyNonEscapedChar */
this.rules[60].opcodes = [];
this.rules[60].opcodes[0] = {type: 1, children: [1,2,3,4,5,6,7,8,9]};// ALT
this.rules[60].opcodes[1] = {type: 4, index: 51};// RNM(HTAB)
this.rules[60].opcodes[2] = {type: 4, index: 52};// RNM(CR)
this.rules[60].opcodes[3] = {type: 4, index: 53};// RNM(LF)
this.rules[60].opcodes[4] = {type: 5, min: 32, max: 33};// TRG
this.rules[60].opcodes[5] = {type: 5, min: 35, max: 91};// TRG
this.rules[60].opcodes[6] = {type: 5, min: 93, max: 126};// TRG
this.rules[60].opcodes[7] = {type: 4, index: 62};// RNM(UTF8-2)
this.rules[60].opcodes[8] = {type: 4, index: 63};// RNM(UTF8-3)
this.rules[60].opcodes[9] = {type: 4, index: 64};// RNM(UTF8-4)
/* escapedChar */
this.rules[61].opcodes = [];
this.rules[61].opcodes[0] = {type: 1, children: [1,4]};// ALT
this.rules[61].opcodes[1] = {type: 2, children: [2,3]};// CAT
this.rules[61].opcodes[2] = {type: 4, index: 55};// RNM(BS)
this.rules[61].opcodes[3] = {type: 4, index: 54};// RNM(QM)
this.rules[61].opcodes[4] = {type: 2, children: [5,6]};// CAT
this.rules[61].opcodes[5] = {type: 4, index: 55};// RNM(BS)
this.rules[61].opcodes[6] = {type: 4, index: 55};// RNM(BS)
/* UTF8-2 */
this.rules[62].opcodes = [];
this.rules[62].opcodes[0] = {type: 2, children: [1,2]};// CAT
this.rules[62].opcodes[1] = {type: 5, min: 194, max: 223};// TRG
this.rules[62].opcodes[2] = {type: 4, index: 65};// RNM(UTF8-tail)
/* UTF8-3 */
this.rules[63].opcodes = [];
this.rules[63].opcodes[0] = {type: 1, children: [1,5,9,13]};// ALT
this.rules[63].opcodes[1] = {type: 2, children: [2,3,4]};// CAT
this.rules[63].opcodes[2] = {type: 6, string: [224]};// TBS
this.rules[63].opcodes[3] = {type: 5, min: 160, max: 191};// TRG
this.rules[63].opcodes[4] = {type: 4, index: 65};// RNM(UTF8-tail)
this.rules[63].opcodes[5] = {type: 2, children: [6,7]};// CAT
this.rules[63].opcodes[6] = {type: 5, min: 225, max: 236};// TRG
this.rules[63].opcodes[7] = {type: 3, min: 2, max: 2};// REP
this.rules[63].opcodes[8] = {type: 4, index: 65};// RNM(UTF8-tail)
this.rules[63].opcodes[9] = {type: 2, children: [10,11,12]};// CAT
this.rules[63].opcodes[10] = {type: 6, string: [237]};// TBS
this.rules[63].opcodes[11] = {type: 5, min: 128, max: 159};// TRG
this.rules[63].opcodes[12] = {type: 4, index: 65};// RNM(UTF8-tail)
this.rules[63].opcodes[13] = {type: 2, children: [14,15]};// CAT
this.rules[63].opcodes[14] = {type: 5, min: 238, max: 239};// TRG
this.rules[63].opcodes[15] = {type: 3, min: 2, max: 2};// REP
this.rules[63].opcodes[16] = {type: 4, index: 65};// RNM(UTF8-tail)
/* UTF8-4 */
this.rules[64].opcodes = [];
this.rules[64].opcodes[0] = {type: 1, children: [1,6,10]};// ALT
this.rules[64].opcodes[1] = {type: 2, children: [2,3,4]};// CAT
this.rules[64].opcodes[2] = {type: 6, string: [240]};// TBS
this.rules[64].opcodes[3] = {type: 5, min: 144, max: 191};// TRG
this.rules[64].opcodes[4] = {type: 3, min: 2, max: 2};// REP
this.rules[64].opcodes[5] = {type: 4, index: 65};// RNM(UTF8-tail)
this.rules[64].opcodes[6] = {type: 2, children: [7,8]};// CAT
this.rules[64].opcodes[7] = {type: 5, min: 241, max: 243};// TRG
this.rules[64].opcodes[8] = {type: 3, min: 3, max: 3};// REP
this.rules[64].opcodes[9] = {type: 4, index: 65};// RNM(UTF8-tail)
this.rules[64].opcodes[10] = {type: 2, children: [11,12,13]};// CAT
this.rules[64].opcodes[11] = {type: 6, string: [244]};// TBS
this.rules[64].opcodes[12] = {type: 5, min: 128, max: 143};// TRG
this.rules[64].opcodes[13] = {type: 3, min: 2, max: 2};// REP
this.rules[64].opcodes[14] = {type: 4, index: 65};// RNM(UTF8-tail)
/* UTF8-tail */
this.rules[65].opcodes = [];
this.rules[65].opcodes[0] = {type: 5, min: 128, max: 191};// TRG
// The `toString()` function will display the original grammar file(s) that produced these opcodes.
this.toString = function(){
var str = "";
str += "expressionConstraint = ws ( refinedExpressionConstraint / compoundExpressionConstraint / simpleExpressionConstraint ) ws\n";
str += "simpleExpressionConstraint = [constraintOperator ws] focusConcept \n";
str += "refinedExpressionConstraint = simpleExpressionConstraint ws \":\" ws refinement\n";
str += "compoundExpressionConstraint = conjunctionExpressionConstraint / disjunctionExpressionConstraint / exclusionExpressionConstraint\n";
str += "conjunctionExpressionConstraint = subExpressionConstraint 1*(ws conjunction ws subExpressionConstraint)\n";
str += "disjunctionExpressionConstraint = subExpressionConstraint 1*(ws disjunction ws subExpressionConstraint)\n";
str += "exclusionExpressionConstraint = subExpressionConstraint ws exclusion ws subExpressionConstraint\n";
str += "subExpressionConstraint = simpleExpressionConstraint / \"(\" ws (compoundExpressionConstraint / refinedExpressionConstraint) ws \")\"\n";
str += "focusConcept = [ memberOf ws ] (conceptReference / wildCard) \n";
str += "memberOf = \"^\"\n";
str += "conceptReference = conceptId [ws \"|\" ws term ws \"|\"]\n";
str += "conceptId = sctId\n";
str += "term = 1*nonwsNonPipe *( 1*SP 1*nonwsNonPipe )\n";
str += "wildCard = \"*\"\n";
str += "constraintOperator = descendantOrSelfOf / descendantOf / ancestorOrSelfOf / ancestorOf\n";
str += "descendantOf = \"<\"\n";
str += "descendantOrSelfOf = \"<<\" \n";
str += "ancestorOf = \">\" \n";
str += "ancestorOrSelfOf = \">>\" \n";
str += "conjunction = ((\"a\"/\"A\") (\"n\"/\"N\") (\"d\"/\"D\") mws) / \",\"\n";
str += "disjunction = (\"o\"/\"O\") (\"r\"/\"R\") mws\n";
str += "exclusion = (\"m\"/\"M\") (\"i\"/\"I\") (\"n\"/\"N\") (\"u\"/\"U\") (\"s\"/\"S\") mws \n";
str += "refinement = subRefinement ws [conjunctionRefinementSet / disjunctionRefinementSet]\n";
str += "conjunctionRefinementSet = 1*(ws conjunction ws subRefinement)\n";
str += "disjunctionRefinementSet = 1*(ws disjunction ws subRefinement)\n";
str += "subRefinement = attributeSet / attributeGroup / \"(\" ws refinement ws \")\"\n";
str += "attributeSet = subAttributeSet ws [conjunctionAttributeSet / disjunctionAttributeSet]\n";
str += "conjunctionAttributeSet = 1*(ws conjunction ws subAttributeSet)\n";
str += "disjunctionAttributeSet = 1*(ws disjunction ws subAttributeSet)\n";
str += "subAttributeSet = attribute / \"(\" ws attributeSet ws \")\"\n";
str += "attributeGroup = [cardinality ws] \"{\" ws attributeSet ws \"}\"\n";
str += "attribute = [cardinality ws] [reverseFlag ws] [attributeOperator ws] attributeName ws (expressionComparisonOperator ws expressionConstraintValue / numericComparisonOperator ws numericValue / stringComparisonOperator ws stringValue )\n";
str += "cardinality = \"[\" nonNegativeIntegerValue to (nonNegativeIntegerValue / many) \"]\" \n";
str += "to = \"..\"\n";
str += "many = \"*\"\n";
str += "reverseFlag = \"R\"\n";
str += "attributeOperator = descendantOrSelfOf / descendantOf \n";
str += "attributeName = conceptReference / wildCard\n";
str += "expressionConstraintValue = simpleExpressionConstraint / \"(\" ws (refinedExpressionConstraint / compoundExpressionConstraint) ws \")\"\n";
str += "expressionComparisonOperator = \"=\" / \"!=\" \n";
str += "numericComparisonOperator = \"=\" / \"!=\" / \"<=\" / \"<\" / \">=\" / \">\"\n";
str += "stringComparisonOperator = \"=\" / \"!=\" \n";
str += "numericValue = \"#\" ( decimalValue / integerValue)\n";
str += "stringValue = QM 1*(anyNonEscapedChar / escapedChar) QM \n";
str += "integerValue = ( [\"-\"/\"+\"] digitNonZero *digit ) / zero\n";
str += "decimalValue = integerValue \".\" 1*digit\n";
str += "nonNegativeIntegerValue = (digitNonZero *digit ) / zero\n";
str += "sctId = digitNonZero 5*17( digit )\n";
str += "ws = *( SP / HTAB / CR / LF ) ; optional white space\n";
str += "mws = 1*( SP / HTAB / CR / LF ) ; mandatory white space\n";
str += "SP = %x20 ; space\n";
str += "HTAB = %x09 ; tab\n";
str += "CR = %x0D ; carriage return\n";
str += "LF = %x0A ; line feed\n";
str += "QM = %x22 ; quotation mark\n";
str += "BS = %x5C ; back slash\n";
str += "digit = %x30-39\n";
str += "zero = %x30\n";
str += "digitNonZero = %x31-39 \n";
str += "nonwsNonPipe = %x21-7B / %x7D-7E / UTF8-2 / UTF8-3 / UTF8-4\n";
str += "anyNonEscapedChar = HTAB / CR / LF / %x20-21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4\n";
str += "escapedChar = BS QM / BS BS\n";
str += "UTF8-2 = %xC2-DF UTF8-tail\n";
str += "UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )\n";
str += "UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / %xF4 %x80-8F 2( UTF8-tail )\n";
str += "UTF8-tail = %x80-BF\n";
return str;
}
}