Advertisement
Guest User

noumenon.g4

a guest
Feb 5th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BNF 15.80 KB | None | 0 0
  1. /**************
  2.  ** noumenon **
  3.  **************/
  4.  
  5. grammar noumenon;
  6.  
  7. noumenon
  8.     : sourceElements? EOF
  9.     ;
  10.  
  11. sourceElements
  12.     : sourceElement+
  13.     ;
  14.  
  15. sourceElement
  16.     : expr
  17.     | definition
  18.     ;
  19.  
  20. expr
  21.     : block              // { ... }
  22.     | declaration        // let/some x(, y, z)
  23.     | assignment         // x = y
  24.     | if                 // if x {y; z}; | if x y; | if x {y} else {z}
  25.     | case               // case a { x => y; z => w; }
  26.     | function           // fn foo(bar |Type) -> Type { bar + x }
  27.     | lambda             // x -> x + 2
  28.     | literal            // 5.4 | 82 | "foo" | 'f' | 5 |Real
  29.     | listLiteral        // [1, 2, 3]
  30.     | tupleLiteral       // (1, "2", 3)
  31.     | dictLiteral        // { key :: value, key2 :: value2, ... }
  32.     | memberIndex        // xs[2]
  33.     | slice              // xs[2:3:]
  34.     | functionCall       // fun(args) | arg1 fun arg2
  35.     | argPrefix          // arg1 : fun(arg2)
  36.     | isa                // foo isa Foo
  37.     | typeof             // typeof x
  38.     | unaryPlus          // +5
  39.     | unaryMinus         // -5
  40.     | negation           // !x
  41.     | composition        // x @ y
  42.     | exponential        // x ^ y
  43.     | multiplicative     // x * y | x / y | x % y
  44.     | additive           // x + y | x - y | x <> y
  45.     | relational         // x > y | x <|>= y | x <= y
  46.     | in                 // x in y
  47.     | equality           // x == y | x != y
  48.     | logicalAnd         // x && y
  49.     | logicalOr          // x || y
  50.     | ternary            // x ? y : z
  51.     | identifierExpr     // x | true
  52.     | parenthesizedExpr  // (x)
  53.     | guard              // | x -> y | z -> w | ...
  54.     | maybe              // x?
  55.     ;
  56.  
  57. definition
  58.     : functionDefinition
  59.     | typeDefinition
  60.     | schemaDefinition
  61.     ;
  62.  
  63. block
  64.     : '{' exprChain? '}'
  65.     ;
  66.  
  67. exprChain
  68.     : exprLink ( eos exprLink )* eos?
  69.     ;
  70.  
  71. exprLink
  72.     : expr+
  73.     ;
  74.  
  75. declaration
  76.     : declarationIdentifier variableDeclarationList eos
  77.     | declarationIdentifier variableDeclarationList '}'
  78.     ;
  79.  
  80. declarationIdentifier
  81.     : 'let'
  82.     | 'some'
  83.     ;
  84.  
  85. variableDeclarationList
  86.     : variableDeclaration ( ',' variableDeclaration )*
  87.     ;
  88.  
  89. variableDeclaration
  90.     : identifier typeAnnotation? initializer?
  91.     ;
  92.  
  93. initializer
  94.     : '=' expr
  95.     ;
  96.  
  97. if
  98.     : 'if' expr expr ( 'else' expr )?
  99.     ;
  100.  
  101. case
  102.     : 'case' expr matchBlock
  103.     ;
  104.  
  105. matchBlock
  106.     : '{' matchClauses '}'
  107.     ;
  108.  
  109. matchClauses
  110.     : matchClause+
  111.     ;
  112.  
  113. matchClause
  114.     : pattern '=>' exprChain eos
  115.     ;
  116.  
  117. functionDefinition
  118.     : functionAnnotations? 'fn' identifier '(' paramList? ')' returnType? block
  119.     ;
  120.  
  121. functionAnnotations
  122.     : functionAnnotation+
  123.     ;
  124.  
  125. functionAnnotation
  126.     : 'impure'
  127.     | 'infix'
  128.     ;
  129.  
  130. paramList
  131.     : argIdentifier ( ',' argIdentifier )*
  132.     ;
  133.  
  134. argIdentifier
  135.     : mayBeAnnotatedOrDefaultIdentifier
  136.     | '..'
  137.     | '_'
  138.     ;
  139.  
  140. mayBeAnnotatedOrDefaultIdentifier
  141.     : identifier ( '=' literal )? typeAnnotation?
  142.     ;
  143.  
  144. typeAnnotation
  145.     : '|' identifier
  146.     ;
  147.  
  148. returnType
  149.     : '->' identifier
  150.     ;
  151.  
  152. typeDefinition
  153.     : typeKeywords? 'type' identifier schemaList? '{' record? '}'
  154.     | typeKeywords? 'type' identifier schemaList? '{' union? '}'
  155.     ;
  156.  
  157. typeKeywords
  158.     : typeKeyword+
  159.     ;
  160.  
  161. typeKeyword
  162.     : 'union'
  163.     ;
  164.  
  165. schemaList
  166.     : 'exhibits' identifier ( ',' identifier )*
  167.     ;
  168.  
  169. record
  170.     : recordAssignment ( ',' recordAssignment )* ','?
  171.     ;
  172.  
  173. recordAssignment
  174.     : recordName ':' identifier
  175.     ;
  176.  
  177. recordName
  178.     : identifier
  179.     ;
  180.  
  181. union
  182.     : unionEntry ( '+' unionEntry )*
  183.     ;
  184.  
  185. unionEntry
  186.     : identifier
  187.     | identifier '(' literal ')'
  188.     ;
  189.  
  190. schemaDefinition
  191.     : 'schema' identifier inheritance? '{' functionSkeletons '}'
  192.     ;
  193.  
  194. inheritance
  195.     : 'inherits' inheritanceList
  196.     ;
  197.  
  198. inheritanceList
  199.     : identifier ( ',' identifier )*
  200.     ;
  201.  
  202. functionSkeletons
  203.     : functionSkeleton ( ',' functionSkeleton )* ','?
  204.     ;
  205.  
  206. functionSkeleton
  207.     : functionAnnotations? identifier '(' paramList? ')' returnType?
  208.     ;
  209.  
  210. listLiteral
  211.     : '[' elementList? ']'
  212.     | '[' range ']'
  213.     | '[' comprehension ']'
  214.     ;
  215.  
  216. elementList
  217.     : expr ( ',' expr )* ','?
  218.     ;
  219.  
  220. range
  221.     : identifier '..' identifier?
  222.     | charLiteral '..' charLiteral?
  223.     | numericLiteral '..' numericLiteral?
  224.     ;
  225.  
  226. comprehension
  227.     : expr '|' identifier '<-' expr
  228.     ;
  229.  
  230. dictLiteral
  231.     : '{#' propertyNameAndValueList? ','? '#}'
  232.     ;
  233.  
  234. propertyNameAndValueList
  235.     : propertyAssignment ( ',' propertyAssignment )* ','?
  236.     ;
  237.  
  238. propertyAssignment
  239.     : propertyName ':' expr
  240.     ;
  241.  
  242. propertyName
  243.     : identifierName
  244.     | stringLiteral
  245.     ;
  246.  
  247. propertySetParameterList
  248.     : identifier
  249.     ;
  250.  
  251. literal
  252.     : booleanLiteral
  253.     | stringLiteral
  254.     | charLiteral
  255.     | numericLiteral
  256.     ;
  257.  
  258. numericLiteral
  259.     : decimalLiteral
  260.     | hexIntegerLiteral
  261.     | octalIntegerLiteral
  262.     ;
  263.  
  264. identifierName
  265.     : identifier
  266.     | reservedWord
  267.     ;
  268.  
  269. reservedWord
  270.     : keyword
  271.     | booleanLiteral
  272.     ;
  273.  
  274. keyword
  275.     : 'isa'
  276.     | 'let'
  277.     | 'some'
  278.     | 'typeof'
  279.     | 'case'
  280.     | 'if'
  281.     | 'else'
  282.     | 'elseif'
  283.     | 'fn'
  284.     | 'in'
  285.     | 'type'
  286.     | 'schema'
  287.     | 'union'
  288.     | 'infix'
  289.     | 'impure'
  290.     | 'exhibits'
  291.     | 'inherits'
  292.     | 'use'
  293.     | 'as'
  294.     | 'module'
  295.     | 'endmodule'
  296.     ;
  297.  
  298. eos
  299.     : ';'
  300.     | EOF
  301.     ;
  302.  
  303. eof
  304.     : EOF
  305.     ;
  306.  
  307. booleanLiteral
  308.     : 'true'
  309.     | 'false'
  310.     ;
  311.  
  312. decimalLiteral
  313.     : decimalIntegerLiteral '.' decimalDigit* exponentPart?
  314.     | '.' decimalDigit+ exponentPart?
  315.     | decimalIntegerLiteral exponentPart?
  316.     ;
  317.  
  318. hexIntegerLiteral
  319.     : '0' [xX] hexDigit+
  320.     ;
  321.  
  322. octalIntegerLiteral
  323.     : '0' octalDigit+
  324.     ;
  325.  
  326. stringLiteral
  327.     : '"' doubleStringCharacter* '"'
  328.     | '\'' singleStringCharacter* '\''
  329.     ;
  330.  
  331. identifier
  332.     : identifierStart identifierPart*
  333.     ;
  334.  
  335. MultiLineComment
  336.     : '/*' .*? '*/' -> channel(HIDDEN)
  337.     ;
  338.  
  339. SingleLineComment
  340.     : '//' ~[\r\n\u2028\u2029]* -> channel(HIDDEN)
  341.     ;
  342.  
  343. UnexpectedCharacter
  344.     : .
  345.     ;
  346.  
  347. fragment escapeSequence
  348.     : characterEscapeSequence
  349.     | hexEscapeSequence
  350.     | unicodeEscapeSequence
  351.     ;
  352.  
  353. fragment characterEscapeSequence
  354.     : singleEscapeCharacter
  355.     | nonEscapeCharacter
  356.     ;
  357.  
  358. fragment hexEscapeSequence
  359.     : 'x' hexDigit hexDigit
  360.     ;
  361.  
  362. fragment unicodeEscapeSequence
  363.     : 'u' hexDigit hexDigit hexDigit hexDigit
  364.     ;
  365.  
  366. fragment escapeCharacter
  367.     : singleEscapeCharacter
  368.     | [xu]
  369.     ;
  370.  
  371. fragment decimalDigit
  372.     : [0-9]
  373.     ;
  374.  
  375. fragment hexDigit
  376.     : [0-9a-fA-F]
  377.     ;
  378.  
  379. fragment octalDigit
  380.     : [0-7]
  381.     ;
  382.  
  383. fragment decimalIntegerLiteral
  384.     : '0'
  385.     | [1-9] decimalDigit*
  386.     ;
  387.  
  388. fragment exponentPart
  389.     : [eE] [+-]? decimalDigit+
  390.     ;
  391.  
  392. fragment identifierStart
  393.     : unicodeLetter
  394.     | '$'
  395.     | '_' unicodeLetter
  396.     ;
  397.  
  398. fragment identifierPart
  399.     : identifierStart
  400.     | unicodeCombiningMark
  401.     | unicodeDigit
  402.     | unicodeConnectorPunctuation
  403.     | ZWNJ
  404.     | ZWJ
  405.     ;
  406.  
  407. WS
  408.     : [ \t\r\n\u2028\u2029\u000B\u000C\u0020\u00A0]+ -> skip
  409.     ;
  410.  
  411. fragment singleStringCharacter
  412.     : ~['\\\r\n]
  413.    | '\\' escapeSequence
  414.    ;
  415.  
  416. fragment doubleStringCharacter
  417.    : ~["\\\r\n]
  418.    | '\\' escapeSequence
  419.    ;
  420.  
  421. fragment singleEscapeCharacter
  422.    : ['"\\bfnrtv]
  423.    ;
  424.  
  425. fragment nonEscapeCharacter
  426.    : ~['"\\bfnrtv0-9xu\r\n]
  427.     ;
  428.  
  429. fragment unicodeLetter
  430.     : [\u0041-\u005A]
  431.     | [\u0061-\u007A]
  432.     | [\u00AA]
  433.     | [\u00B5]
  434.     | [\u00BA]
  435.     | [\u00C0-\u00D6]
  436.     | [\u00D8-\u00F6]
  437.     | [\u00F8-\u021F]
  438.     | [\u0222-\u0233]
  439.     | [\u0250-\u02AD]
  440.     | [\u02B0-\u02B8]
  441.     | [\u02BB-\u02C1]
  442.     | [\u02D0-\u02D1]
  443.     | [\u02E0-\u02E4]
  444.     | [\u02EE]
  445.     | [\u037A]
  446.     | [\u0386]
  447.     | [\u0388-\u038A]
  448.     | [\u038C]
  449.     | [\u038E-\u03A1]
  450.     | [\u03A3-\u03CE]
  451.     | [\u03D0-\u03D7]
  452.     | [\u03DA-\u03F3]
  453.     | [\u0400-\u0481]
  454.     | [\u048C-\u04C4]
  455.     | [\u04C7-\u04C8]
  456.     | [\u04CB-\u04CC]
  457.     | [\u04D0-\u04F5]
  458.     | [\u04F8-\u04F9]
  459.     | [\u0531-\u0556]
  460.     | [\u0559]
  461.     | [\u0561-\u0587]
  462.     | [\u05D0-\u05EA]
  463.     | [\u05F0-\u05F2]
  464.     | [\u0621-\u063A]
  465.     | [\u0640-\u064A]
  466.     | [\u0671-\u06D3]
  467.     | [\u06D5]
  468.     | [\u06E5-\u06E6]
  469.     | [\u06FA-\u06FC]
  470.     | [\u0710]
  471.     | [\u0712-\u072C]
  472.     | [\u0780-\u07A5]
  473.     | [\u0905-\u0939]
  474.     | [\u093D]
  475.     | [\u0950]
  476.     | [\u0958-\u0961]
  477.     | [\u0985-\u098C]
  478.     | [\u098F-\u0990]
  479.     | [\u0993-\u09A8]
  480.     | [\u09AA-\u09B0]
  481.     | [\u09B2]
  482.     | [\u09B6-\u09B9]
  483.     | [\u09DC-\u09DD]
  484.     | [\u09DF-\u09E1]
  485.     | [\u09F0-\u09F1]
  486.     | [\u0A05-\u0A0A]
  487.     | [\u0A0F-\u0A10]
  488.     | [\u0A13-\u0A28]
  489.     | [\u0A2A-\u0A30]
  490.     | [\u0A32-\u0A33]
  491.     | [\u0A35-\u0A36]
  492.     | [\u0A38-\u0A39]
  493.     | [\u0A59-\u0A5C]
  494.     | [\u0A5E]
  495.     | [\u0A72-\u0A74]
  496.     | [\u0A85-\u0A8B]
  497.     | [\u0A8D]
  498.     | [\u0A8F-\u0A91]
  499.     | [\u0A93-\u0AA8]
  500.     | [\u0AAA-\u0AB0]
  501.     | [\u0AB2-\u0AB3]
  502.     | [\u0AB5-\u0AB9]
  503.     | [\u0ABD]
  504.     | [\u0AD0]
  505.     | [\u0AE0]
  506.     | [\u0B05-\u0B0C]
  507.     | [\u0B0F-\u0B10]
  508.     | [\u0B13-\u0B28]
  509.     | [\u0B2A-\u0B30]
  510.     | [\u0B32-\u0B33]
  511.     | [\u0B36-\u0B39]
  512.     | [\u0B3D]
  513.     | [\u0B5C-\u0B5D]
  514.     | [\u0B5F-\u0B61]
  515.     | [\u0B85-\u0B8A]
  516.     | [\u0B8E-\u0B90]
  517.     | [\u0B92-\u0B95]
  518.     | [\u0B99-\u0B9A]
  519.     | [\u0B9C]
  520.     | [\u0B9E-\u0B9F]
  521.     | [\u0BA3-\u0BA4]
  522.     | [\u0BA8-\u0BAA]
  523.     | [\u0BAE-\u0BB5]
  524.     | [\u0BB7-\u0BB9]
  525.     | [\u0C05-\u0C0C]
  526.     | [\u0C0E-\u0C10]
  527.     | [\u0C12-\u0C28]
  528.     | [\u0C2A-\u0C33]
  529.     | [\u0C35-\u0C39]
  530.     | [\u0C60-\u0C61]
  531.     | [\u0C85-\u0C8C]
  532.     | [\u0C8E-\u0C90]
  533.     | [\u0C92-\u0CA8]
  534.     | [\u0CAA-\u0CB3]
  535.     | [\u0CB5-\u0CB9]
  536.     | [\u0CDE]
  537.     | [\u0CE0-\u0CE1]
  538.     | [\u0D05-\u0D0C]
  539.     | [\u0D0E-\u0D10]
  540.     | [\u0D12-\u0D28]
  541.     | [\u0D2A-\u0D39]
  542.     | [\u0D60-\u0D61]
  543.     | [\u0D85-\u0D96]
  544.     | [\u0D9A-\u0DB1]
  545.     | [\u0DB3-\u0DBB]
  546.     | [\u0DBD]
  547.     | [\u0DC0-\u0DC6]
  548.     | [\u0E01-\u0E30]
  549.     | [\u0E32-\u0E33]
  550.     | [\u0E40-\u0E46]
  551.     | [\u0E81-\u0E82]
  552.     | [\u0E84]
  553.     | [\u0E87-\u0E88]
  554.     | [\u0E8A]
  555.     | [\u0E8D]
  556.     | [\u0E94-\u0E97]
  557.     | [\u0E99-\u0E9F]
  558.     | [\u0EA1-\u0EA3]
  559.     | [\u0EA5]
  560.     | [\u0EA7]
  561.     | [\u0EAA-\u0EAB]
  562.     | [\u0EAD-\u0EB0]
  563.     | [\u0EB2-\u0EB3]
  564.     | [\u0EBD-\u0EC4]
  565.     | [\u0EC6]
  566.     | [\u0EDC-\u0EDD]
  567.     | [\u0F00]
  568.     | [\u0F40-\u0F6A]
  569.     | [\u0F88-\u0F8B]
  570.     | [\u1000-\u1021]
  571.     | [\u1023-\u1027]
  572.     | [\u1029-\u102A]
  573.     | [\u1050-\u1055]
  574.     | [\u10A0-\u10C5]
  575.     | [\u10D0-\u10F6]
  576.     | [\u1100-\u1159]
  577.     | [\u115F-\u11A2]
  578.     | [\u11A8-\u11F9]
  579.     | [\u1200-\u1206]
  580.     | [\u1208-\u1246]
  581.     | [\u1248]
  582.     | [\u124A-\u124D]
  583.     | [\u1250-\u1256]
  584.     | [\u1258]
  585.     | [\u125A-\u125D]
  586.     | [\u1260-\u1286]
  587.     | [\u1288]
  588.     | [\u128A-\u128D]
  589.     | [\u1290-\u12AE]
  590.     | [\u12B0]
  591.     | [\u12B2-\u12B5]
  592.     | [\u12B8-\u12BE]
  593.     | [\u12C0]
  594.     | [\u12C2-\u12C5]
  595.     | [\u12C8-\u12CE]
  596.     | [\u12D0-\u12D6]
  597.     | [\u12D8-\u12EE]
  598.     | [\u12F0-\u130E]
  599.     | [\u1310]
  600.     | [\u1312-\u1315]
  601.     | [\u1318-\u131E]
  602.     | [\u1320-\u1346]
  603.     | [\u1348-\u135A]
  604.     | [\u13A0-\u13B0]
  605.     | [\u13B1-\u13F4]
  606.     | [\u1401-\u1676]
  607.     | [\u1681-\u169A]
  608.     | [\u16A0-\u16EA]
  609.     | [\u1780-\u17B3]
  610.     | [\u1820-\u1877]
  611.     | [\u1880-\u18A8]
  612.     | [\u1E00-\u1E9B]
  613.     | [\u1EA0-\u1EE0]
  614.     | [\u1EE1-\u1EF9]
  615.     | [\u1F00-\u1F15]
  616.     | [\u1F18-\u1F1D]
  617.     | [\u1F20-\u1F39]
  618.     | [\u1F3A-\u1F45]
  619.     | [\u1F48-\u1F4D]
  620.     | [\u1F50-\u1F57]
  621.     | [\u1F59]
  622.     | [\u1F5B]
  623.     | [\u1F5D]
  624.     | [\u1F5F-\u1F7D]
  625.     | [\u1F80-\u1FB4]
  626.     | [\u1FB6-\u1FBC]
  627.     | [\u1FBE]
  628.     | [\u1FC2-\u1FC4]
  629.     | [\u1FC6-\u1FCC]
  630.     | [\u1FD0-\u1FD3]
  631.     | [\u1FD6-\u1FDB]
  632.     | [\u1FE0-\u1FEC]
  633.     | [\u1FF2-\u1FF4]
  634.     | [\u1FF6-\u1FFC]
  635.     | [\u207F]
  636.     | [\u2102]
  637.     | [\u2107]
  638.     | [\u210A-\u2113]
  639.     | [\u2115]
  640.     | [\u2119-\u211D]
  641.     | [\u2124]
  642.     | [\u2126]
  643.     | [\u2128]
  644.     | [\u212A-\u212D]
  645.     | [\u212F-\u2131]
  646.     | [\u2133-\u2139]
  647.     | [\u2160-\u2183]
  648.     | [\u3005-\u3007]
  649.     | [\u3021-\u3029]
  650.     | [\u3031-\u3035]
  651.     | [\u3038-\u303A]
  652.     | [\u3041-\u3094]
  653.     | [\u309D-\u309E]
  654.     | [\u30A1-\u30FA]
  655.     | [\u30FC-\u30FE]
  656.     | [\u3105-\u312C]
  657.     | [\u3131-\u318E]
  658.     | [\u31A0-\u31B7]
  659.     | [\u3400]
  660.     | [\u4DB5]
  661.     | [\u4E00]
  662.     | [\u9FA5]
  663.     | [\uA000-\uA48C]
  664.     | [\uAC00]
  665.     | [\uD7A3]
  666.     | [\uF900-\uFA2D]
  667.     | [\uFB00-\uFB06]
  668.     | [\uFB13-\uFB17]
  669.     | [\uFB1D]
  670.     | [\uFB1F-\uFB28]
  671.     | [\uFB2A-\uFB36]
  672.     | [\uFB38-\uFB3C]
  673.     | [\uFB3E]
  674.     | [\uFB40-\uFB41]
  675.     | [\uFB43-\uFB44]
  676.     | [\uFB46-\uFBB1]
  677.     | [\uFBD3-\uFD3D]
  678.     | [\uFD50-\uFD8F]
  679.     | [\uFD92-\uFDC7]
  680.     | [\uFDF0-\uFDFB]
  681.     | [\uFE70-\uFE72]
  682.     | [\uFE74]
  683.     | [\uFE76-\uFEFC]
  684.     | [\uFF21-\uFF3A]
  685.     | [\uFF41-\uFF5A]
  686.     | [\uFF66-\uFFBE]
  687.     | [\uFFC2-\uFFC7]
  688.     | [\uFFCA-\uFFCF]
  689.     | [\uFFD2-\uFFD7]
  690.     | [\uFFDA-\uFFDC]
  691.     ;
  692.  
  693. fragment unicodeCombiningMark
  694.     : [\u0300-\u034E]
  695.     | [\u0360-\u0362]
  696.     | [\u0483-\u0486]
  697.     | [\u0591-\u05A1]
  698.     | [\u05A3-\u05B9]
  699.     | [\u05BB-\u05BD]
  700.     | [\u05BF]
  701.     | [\u05C1-\u05C2]
  702.     | [\u05C4]
  703.     | [\u064B-\u0655]
  704.     | [\u0670]
  705.     | [\u06D6-\u06DC]
  706.     | [\u06DF-\u06E4]
  707.     | [\u06E7-\u06E8]
  708.     | [\u06EA-\u06ED]
  709.     | [\u0711]
  710.     | [\u0730-\u074A]
  711.     | [\u07A6-\u07B0]
  712.     | [\u0901-\u0903]
  713.     | [\u093C]
  714.     | [\u093E-\u094D]
  715.     | [\u0951-\u0954]
  716.     | [\u0962-\u0963]
  717.     | [\u0981-\u0983]
  718.     | [\u09BC-\u09C4]
  719.     | [\u09C7-\u09C8]
  720.     | [\u09CB-\u09CD]
  721.     | [\u09D7]
  722.     | [\u09E2-\u09E3]
  723.     | [\u0A02]
  724.     | [\u0A3C]
  725.     | [\u0A3E-\u0A42]
  726.     | [\u0A47-\u0A48]
  727.     | [\u0A4B-\u0A4D]
  728.     | [\u0A70-\u0A71]
  729.     | [\u0A81-\u0A83]
  730.     | [\u0ABC]
  731.     | [\u0ABE-\u0AC5]
  732.     | [\u0AC7-\u0AC9]
  733.     | [\u0ACB-\u0ACD]
  734.     | [\u0B01-\u0B03]
  735.     | [\u0B3C]
  736.     | [\u0B3E-\u0B43]
  737.     | [\u0B47-\u0B48]
  738.     | [\u0B4B-\u0B4D]
  739.     | [\u0B56-\u0B57]
  740.     | [\u0B82-\u0B83]
  741.     | [\u0BBE-\u0BC2]
  742.     | [\u0BC6-\u0BC8]
  743.     | [\u0BCA-\u0BCD]
  744.     | [\u0BD7]
  745.     | [\u0C01-\u0C03]
  746.     | [\u0C3E-\u0C44]
  747.     | [\u0C46-\u0C48]
  748.     | [\u0C4A-\u0C4D]
  749.     | [\u0C55-\u0C56]
  750.     | [\u0C82-\u0C83]
  751.     | [\u0CBE-\u0CC4]
  752.     | [\u0CC6-\u0CC8]
  753.     | [\u0CCA-\u0CCD]
  754.     | [\u0CD5-\u0CD6]
  755.     | [\u0D02-\u0D03]
  756.     | [\u0D3E-\u0D43]
  757.     | [\u0D46-\u0D48]
  758.     | [\u0D4A-\u0D4D]
  759.     | [\u0D57]
  760.     | [\u0D82-\u0D83]
  761.     | [\u0DCA]
  762.     | [\u0DCF-\u0DD4]
  763.     | [\u0DD6]
  764.     | [\u0DD8-\u0DDF]
  765.     | [\u0DF2-\u0DF3]
  766.     | [\u0E31]
  767.     | [\u0E34-\u0E3A]
  768.     | [\u0E47-\u0E4E]
  769.     | [\u0EB1]
  770.     | [\u0EB4-\u0EB9]
  771.     | [\u0EBB-\u0EBC]
  772.     | [\u0EC8-\u0ECD]
  773.     | [\u0F18-\u0F19]
  774.     | [\u0F35]
  775.     | [\u0F37]
  776.     | [\u0F39]
  777.     | [\u0F3E-\u0F3F]
  778.     | [\u0F71-\u0F84]
  779.     | [\u0F86-\u0F87]
  780.     | [\u0F90-\u0F97]
  781.     | [\u0F99-\u0FBC]
  782.     | [\u0FC6]
  783.     | [\u102C-\u1032]
  784.     | [\u1036-\u1039]
  785.     | [\u1056-\u1059]
  786.     | [\u17B4-\u17D3]
  787.     | [\u18A9]
  788.     | [\u20D0-\u20DC]
  789.     | [\u20E1]
  790.     | [\u302A-\u302F]
  791.     | [\u3099-\u309A]
  792.     | [\uFB1E]
  793.     | [\uFE20-\uFE23]
  794.     ;
  795.  
  796. fragment unicodeDigit
  797.     : [\u0030-\u0039]
  798.     | [\u0660-\u0669]
  799.     | [\u06F0-\u06F9]
  800.     | [\u0966-\u096F]
  801.     | [\u09E6-\u09EF]
  802.     | [\u0A66-\u0A6F]
  803.     | [\u0AE6-\u0AEF]
  804.     | [\u0B66-\u0B6F]
  805.     | [\u0BE7-\u0BEF]
  806.     | [\u0C66-\u0C6F]
  807.     | [\u0CE6-\u0CEF]
  808.     | [\u0D66-\u0D6F]
  809.     | [\u0E50-\u0E59]
  810.     | [\u0ED0-\u0ED9]
  811.     | [\u0F20-\u0F29]
  812.     | [\u1040-\u1049]
  813.     | [\u1369-\u1371]
  814.     | [\u17E0-\u17E9]
  815.     | [\u1810-\u1819]
  816.     | [\uFF10-\uFF19]
  817.     ;
  818.  
  819. fragment unicodeConnectorPunctuation
  820.     : [\u005F]
  821.     | [\u203F-\u2040]
  822.     | [\u30FB]
  823.     | [\uFE33-\uFE34]
  824.     | [\uFE4D-\uFE4F]
  825.     | [\uFF3F]
  826.     | [\uFF65]
  827.     ;
  828.  
  829. fragment ZWNJ
  830.     : '\u200C'
  831.     ;
  832.  
  833. fragment ZWJ
  834.     : '\u200D'
  835.     ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement