ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/el/parser/ELParser.jjt

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/el/parser/ELParser.jjt
Status
scanned
Type
file
Name
ELParser.jjt
Extension
.jjt
Programming language

      
    
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
28120 (27.5 KB)
MD5
6694bd19fd080ef906eaba66999e53ca
SHA1
1c2ee16c48a978cea0e652cd62e303423bd0a44e
SHA256
ca26bb0ac8039e64c6fb778a7683988c6981cd1843066e6269780ab5681817e5
SHA512

      
    
SHA1_git
95d58e358fc434586dbe46f6df98fc210743293b
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
ELParser.jjt | 27.5 KB |

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* == Option Declaration == */ options { STATIC=false; NODE_PREFIX="Ast"; VISITOR_EXCEPTION="jakarta.el.ELException"; VISITOR=false; MULTI=true; NODE_DEFAULT_VOID=true; JAVA_UNICODE_ESCAPE=false; UNICODE_INPUT=true; BUILD_NODE_FILES=true; } /* == Parser Declaration == */ PARSER_BEGIN( ELParser ) package org.apache.el.parser; import java.io.StringReader; import jakarta.el.ELException; public class ELParser { public static Node parse(String ref) throws ELException { try { return new ELParser(new StringReader(ref)).CompositeExpression(); } catch (ParseException pe) { throw new ELException(pe.getMessage()); } } } PARSER_END( ELParser ) /* * CompositeExpression * Allow most flexible parsing, restrict by examining * type of returned node */ AstCompositeExpression CompositeExpression() #CompositeExpression : {} { (DeferredExpression() | DynamicExpression() | LiteralExpression())* <EOF> { return jjtThis; } } /* * LiteralExpression * Non-EL Expression blocks */ void LiteralExpression() #LiteralExpression : { Token t = null; } { t=<LITERAL_EXPRESSION> { jjtThis.setImage(t.image); } } /* * DeferredExpression * #{...} Expressions */ void DeferredExpression() #DeferredExpression : {} { <START_DEFERRED_EXPRESSION> Expression() <RBRACE> } /* * DynamicExpression * ${...} Expressions */ void DynamicExpression() #DynamicExpression : {} { <START_DYNAMIC_EXPRESSION> Expression() <RBRACE> } /* * Expression * EL Expression Language Root */ void Expression() : {} { Semicolon() } /* * Semicolon */ void Semicolon() : {} { Assignment() ( <SEMICOLON> Assignment() #Semicolon(2) )* } /* * Assignment */ void Assignment() : {} { LOOKAHEAD(4) LambdaExpression() | Choice() ( LOOKAHEAD(2) <ASSIGN> Assignment() #Assign(2) )* } /* * Lambda expression */ void LambdaExpression() #LambdaExpression : {} { LambdaParameters() <ARROW> ( LOOKAHEAD(3) LambdaExpression() | Choice() ) } /* * Lambda parameters */ void LambdaParameters() #LambdaParameters : {} { Identifier() | <LPAREN> ( Identifier() ( <COMMA> Identifier() )* )? <RPAREN> } /* * Possible invocation of lambda expression. Invocations must be bracketed but * being bracketed does not mean it is an invocation. */ void LambdaExpressionOrInvocation() #LambdaExpression : {} { <LPAREN> LambdaParameters() <ARROW> ( LOOKAHEAD(3) LambdaExpression() | Choice() ) <RPAREN> ( MethodParameters() )* } /* * Choice * For Choice markup a ? b : c, then Or */ void Choice() : {} { Or() (LOOKAHEAD(3) <QUESTIONMARK> Choice() <COLON> Choice() #Choice(3))* } /* * Or * For 'or' '||', then And */ void Or() : {} { And() [((<OR0>|<OR1>) And())+ #Or(jjtree.nodeArity() + 1)] } /* * And * For 'and' '&&', then Equality */ void And() : {} { Equality() [((<AND0>|<AND1>) Equality())+ #And(jjtree.nodeArity() + 1)] } /* * Equality * For '==' 'eq' '!=' 'ne', then Compare */ void Equality() : {} { Compare() ( ((<EQ0>|<EQ1>) Compare() #Equal(2)) | ((<NE0>|<NE1>) Compare() #NotEqual(2)) )* } /* * Compare * For a bunch of them, then += */ void Compare() : {} { Concatenation() ( ((<LT0>|<LT1>) Concatenation() #LessThan(2)) | ((<GT0>|<GT1>) Concatenation() #GreaterThan(2)) | ((<LE0>|<LE1>) Concatenation() #LessThanEqual(2)) | ((<GE0>|<GE1>) Concatenation() #GreaterThanEqual(2)) )* } /* * Concatenation * For +=, then Math * */ void Concatenation() : {} { Math() ( <CONCAT> Math() #Concatenation(2) )* } /* * Math * For '+' '-', then Multiplication */ void Math() : {} { Multiplication() ( (<PLUS> Multiplication() #Plus(2)) | (<MINUS> Multiplication() #Minus(2)) )* } /* * Multiplication * For a bunch of them, then Unary */ void Multiplication() : {} { Unary() ( (<MULT> Unary() #Mult(2)) | ((<DIV0>|<DIV1>) Unary() #Div(2)) | ((<MOD0>|<MOD1>) Unary() #Mod(2)) )* } /* * Unary * For '-' '!' 'not' 'empty', then Value */ void Unary() : {} { <MINUS> Unary() #Negative | LOOKAHEAD(2) (<NOT0>|<NOT1>) <EMPTY> Unary() #NotEmpty | (<NOT0>|<NOT1>) Unary() #Not | <EMPTY> Unary() #Empty | Value() } /* * Value * Defines Prefix plus zero or more Suffixes */ void Value() : {} { (ValuePrefix() (ValueSuffix())*) #Value(>1) } /* * ValuePrefix * For Literals, Variables, and Functions */ void ValuePrefix() : {} { Literal() | NonLiteral() } /* * ValueSuffix * Either dot or bracket notation */ void ValueSuffix() : {} { ( DotSuffix() | BracketSuffix() ) ( MethodParameters())? } /* * DotSuffix * Dot Property */ void DotSuffix() #DotSuffix : { Token t = null; } { <DOT> t=<IDENTIFIER> { jjtThis.setImage(t.image); } } /* * BracketSuffix * Sub Expression Suffix */ void BracketSuffix() #BracketSuffix : {} { <LBRACK> Expression() <RBRACK> } /* * MethodParameters */ void MethodParameters() #MethodParameters : {} { <LPAREN> ( Expression() ( <COMMA> Expression())* )? <RPAREN> } /* * NonLiteral * For Grouped Operations, Identifiers, and Functions */ void NonLiteral() : {} { LOOKAHEAD(5) LambdaExpressionOrInvocation() | <LPAREN> Expression() <RPAREN> | LOOKAHEAD((<IDENTIFIER> <COLON>)? <IDENTIFIER> <LPAREN>) Function() | Identifier() | LOOKAHEAD(5)SetData() | ListData() | MapData() } /* * Note that both an empty Set and an empty Map are represented by {}. The * parser will always parse {} as an empty Set and special handling is required * to convert it to an empty Map when appropriate. */ void SetData() #SetData: {} { <START_SET_OR_MAP> ( Expression() ( <COMMA> Expression() )* )? <RBRACE> } void ListData() #ListData: {} { <LBRACK> ( Expression() ( <COMMA> Expression() )* )? <RBRACK> } /* * Note that both an empty Set and an empty Map are represented by {}. The * parser will always parse {} as an empty Set and special handling is required * to convert it to an empty Map when appropriate. */ void MapData() #MapData: {} { <START_SET_OR_MAP> ( MapEntry() ( <COMMA> MapEntry() )* )? <RBRACE> } void MapEntry() #MapEntry: {} { Expression() <COLON> Expression() } /* * Identifier * Java Language Identifier */ void Identifier() #Identifier : { Token t = null; } { t=<IDENTIFIER> { jjtThis.setImage(t.image); } } /* * Function * Namespace:Name(a,b,c) */ void Function() #Function : { Token t0 = null; Token t1 = null; } { t0=<IDENTIFIER> ( <COLON> t1=<IDENTIFIER> )? { if (t1 != null) { jjtThis.setPrefix(t0.image); jjtThis.setLocalName(t1.image); } else { jjtThis.setLocalName(t0.image); } } ( MethodParameters() )+ } /* * Literal * Reserved Keywords */ void Literal() : {} { Boolean() | FloatingPoint() | Integer() | String() | Null() } /* * Boolean * For 'true' 'false' */ void Boolean() : {} { <TRUE> #True | <FALSE> #False } /* * FloatingPoint * For Decimal and Floating Point Literals */ void FloatingPoint() #FloatingPoint : { Token t = null; } { t=<FLOATING_POINT_LITERAL> { jjtThis.setImage(t.image); } } /* * Integer * For Simple Numeric Literals */ void Integer() #Integer : { Token t = null; } { t=<INTEGER_LITERAL> { jjtThis.setImage(t.image); } } /* * String * For Quoted Literals */ void String() #String : { Token t = null; } { t=<STRING_LITERAL> { jjtThis.setImage(t.image); } } /* * Null * For 'null' */ void Null() #Null : {} { <NULL> } /* ========================================================================== */ TOKEN_MGR_DECLS: { java.util.Deque<Integer> deque = new java.util.ArrayDeque<Integer>(); } <DEFAULT> TOKEN : { /* * The following definition uses + rather than * in two places to prevent * LITERAL_EXPRESSION matching the empty string that could result in the * Parser entering an infinite loop. */ < LITERAL_EXPRESSION: ( (~["$", "#", "\\"])* "\\" (["$", "#"])? | (~["$", "#"])* (["$", "#"] ~["{", "$", "#", "\\"]) | (~["$", "#"])+ )+ | "$" | "#" > | < START_DYNAMIC_EXPRESSION: "${" > {deque.push(DEFAULT);}: IN_EXPRESSION | < START_DEFERRED_EXPRESSION: "#{" > {deque.push(DEFAULT);}: IN_EXPRESSION } <IN_EXPRESSION, IN_SET_OR_MAP> SKIP : { " " | "\t" | "\n" | "\r" } <IN_EXPRESSION, IN_SET_OR_MAP> TOKEN : { < START_SET_OR_MAP : "{" > {deque.push(curLexState);}: IN_SET_OR_MAP | < RBRACE: "}" > {SwitchTo(deque.pop());} | < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* > | < FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? | "." (["0"-"9"])+ (<EXPONENT>)? | (["0"-"9"])+ <EXPONENT> > | < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ > | < STRING_LITERAL: ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\"","\'"] )))* "\"") | ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\"","\'"] )))* "\'") > | < TRUE : "true" > | < FALSE : "false" > | < NULL : "null" > | < DOT : "." > | < LPAREN : "(" > | < RPAREN : ")" > | < LBRACK : "[" > | < RBRACK : "]" > | < COLON : ":" > | < SEMICOLON : ";" > | < COMMA : "," > | < GT0 : ">" > | < GT1 : "gt" > | < LT0 : "<" > | < LT1 : "lt" > | < GE0 : ">=" > | < GE1 : "ge" > | < LE0 : "<=" > | < LE1 : "le" > | < EQ0 : "==" > | < EQ1 : "eq" > | < NE0 : "!=" > | < NE1 : "ne" > | < NOT0 : "!" > | < NOT1 : "not" > | < AND0 : "&&" > | < AND1 : "and" > | < OR0 : "||" > | < OR1 : "or" > | < EMPTY : "empty" > | < MULT : "*" > | < PLUS : "+" > | < MINUS : "-" > | < QUESTIONMARK : "?" > | < DIV0 : "/" > | < DIV1 : "div" > | < MOD0 : "%" > | < MOD1 : "mod" > | < CONCAT : "+=" > | < ASSIGN : "=" > | < ARROW : "->" > | < IDENTIFIER : <JAVALETTER> (<JAVALETTER>|<JAVADIGIT>)* > | < #JAVALETTER: [ "\u0024", "\u0041"-"\u005a", "\u005f", "\u0061"-"\u007a", "\u00a2"-"\u00a5", "\u00aa", "\u00b5", "\u00ba", "\u00c0"-"\u00d6", "\u00d8"-"\u00f6", "\u00f8"-"\u02c1", "\u02c6"-"\u02d1", "\u02e0"-"\u02e4", "\u02ec", "\u02ee", "\u0370"-"\u0374", "\u0376"-"\u0377", "\u037a"-"\u037d", "\u037f", "\u0386", "\u0388"-"\u038a", "\u038c", "\u038e"-"\u03a1", "\u03a3"-"\u03f5", "\u03f7"-"\u0481", "\u048a"-"\u052f", "\u0531"-"\u0556", "\u0559", "\u0560"-"\u0588", "\u058f", "\u05d0"-"\u05ea", "\u05ef"-"\u05f2", "\u060b", "\u0620"-"\u064a", "\u066e"-"\u066f", "\u0671"-"\u06d3", "\u06d5", "\u06e5"-"\u06e6", "\u06ee"-"\u06ef", "\u06fa"-"\u06fc", "\u06ff", "\u0710", "\u0712"-"\u072f", "\u074d"-"\u07a5", "\u07b1", "\u07ca"-"\u07ea", "\u07f4"-"\u07f5", "\u07fa", "\u07fe"-"\u0815", "\u081a", "\u0824", "\u0828", "\u0840"-"\u0858", "\u0860"-"\u086a", "\u08a0"-"\u08b4", "\u08b6"-"\u08c7", "\u0904"-"\u0939", "\u093d", "\u0950", "\u0958"-"\u0961", "\u0971"-"\u0980", "\u0985"-"\u098c", "\u098f"-"\u0990", "\u0993"-"\u09a8", "\u09aa"-"\u09b0", "\u09b2", "\u09b6"-"\u09b9", "\u09bd", "\u09ce", "\u09dc"-"\u09dd", "\u09df"-"\u09e1", "\u09f0"-"\u09f3", "\u09fb"-"\u09fc", "\u0a05"-"\u0a0a", "\u0a0f"-"\u0a10", "\u0a13"-"\u0a28", "\u0a2a"-"\u0a30", "\u0a32"-"\u0a33", "\u0a35"-"\u0a36", "\u0a38"-"\u0a39", "\u0a59"-"\u0a5c", "\u0a5e", "\u0a72"-"\u0a74", "\u0a85"-"\u0a8d", "\u0a8f"-"\u0a91", "\u0a93"-"\u0aa8", "\u0aaa"-"\u0ab0", "\u0ab2"-"\u0ab3", "\u0ab5"-"\u0ab9", "\u0abd", "\u0ad0", "\u0ae0"-"\u0ae1", "\u0af1", "\u0af9", "\u0b05"-"\u0b0c", "\u0b0f"-"\u0b10", "\u0b13"-"\u0b28", "\u0b2a"-"\u0b30", "\u0b32"-"\u0b33", "\u0b35"-"\u0b39", "\u0b3d", "\u0b5c"-"\u0b5d", "\u0b5f"-"\u0b61", "\u0b71", "\u0b83", "\u0b85"-"\u0b8a", "\u0b8e"-"\u0b90", "\u0b92"-"\u0b95", "\u0b99"-"\u0b9a", "\u0b9c", "\u0b9e"-"\u0b9f", "\u0ba3"-"\u0ba4", "\u0ba8"-"\u0baa", "\u0bae"-"\u0bb9", "\u0bd0", "\u0bf9", "\u0c05"-"\u0c0c", "\u0c0e"-"\u0c10", "\u0c12"-"\u0c28", "\u0c2a"-"\u0c39", "\u0c3d", "\u0c58"-"\u0c5a", "\u0c60"-"\u0c61", "\u0c80", "\u0c85"-"\u0c8c", "\u0c8e"-"\u0c90", "\u0c92"-"\u0ca8", "\u0caa"-"\u0cb3", "\u0cb5"-"\u0cb9", "\u0cbd", "\u0cde", "\u0ce0"-"\u0ce1", "\u0cf1"-"\u0cf2", "\u0d04"-"\u0d0c", "\u0d0e"-"\u0d10", "\u0d12"-"\u0d3a", "\u0d3d", "\u0d4e", "\u0d54"-"\u0d56", "\u0d5f"-"\u0d61", "\u0d7a"-"\u0d7f", "\u0d85"-"\u0d96", "\u0d9a"-"\u0db1", "\u0db3"-"\u0dbb", "\u0dbd", "\u0dc0"-"\u0dc6", "\u0e01"-"\u0e30", "\u0e32"-"\u0e33", "\u0e3f"-"\u0e46", "\u0e81"-"\u0e82", "\u0e84", "\u0e86"-"\u0e8a", "\u0e8c"-"\u0ea3", "\u0ea5", "\u0ea7"-"\u0eb0", "\u0eb2"-"\u0eb3", "\u0ebd", "\u0ec0"-"\u0ec4", "\u0ec6", "\u0edc"-"\u0edf", "\u0f00", "\u0f40"-"\u0f47", "\u0f49"-"\u0f6c", "\u0f88"-"\u0f8c", "\u1000"-"\u102a", "\u103f", "\u1050"-"\u1055", "\u105a"-"\u105d", "\u1061", "\u1065"-"\u1066", "\u106e"-"\u1070", "\u1075"-"\u1081", "\u108e", "\u10a0"-"\u10c5", "\u10c7", "\u10cd", "\u10d0"-"\u10fa", "\u10fc"-"\u1248", "\u124a"-"\u124d", "\u1250"-"\u1256", "\u1258", "\u125a"-"\u125d", "\u1260"-"\u1288", "\u128a"-"\u128d", "\u1290"-"\u12b0", "\u12b2"-"\u12b5", "\u12b8"-"\u12be", "\u12c0", "\u12c2"-"\u12c5", "\u12c8"-"\u12d6", "\u12d8"-"\u1310", "\u1312"-"\u1315", "\u1318"-"\u135a", "\u1380"-"\u138f", "\u13a0"-"\u13f5", "\u13f8"-"\u13fd", "\u1401"-"\u166c", "\u166f"-"\u167f", "\u1681"-"\u169a", "\u16a0"-"\u16ea", "\u16ee"-"\u16f8", "\u1700"-"\u170c", "\u170e"-"\u1711", "\u1720"-"\u1731", "\u1740"-"\u1751", "\u1760"-"\u176c", "\u176e"-"\u1770", "\u1780"-"\u17b3", "\u17d7", "\u17db"-"\u17dc", "\u1820"-"\u1878", "\u1880"-"\u1884", "\u1887"-"\u18a8", "\u18aa", "\u18b0"-"\u18f5", "\u1900"-"\u191e", "\u1950"-"\u196d", "\u1970"-"\u1974", "\u1980"-"\u19ab", "\u19b0"-"\u19c9", "\u1a00"-"\u1a16", "\u1a20"-"\u1a54", "\u1aa7", "\u1b05"-"\u1b33", "\u1b45"-"\u1b4b", "\u1b83"-"\u1ba0", "\u1bae"-"\u1baf", "\u1bba"-"\u1be5", "\u1c00"-"\u1c23", "\u1c4d"-"\u1c4f", "\u1c5a"-"\u1c7d", "\u1c80"-"\u1c88", "\u1c90"-"\u1cba", "\u1cbd"-"\u1cbf", "\u1ce9"-"\u1cec", "\u1cee"-"\u1cf3", "\u1cf5"-"\u1cf6", "\u1cfa", "\u1d00"-"\u1dbf", "\u1e00"-"\u1f15", "\u1f18"-"\u1f1d", "\u1f20"-"\u1f45", "\u1f48"-"\u1f4d", "\u1f50"-"\u1f57", "\u1f59", "\u1f5b", "\u1f5d", "\u1f5f"-"\u1f7d", "\u1f80"-"\u1fb4", "\u1fb6"-"\u1fbc", "\u1fbe", "\u1fc2"-"\u1fc4", "\u1fc6"-"\u1fcc", "\u1fd0"-"\u1fd3", "\u1fd6"-"\u1fdb", "\u1fe0"-"\u1fec", "\u1ff2"-"\u1ff4", "\u1ff6"-"\u1ffc", "\u203f"-"\u2040", "\u2054", "\u2071", "\u207f", "\u2090"-"\u209c", "\u20a0"-"\u20bf", "\u2102", "\u2107", "\u210a"-"\u2113", "\u2115", "\u2119"-"\u211d", "\u2124", "\u2126", "\u2128", "\u212a"-"\u212d", "\u212f"-"\u2139", "\u213c"-"\u213f", "\u2145"-"\u2149", "\u214e", "\u2160"-"\u2188", "\u2c00"-"\u2c2e", "\u2c30"-"\u2c5e", "\u2c60"-"\u2ce4", "\u2ceb"-"\u2cee", "\u2cf2"-"\u2cf3", "\u2d00"-"\u2d25", "\u2d27", "\u2d2d", "\u2d30"-"\u2d67", "\u2d6f", "\u2d80"-"\u2d96", "\u2da0"-"\u2da6", "\u2da8"-"\u2dae", "\u2db0"-"\u2db6", "\u2db8"-"\u2dbe", "\u2dc0"-"\u2dc6", "\u2dc8"-"\u2dce", "\u2dd0"-"\u2dd6", "\u2dd8"-"\u2dde", "\u2e2f", "\u3005"-"\u3007", "\u3021"-"\u3029", "\u3031"-"\u3035", "\u3038"-"\u303c", "\u3041"-"\u3096", "\u309d"-"\u309f", "\u30a1"-"\u30fa", "\u30fc"-"\u30ff", "\u3105"-"\u312f", "\u3131"-"\u318e", "\u31a0"-"\u31bf", "\u31f0"-"\u31ff", "\u3400"-"\u4dbf", "\u4e00"-"\u9ffc", "\ua000"-"\ua48c", "\ua4d0"-"\ua4fd", "\ua500"-"\ua60c", "\ua610"-"\ua61f", "\ua62a"-"\ua62b", "\ua640"-"\ua66e", "\ua67f"-"\ua69d", "\ua6a0"-"\ua6ef", "\ua717"-"\ua71f", "\ua722"-"\ua788", "\ua78b"-"\ua7bf", "\ua7c2"-"\ua7ca", "\ua7f5"-"\ua801", "\ua803"-"\ua805", "\ua807"-"\ua80a", "\ua80c"-"\ua822", "\ua838", "\ua840"-"\ua873", "\ua882"-"\ua8b3", "\ua8f2"-"\ua8f7", "\ua8fb", "\ua8fd"-"\ua8fe", "\ua90a"-"\ua925", "\ua930"-"\ua946", "\ua960"-"\ua97c", "\ua984"-"\ua9b2", "\ua9cf", "\ua9e0"-"\ua9e4", "\ua9e6"-"\ua9ef", "\ua9fa"-"\ua9fe", "\uaa00"-"\uaa28", "\uaa40"-"\uaa42", "\uaa44"-"\uaa4b", "\uaa60"-"\uaa76", "\uaa7a", "\uaa7e"-"\uaaaf", "\uaab1", "\uaab5"-"\uaab6", "\uaab9"-"\uaabd", "\uaac0", "\uaac2", "\uaadb"-"\uaadd", "\uaae0"-"\uaaea", "\uaaf2"-"\uaaf4", "\uab01"-"\uab06", "\uab09"-"\uab0e", "\uab11"-"\uab16", "\uab20"-"\uab26", "\uab28"-"\uab2e", "\uab30"-"\uab5a", "\uab5c"-"\uab69", "\uab70"-"\uabe2", "\uac00"-"\ud7a3", "\ud7b0"-"\ud7c6", "\ud7cb"-"\ud7fb", "\uf900"-"\ufa6d", "\ufa70"-"\ufad9", "\ufb00"-"\ufb06", "\ufb13"-"\ufb17", "\ufb1d", "\ufb1f"-"\ufb28", "\ufb2a"-"\ufb36", "\ufb38"-"\ufb3c", "\ufb3e", "\ufb40"-"\ufb41", "\ufb43"-"\ufb44", "\ufb46"-"\ufbb1", "\ufbd3"-"\ufd3d", "\ufd50"-"\ufd8f", "\ufd92"-"\ufdc7", "\ufdf0"-"\ufdfc", "\ufe33"-"\ufe34", "\ufe4d"-"\ufe4f", "\ufe69", "\ufe70"-"\ufe74", "\ufe76"-"\ufefc", "\uff04", "\uff21"-"\uff3a", "\uff3f", "\uff41"-"\uff5a", "\uff66"-"\uffbe", "\uffc2"-"\uffc7", "\uffca"-"\uffcf", "\uffd2"-"\uffd7", "\uffda"-"\uffdc", "\uffe0"-"\uffe1", "\uffe5"-"\uffe6" ] > | < #JAVADIGIT: [ "\u0000"-"\u0008", "\u000e"-"\u001b", "\u0030"-"\u0039", "\u007f"-"\u009f", "\u00ad", "\u0300"-"\u036f", "\u0483"-"\u0487", "\u0591"-"\u05bd", "\u05bf", "\u05c1"-"\u05c2", "\u05c4"-"\u05c5", "\u05c7", "\u0600"-"\u0605", "\u0610"-"\u061a", "\u061c", "\u064b"-"\u0669", "\u0670", "\u06d6"-"\u06dd", "\u06df"-"\u06e4", "\u06e7"-"\u06e8", "\u06ea"-"\u06ed", "\u06f0"-"\u06f9", "\u070f", "\u0711", "\u0730"-"\u074a", "\u07a6"-"\u07b0", "\u07c0"-"\u07c9", "\u07eb"-"\u07f3", "\u07fd", "\u0816"-"\u0819", "\u081b"-"\u0823", "\u0825"-"\u0827", "\u0829"-"\u082d", "\u0859"-"\u085b", "\u08d3"-"\u0903", "\u093a"-"\u093c", "\u093e"-"\u094f", "\u0951"-"\u0957", "\u0962"-"\u0963", "\u0966"-"\u096f", "\u0981"-"\u0983", "\u09bc", "\u09be"-"\u09c4", "\u09c7"-"\u09c8", "\u09cb"-"\u09cd", "\u09d7", "\u09e2"-"\u09e3", "\u09e6"-"\u09ef", "\u09fe", "\u0a01"-"\u0a03", "\u0a3c", "\u0a3e"-"\u0a42", "\u0a47"-"\u0a48", "\u0a4b"-"\u0a4d", "\u0a51", "\u0a66"-"\u0a71", "\u0a75", "\u0a81"-"\u0a83", "\u0abc", "\u0abe"-"\u0ac5", "\u0ac7"-"\u0ac9", "\u0acb"-"\u0acd", "\u0ae2"-"\u0ae3", "\u0ae6"-"\u0aef", "\u0afa"-"\u0aff", "\u0b01"-"\u0b03", "\u0b3c", "\u0b3e"-"\u0b44", "\u0b47"-"\u0b48", "\u0b4b"-"\u0b4d", "\u0b55"-"\u0b57", "\u0b62"-"\u0b63", "\u0b66"-"\u0b6f", "\u0b82", "\u0bbe"-"\u0bc2", "\u0bc6"-"\u0bc8", "\u0bca"-"\u0bcd", "\u0bd7", "\u0be6"-"\u0bef", "\u0c00"-"\u0c04", "\u0c3e"-"\u0c44", "\u0c46"-"\u0c48", "\u0c4a"-"\u0c4d", "\u0c55"-"\u0c56", "\u0c62"-"\u0c63", "\u0c66"-"\u0c6f", "\u0c81"-"\u0c83", "\u0cbc", "\u0cbe"-"\u0cc4", "\u0cc6"-"\u0cc8", "\u0cca"-"\u0ccd", "\u0cd5"-"\u0cd6", "\u0ce2"-"\u0ce3", "\u0ce6"-"\u0cef", "\u0d00"-"\u0d03", "\u0d3b"-"\u0d3c", "\u0d3e"-"\u0d44", "\u0d46"-"\u0d48", "\u0d4a"-"\u0d4d", "\u0d57", "\u0d62"-"\u0d63", "\u0d66"-"\u0d6f", "\u0d81"-"\u0d83", "\u0dca", "\u0dcf"-"\u0dd4", "\u0dd6", "\u0dd8"-"\u0ddf", "\u0de6"-"\u0def", "\u0df2"-"\u0df3", "\u0e31", "\u0e34"-"\u0e3a", "\u0e47"-"\u0e4e", "\u0e50"-"\u0e59", "\u0eb1", "\u0eb4"-"\u0ebc", "\u0ec8"-"\u0ecd", "\u0ed0"-"\u0ed9", "\u0f18"-"\u0f19", "\u0f20"-"\u0f29", "\u0f35", "\u0f37", "\u0f39", "\u0f3e"-"\u0f3f", "\u0f71"-"\u0f84", "\u0f86"-"\u0f87", "\u0f8d"-"\u0f97", "\u0f99"-"\u0fbc", "\u0fc6", "\u102b"-"\u103e", "\u1040"-"\u1049", "\u1056"-"\u1059", "\u105e"-"\u1060", "\u1062"-"\u1064", "\u1067"-"\u106d", "\u1071"-"\u1074", "\u1082"-"\u108d", "\u108f"-"\u109d", "\u135d"-"\u135f", "\u1712"-"\u1714", "\u1732"-"\u1734", "\u1752"-"\u1753", "\u1772"-"\u1773", "\u17b4"-"\u17d3", "\u17dd", "\u17e0"-"\u17e9", "\u180b"-"\u180e", "\u1810"-"\u1819", "\u1885"-"\u1886", "\u18a9", "\u1920"-"\u192b", "\u1930"-"\u193b", "\u1946"-"\u194f", "\u19d0"-"\u19d9", "\u1a17"-"\u1a1b", "\u1a55"-"\u1a5e", "\u1a60"-"\u1a7c", "\u1a7f"-"\u1a89", "\u1a90"-"\u1a99", "\u1ab0"-"\u1abd", "\u1abf"-"\u1ac0", "\u1b00"-"\u1b04", "\u1b34"-"\u1b44", "\u1b50"-"\u1b59", "\u1b6b"-"\u1b73", "\u1b80"-"\u1b82", "\u1ba1"-"\u1bad", "\u1bb0"-"\u1bb9", "\u1be6"-"\u1bf3", "\u1c24"-"\u1c37", "\u1c40"-"\u1c49", "\u1c50"-"\u1c59", "\u1cd0"-"\u1cd2", "\u1cd4"-"\u1ce8", "\u1ced", "\u1cf4", "\u1cf7"-"\u1cf9", "\u1dc0"-"\u1df9", "\u1dfb"-"\u1dff", "\u200b"-"\u200f", "\u202a"-"\u202e", "\u2060"-"\u2064", "\u2066"-"\u206f", "\u20d0"-"\u20dc", "\u20e1", "\u20e5"-"\u20f0", "\u2cef"-"\u2cf1", "\u2d7f", "\u2de0"-"\u2dff", "\u302a"-"\u302f", "\u3099"-"\u309a", "\ua620"-"\ua629", "\ua66f", "\ua674"-"\ua67d", "\ua69e"-"\ua69f", "\ua6f0"-"\ua6f1", "\ua802", "\ua806", "\ua80b", "\ua823"-"\ua827", "\ua82c", "\ua880"-"\ua881", "\ua8b4"-"\ua8c5", "\ua8d0"-"\ua8d9", "\ua8e0"-"\ua8f1", "\ua8ff"-"\ua909", "\ua926"-"\ua92d", "\ua947"-"\ua953", "\ua980"-"\ua983", "\ua9b3"-"\ua9c0", "\ua9d0"-"\ua9d9", "\ua9e5", "\ua9f0"-"\ua9f9", "\uaa29"-"\uaa36", "\uaa43", "\uaa4c"-"\uaa4d", "\uaa50"-"\uaa59", "\uaa7b"-"\uaa7d", "\uaab0", "\uaab2"-"\uaab4", "\uaab7"-"\uaab8", "\uaabe"-"\uaabf", "\uaac1", "\uaaeb"-"\uaaef", "\uaaf5"-"\uaaf6", "\uabe3"-"\uabea", "\uabec"-"\uabed", "\uabf0"-"\uabf9", "\ufb1e", "\ufe00"-"\ufe0f", "\ufe20"-"\ufe2f", "\ufeff", "\uff10"-"\uff19", "\ufff9"-"\ufffb" ] > | < ILLEGAL_CHARACTER: (~[]) > }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
5.54
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9