/bundles/plugins-trunk/XML/sidekick/ecmascript/parser/EcmaScript.jj
Unknown | 2408 lines | 2238 code | 170 blank | 0 comment | 0 complexity | 8c8fbb89355ba15c6c823822cde55b39 MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
Large files files are truncated, but you can click here to view the full file
- /*@bgen(jjtree) Generated By:JJTree: Do not edit this line. /home/elelay/jedit/relax-ng/sidekick/ecmascript/parser/EcmaScript.jj */
- /*@egen*//*
- Copyright (c) 2004-2005, The Dojo Foundation
- All Rights Reserved.
-
- Licensed under the Academic Free License version 2.1 or above OR the
- modified BSD license. For more information on Dojo licensing, see:
-
- http://dojotoolkit.org/community/licensing.shtml <http://dojotoolkit.org/community/licensing.shtml>
-
- Code donated to the Dojo Foundation by AOL LLC under the terms of
- the Dojo CCLA (http://dojotoolkit.org/ccla.txt).
-
- */
-
- /*
- danson, modified for jEdit, Sep 2006. What a nicely done jjt file! Kudos
- to the original author(s).
- */
-
-
- options {
-
- /*
- * Default value is true. If true, all methods and class variables
- * are specified as static in the generated parser and token manager. This allows only
- * one parser object to be present, but it improves the performance of the parser.
- */
- STATIC = false;
-
- /*
- * Options for obtaining debugging information
- */
- DEBUG_PARSER = false;
-
- DEBUG_TOKEN_MANAGER = false;
-
- /*
- * Default value is false. When set to true, the generated parser
- * uses an input stream object that processes Java Unicode escapes before
- * sending characters to the token manager.
- */
- JAVA_UNICODE_ESCAPE = true;
-
- /*
- * Default value is false. When set to true, the generated parser
- * uses uses an input stream object that reads Unicode files. By default, ASCII files
- * are assumed.
- */
- UNICODE_INPUT = true;
-
- /*
- * JDK Version
- */
- JDK_VERSION = "1.5";
- }
-
- PARSER_BEGIN(EcmaScript)
-
- package sidekick.ecmascript.parser;
-
- import java.io.*;
- import java.util.*;
- import java.util.regex.*;
- import sidekick.util.*;
-
- public class EcmaScript/*@bgen(jjtree)*/implements EcmaScriptTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
- protected JJTEcmaScriptState jjtree = new JJTEcmaScriptState();
- /*@egen*/
-
- private int lineOffset = 0;
- private List<ParseError> parseErrors = new ArrayList<ParseError>();
-
- public static void main(String args[]){
- EcmaScript parser;
- if(args.length == 0){
- System.out.println("EcmaScript Parser: Reading from standard input . . .");
- parser = new EcmaScript(System.in);
- } else if(args.length == 1){
- System.out.println("EcmaScript Parser: Reading from file " + args[0] + " . . .");
- try {
- parser = new EcmaScript(new FileInputStream(args[0]), "UTF-8");
- } catch(java.io.FileNotFoundException e){
- System.out.println("EcmaScript Parser: File " + args[0] + " not found.");
- return;
- }
- } else {
- System.out.println("EcmaScript Parser: Usage is one of:");
- System.out.println(" EcmaScript < inputfile");
- System.out.println("OR");
- System.out.println(" EcmaScript inputfile");
- return;
- }
- try {
- SimpleNode n = parser.Program();
- System.out.println("EcmaScript parser: EcmaScript program parsed successfully.");
- } catch (ParseException e) {
- System.out.println(e.getMessage());
- System.out.println("EcmaScript parser: Encountered errors during parse.");
- }
- }
-
- void jjtreeOpenNodeScope(Node n){
- Token t = getToken(1);
- if(t != null){
- ((SimpleNode) n).setBeginToken(t);
- ((SimpleNode) n).setStartLocation(getStartLocation(t));
- }
- }
-
- void jjtreeCloseNodeScope(Node n){
- Token t = getToken(0);
- if(t != null){
- ((SimpleNode) n).setEndToken(t);
- ((SimpleNode) n).setEndLocation(getEndLocation(t));
- }
- }
-
- public Location getStartLocation(Token t) {
- if (t == null)
- return new Location(0 + lineOffset, 0);
- return new Location(t.beginLine + lineOffset, t.beginColumn);
- }
-
- public Location getEndLocation(Token t) {
- if (t == null)
- return new Location(0 + lineOffset, 0);
- return new Location(t.endLine + lineOffset, t.endColumn + 1);
- }
-
- public void setLineOffset(int offset) {
- lineOffset = offset > 0 ? offset : 0;
- }
-
- public void setTabSize(int size) {
- jj_input_stream.setTabSize(size);
- }
-
- public int getTabSize() {
- return jj_input_stream.getTabSize(0);
- }
-
- private void addException(ParseException pe) {
- // check for a jsp tag, these can appear in several places and will cause
- // a parse error, but they can be ignored. It's easier to catch them and
- // ignore them than rewrite the grammar to allow them in all the appropriate
- // places.
- Token t = pe.currentToken;
- if (t != null) {
- if (t.next != null && t.next.image.startsWith("<%")) {
- return;
- }
- }
- Range range = getExceptionLocation( pe );
- parseErrors.add(new ParseError(pe.getMessage(), range));
- }
-
- public List<ParseError> getParseErrors() {
- return parseErrors;
- }
-
- /**
- * @return attempts to return a Location indicating the location of a parser
- * exception. If the ParseException contains a Token reference, all is well,
- * otherwise, this method attempts to parse the message string for the
- * exception.
- */
- private Range getExceptionLocation( ParseException pe ) {
- Token t = pe.currentToken;
- if ( t != null ) {
- return new Range( new Location( t.next.beginLine + lineOffset, t.next.beginColumn ), new Location( t.next.endLine + lineOffset, t.next.endColumn ) );
- }
-
- // ParseException message look like: "Parse error at line 116, column 5. Encountered: }"
- try {
- Pattern p = Pattern.compile( "(.*?)(\\d+)(.*?)(\\d+)(.*?)" );
- Matcher m = p.matcher( pe.getMessage() );
- if ( m.matches() ) {
- String ln = m.group( 2 );
- String cn = m.group( 4 );
- int line_number = -1;
- int column_number = 0;
- if ( ln != null )
- line_number = Integer.parseInt( ln );
- if ( cn != null )
- column_number = Integer.parseInt( cn );
- return line_number > -1 ? new Range( new Location( line_number + lineOffset, column_number - 1 ), new Location( line_number + lineOffset, column_number ) ) : null;
- }
- return new Range();
- }
- catch ( Exception e ) {
- //e.printStackTrace();
- return new Range();
- }
- }
-
- }
- PARSER_END(EcmaScript)
-
- TOKEN_MGR_DECLS : {
- public int htmlTokenNestingLevel = 0;
- public boolean expectActionScript = false;
- }
-
-
- /*****************************************
- * LEXICAL & REGEXP GRAMMARS STARTS HERE *
- *****************************************/
- /*
-
-
-
- /* Section 7 : Lexical Conventions */
-
-
-
- /*
-
- TOKEN:
- {
- < SOURCE_CHAR: ["\u0000"-"\ufffe"] >
- }
-
-
- MORE :
- {
- < INPUT_ELEMENT_DIV:
- <WHITE_SPACE>
- | <LINE_TERMINATOR>
- | <COMMENT>
- | <_TOKEN>
- | <DIV_PUNCTUATOR>
- >
- }
-
- MORE:
- {
- < INPUTELEMENTREGEXP:
- <WHITE_SPACE>
- | <LINE_TERMINATOR>
- | <COMMENT>
- | <_TOKEN>
- | <REGULAR_EXPRESSION_LITERAL>
- >
- }
-
- */
-
- /* Section 7.2 : White Space */
-
- <DEFAULT, IN_REGEX>
- SPECIAL_TOKEN :
- {
- <WHITE_SPACE: <TAB> | <VT> | <FF> | <SP> | <NBSP> >
- |
- < #TAB: " " | "\t" > /* TAB */
- |
- < #VT: "\u000b" > /* Vertical Tab */
- |
- < #FF: "" | "\f"> /* Form Feed */
- |
- < #SP: " " | " " > /* Space */
- |
- < #NBSP: "\u00a0" > /* No-break space */
- |
- < #USP: /* Other Unicode space seperator */
- ["\u2000"]
- | ["\u2001"]
- | ["\u2002"]
- | ["\u2003"]
- | ["\u2004"]
- | ["\u2005"]
- | ["\u2006"]
- | ["\u2007"]
- | ["\u2008"]
- | ["\u2009"]
- | ["\u200a"]
- | ["\u200b"]
- | ["\u3000"]
- >
- }
-
- /* Section 7.3 : Line Terminators */
-
- <DEFAULT, IN_REGEX>
- SPECIAL_TOKEN :
- {
- <LINE_TERMINATOR: <LF> | <CR> | <LS> | <PS> >
- |
- < #LF: "\n" > /* Line Feed */
- |
- < #CR: "\r" > /* Carriage Return */
- |
- < #LS: "\u2028" > /* Line separator */
- |
- < #PS: "\u2029" > /* Paragraph separator */
- }
-
-
- /* Comments */
-
- <DEFAULT, IN_REGEX>
- MORE :
- {
- "//" : IN_SINGLE_LINE_COMMENT
- |
- "/*" : IN_MULTI_LINE_COMMENT
- |
- "<%" : IN_JSP_TAG // not necessarily a comment...
- }
-
- <IN_SINGLE_LINE_COMMENT>
- SPECIAL_TOKEN :
- {
- <SINGLE_LINE_COMMENT: (~["\n","\r"])* ("\n"|"\r"|"\r\n")? > : DEFAULT
- }
-
- <IN_MULTI_LINE_COMMENT>
- SPECIAL_TOKEN :
- {
- <MULTI_LINE_COMMENT: "*/" > : DEFAULT
- }
-
- <IN_JSP_TAG>
- SPECIAL_TOKEN :
- {
- <JSP_TAG: "%>" > : DEFAULT
- }
-
- <IN_SINGLE_LINE_COMMENT, IN_MULTI_LINE_COMMENT, IN_JSP_TAG, IN_PATTERN>
- MORE :
- {
- < ~[] >
- }
-
-
-
- /* Section 7.5.1: Reserved Words */
-
- <DEFAULT, IN_REGEX>
- TOKEN :
- {
- < BREAK: "break" > : DEFAULT
- |
- < CONTINUE: "continue" > : DEFAULT
- |
- < DELETE: "delete" > : DEFAULT
- |
- < ELSE: "else" > : DEFAULT
- |
- < FOR: "for" > : DEFAULT
- |
- < FUNCTION: "function" > : DEFAULT
- |
- < IF: "if" > : DEFAULT
- |
- < IN: "in" > : DEFAULT
- |
- < NEW: "new" > : DEFAULT
- |
- < RETURN: "return" > : DEFAULT
- |
- < THIS: "this" > : IN_REGEX
- |
- < TYPEOF: "typeof" > : DEFAULT
- |
- < VAR: "var" > : DEFAULT
- |
- < VOID: "void" > : DEFAULT
- |
- < WHILE: "while" > : DEFAULT
- |
- < WITH: "with" > : DEFAULT
- |
- < CASE: "case" > : DEFAULT
- |
- < CATCH: "catch" > : DEFAULT
- |
- < CLASS: "class" > : DEFAULT
- |
- < CONST: "const" > : DEFAULT
- |
- < DEBUGGER: "debugger" > : DEFAULT
- |
- < _DEFAULT: "default" > : DEFAULT
- |
- < DO: "do" > : DEFAULT
- |
- < ENUM: "enum" > : DEFAULT
- |
- < EXPORT: "export" > : DEFAULT
- |
- < EXTENDS: "extends" > : DEFAULT
- |
- < FINALLY: "finally" > : DEFAULT
- |
- < IMPORT: "import" > : DEFAULT
- |
- < SUPER: "super" > : DEFAULT
- |
- < SWITCH: "switch" > : DEFAULT
- |
- < THROW: "throw" > : DEFAULT
- |
- < TRY: "try" > : DEFAULT
- }
-
-
- /* JScript .NET Tokens
-
- TOKEN :
- {
- < BYTE: "byte" >
- | < SBYTE: "sbyte" >
- | < SHORT: "short" >
- | < USHORT: "ushort" >
- | < UINT: "uint" >
- | < LONG: "long" >
- | < ULONG: "ulong" >
- | < FLOAT: "float" >
- | < NUMBER: "Number" >
- | < DOUBLE: "double" >
- | < DECIMAL: "decimal" >
- | < BOOLEAN: "boolean" >
- | < STRING: "String" >
- | < CHAR: "char" >
- }
-
- */
-
-
- /* Section 7.7: Punctuators */
-
- <DEFAULT, IN_REGEX>
- TOKEN :
- {
- < LBRACE: "{" > : DEFAULT
- |
- < RBRACE: "}" > : IN_REGEX
- |
- < LPAREN: "(" > : DEFAULT
- |
- < RPAREN: ")" > : IN_REGEX
- |
- < LBRACKET: "[" > : DEFAULT
- |
- < RBRACKET: "]" > : IN_REGEX
- |
- < DOT: "." > : DEFAULT
- |
- < SEMICOLON: ";" > : DEFAULT
- |
- < COMMA: "," > : DEFAULT
- |
- < LT: "<" > : DEFAULT
- |
- < GT: ">" > : DEFAULT
- |
- < LE: "<=" > : DEFAULT
- |
- < GE: ">=" > : DEFAULT
- |
- < EQ: "==" > : DEFAULT
- |
- < NE: "!=" > : DEFAULT
- |
- < SEQ: "===" > : DEFAULT /* Strict Equals Operator */
- |
- < SNEQ: "!==" > : DEFAULT /* Strict Does-not-equal Operator */
- |
- < PLUS: "+" > : DEFAULT
- |
- < MINUS: "-" > : DEFAULT
- |
- < STAR: "*" > : DEFAULT
- |
- < REM: "%" > : DEFAULT
- |
- < INCR: "++" > : IN_REGEX
- |
- < DECR: "--" > : IN_REGEX
- |
- < LSHIFT: "<<" > : DEFAULT
- |
- < RSHIFT: ">>" > : DEFAULT
- |
- < RUNSHIFT: ">>>" > : DEFAULT /* Unsigned Right Shift Operator */
- |
- < BIT_AND: "&" > : DEFAULT
- |
- < BIT_OR: "|" > : DEFAULT
- |
- < XOR: "^" > : DEFAULT
- |
- < BANG: "!" > : DEFAULT
- |
- < TILDE: "~" > : IN_REGEX
- |
- < SC_AND: "&&" > : DEFAULT
- |
- < SC_OR: "||" > : DEFAULT
- |
- < HOOK: "?" > : DEFAULT
- |
- < COLON: ":" > : DEFAULT
- |
- < ASSIGN: "=" > : DEFAULT
- |
- < PLUSASSIGN: "+=" > : DEFAULT
- |
- < MINUSASSIGN: "-=" > : DEFAULT
- |
- < STARASSIGN: "*=" > : DEFAULT
- |
- < REMASSIGN: "%=" > : DEFAULT
- |
- < LSHIFTASSIGN: "<<=" > : DEFAULT
- |
- < RSIGNEDSHIFTASSIGN: ">>=" > : DEFAULT
- |
- < RUNSIGNEDSHIFTASSIGN: ">>>=" > : DEFAULT
- |
- < ANDASSIGN: "&=" > : DEFAULT
- |
- < ORASSIGN: "|=" > : DEFAULT
- |
- < XORASSIGN: "^=" > : DEFAULT
- |
- < INTANCE_OF: "instanceof" > : DEFAULT
- }
-
-
- /* Section 7.8.3: Numeric Literals */
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- {
- < DECIMAL_LITERAL :
- <DECIMAL_INTEGER_LITERAL> "." (<DECIMAL_DIGITS>)? (<EXPONENT_PART>)?
- |
- "." <DECIMAL_DIGITS> (<EXPONENT_PART>)?
- |
- <DECIMAL_INTEGER_LITERAL> (<EXPONENT_PART>)?
- > : IN_REGEX
- |
- < #NON_ZERO_DIGIT: ["1"-"9"] >
- |
- < #EXPONENT_PART: ("e" | "E") (["+","-"])? <DECIMAL_DIGITS> >
- }
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- {
- < DECIMAL_INTEGER_LITERAL:
- "0" | <NON_ZERO_DIGIT> (<DECIMAL_DIGITS>)?
- > : IN_REGEX
- }
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- {
- < HEX_INTEGER_LITERAL: "0" ["x","X"] (<HEX_DIGIT>)+ > : IN_REGEX
- }
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- { < DECIMAL_DIGITS: (<DECIMAL_DIGIT>)+ > : IN_REGEX }
-
- TOKEN:
- {
- < DECIMAL_DIGIT: ["0"-"9"] >
- }
-
-
- /* Section 7.8: Literals */
- /*
-
- MORE:
- {
- < LITERAL:
- <NULL_LITERAL>
- | <BOOLEAN_LITERAL>
- | <NUMERIC_LITERAL>
- | <STRING_LITERAL>
- >
- }
-
- */
-
-
- /* Section 7.8.1: NULL Literals */
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- {
- < NULL_LITERAL: "null" > : IN_REGEX
- }
-
- /* Section 7.8.2: Boolean Literals */
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- {
- < BOOLEAN_LITERAL: "true" | "false" > : IN_REGEX
- }
-
-
-
- /* Section 7.8.4: String Literals */
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- {
- < STRING_LITERAL:
- "\"" (<DOUBLE_STRING_CHARACTERS>)? "\"" | "'" (<SINGLE_STRING_CHARACTERS>)? "'"
- > : IN_REGEX
- |
- < #DOUBLE_STRING_CHARACTERS: (<DOUBLE_STRING_CHARACTER>)* >
- |
- < #SINGLE_STRING_CHARACTERS: (<SINGLE_STRING_CHARACTER>)* >
- |
- < #DOUBLE_STRING_CHARACTER:
- (~["\"","\\","\n","\r","\u2028","\u2029"])*
- | "\\" <ESCAPE_SEQUENCE>
- >
- |
- < #SINGLE_STRING_CHARACTER:
- (~["'","\\","\n","\r","\u2028","\u2029"])
- | "\\" <ESCAPE_SEQUENCE>
- >
- |
- < #ESCAPE_SEQUENCE:
- <CHARACTER_ESCAPE_SEQUENCE>
- |
- "0"
- |
- <HEX_ESCAPE_SEQUENCE>
- |
- <UNICODE_ESCAPE_SEQUENCE>
- >
- |
- < #CHARACTER_ESCAPE_SEQUENCE:
- <SINGLE_ESCAPE_CHARACTER> | <NON_ESCAPE_CHARACTER>
- >
- |
- < #SINGLE_ESCAPE_CHARACTER: ["'" , "\"" , "\\" , "b" , "f" , "n" , "r" , "t" , "v"] >
- |
- < #NON_ESCAPE_CHARACTER:
- ~["\n","\r","\u2028","\u2029"]
- |
- ~["'" , "\"" , "\\" , "b" , "f" , "n" , "r" , "t" , "v", "x", "u"]
- |
- ~["0"-"9"]
- >
- }
-
- TOKEN:
- {
- < HEX_ESCAPE_SEQUENCE: "x" <HEX_DIGIT> <HEX_DIGIT> >
- }
-
- /*
- TOKEN:
- {
- < ESCAPE_CHARACTER:
- ["'" , "\"" , "\\" , "b" , "f" , "n" , "r" , "t" , "v"]
- | ["0"-"9"]
- | "x"
- | "u"
- >
- }
- */
-
- /* Section 7.6: Identifiers */
-
- <DEFAULT, IN_REGEX>
- TOKEN:
- {
- < IDENTIFIER_NAME: <IDENTIFIER_START> (<IDENTIFIER_PART>)* > : IN_REGEX
- |
- < #IDENTIFIER_START:
- <UNICODE_LETTER>
- |
- <DOLLAR_SIGN>
- |
- <UNDER_SCORE>
- |
- <UNICODE_ESCAPE_SEQUENCE>
- >
- |
- < #IDENTIFIER_PART:
- <IDENTIFIER_START>
- |
- <UNICODE_COMBINING_MARK>
- |
- <UNICODE_DIGIT>
- |
- <UNICODE_CONNECTOR_PUNCTUATION>
- |
- <UNICODE_ESCAPE_SEQUENCE>
- >
- |
- < #DOLLAR_SIGN: "$" >
- |
- < #UNDER_SCORE: "_" >
- |
- < #UNICODE_LETTER:
- ["A"-"Z"]
- | ["a"-"z"]
- | ["A"-"Z"]
- | ["a"-"z"]
- | ["\u00aa"]
- | ["\u00b5"]
- | ["\u00ba"]
- | ["\u00c0"-"\u00d6"]
- | ["\u00d8"-"\u00f6"]
- | ["\u00f8"-"\u021f"]
- | ["\u0222"-"\u0233"]
- | ["\u0250"-"\u02ad"]
- | ["\u02b0"-"\u02b8"]
- | ["\u02bb"-"\u02c1"]
- | ["\u02d0"-"\u02d1"]
- | ["\u02e0"-"\u02e4"]
- | ["\u02ee"]
- | ["\u037a"]
- | ["\u0386"]
- | ["\u0388"-"\u038a"]
- | ["\u038c"]
- | ["\u038e"-"\u03a1"]
- | ["\u03a3"-"\u03ce"]
- | ["\u03d0"-"\u03d7"]
- | ["\u03da"-"\u03f3"]
- | ["\u0400"-"\u0481"]
- | ["\u048c"-"\u04c4"]
- | ["\u04c7"-"\u04c8"]
- | ["\u04cb"-"\u04cc"]
- | ["\u04d0"-"\u04f5"]
- | ["\u04f8"-"\u04f9"]
- | ["\u0531"-"\u0556"]
- | ["\u0559"]
- | ["\u0561"-"\u0587"]
- | ["\u05d0"-"\u05ea"]
- | ["\u05f0"-"\u05f2"]
- | ["\u0621"-"\u063a"]
- | ["\u0640"-"\u064a"]
- | ["\u0671"-"\u06d3"]
- | ["\u06d5"]
- | ["\u06e5"-"\u06e6"]
- | ["\u06fa"-"\u06fc"]
- | ["\u0710"]
- | ["\u0712"-"\u072c"]
- | ["\u0780"-"\u07a5"]
- | ["\u0905"-"\u0939"]
- | ["\u093d"]
- | ["\u0950"]
- | ["\u0958"-"\u0961"]
- | ["\u0985"-"\u098c"]
- | ["\u098f"-"\u0990"]
- | ["\u0993"-"\u09a8"]
- | ["\u09aa"-"\u09b0"]
- | ["\u09b2"]
- | ["\u09b6"-"\u09b9"]
- | ["\u09dc"-"\u09dd"]
- | ["\u09df"-"\u09e1"]
- | ["\u09f0"-"\u09f1"]
- | ["\u0a05"-"\u0a0a"]
- | ["\u0a0f"-"\u0a10"]
- | ["\u0a13"-"\u0a28"]
- | ["\u0a2a"-"\u0a30"]
- | ["\u0a32"-"\u0a33"]
- | ["\u0a35"-"\u0a36"]
- | ["\u0a38"-"\u0a39"]
- | ["\u0a59"-"\u0a5c"]
- | ["\u0a5e"]
- | ["\u0a72"-"\u0a74"]
- | ["\u0a85"-"\u0a8b"]
- | ["\u0a8d"]
- | ["\u0a8f"-"\u0a91"]
- | ["\u0a93"-"\u0aa8"]
- | ["\u0aaa"-"\u0ab0"]
- | ["\u0ab2"-"\u0ab3"]
- | ["\u0ab5"-"\u0ab9"]
- | ["\u0abd"]
- | ["\u0ad0"]
- | ["\u0ae0"]
- | ["\u0b05"-"\u0b0c"]
- | ["\u0b0f"-"\u0b10"]
- | ["\u0b13"-"\u0b28"]
- | ["\u0b2a"-"\u0b30"]
- | ["\u0b32"-"\u0b33"]
- | ["\u0b36"-"\u0b39"]
- | ["\u0b3d"]
- | ["\u0b5c"-"\u0b5d"]
- | ["\u0b5f"-"\u0b61"]
- | ["\u0b85"-"\u0b8a"]
- | ["\u0b8e"-"\u0b90"]
- | ["\u0b92"-"\u0b95"]
- | ["\u0b99"-"\u0b9a"]
- | ["\u0b9c"]
- | ["\u0b9e"-"\u0b9f"]
- | ["\u0ba3"-"\u0ba4"]
- | ["\u0ba8"-"\u0baa"]
- | ["\u0bae"-"\u0bb5"]
- | ["\u0bb7"-"\u0bb9"]
- | ["\u0c05"-"\u0c0c"]
- | ["\u0c0e"-"\u0c10"]
- | ["\u0c12"-"\u0c28"]
- | ["\u0c2a"-"\u0c33"]
- | ["\u0c35"-"\u0c39"]
- | ["\u0c60"-"\u0c61"]
- | ["\u0c85"-"\u0c8c"]
- | ["\u0c8e"-"\u0c90"]
- | ["\u0c92"-"\u0ca8"]
- | ["\u0caa"-"\u0cb3"]
- | ["\u0cb5"-"\u0cb9"]
- | ["\u0cde"]
- | ["\u0ce0"-"\u0ce1"]
- | ["\u0d05"-"\u0d0c"]
- | ["\u0d0e"-"\u0d10"]
- | ["\u0d12"-"\u0d28"]
- | ["\u0d2a"-"\u0d39"]
- | ["\u0d60"-"\u0d61"]
- | ["\u0d85"-"\u0d96"]
- | ["\u0d9a"-"\u0db1"]
- | ["\u0db3"-"\u0dbb"]
- | ["\u0dbd"]
- | ["\u0dc0"-"\u0dc6"]
- | ["\u0e01"-"\u0e30"]
- | ["\u0e32"-"\u0e33"]
- | ["\u0e40"-"\u0e46"]
- | ["\u0e81"-"\u0e82"]
- | ["\u0e84"]
- | ["\u0e87"-"\u0e88"]
- | ["\u0e8a"]
- | ["\u0e8d"]
- | ["\u0e94"-"\u0e97"]
- | ["\u0e99"-"\u0e9f"]
- | ["\u0ea1"-"\u0ea3"]
- | ["\u0ea5"]
- | ["\u0ea7"]
- | ["\u0eaa"-"\u0eab"]
- | ["\u0ead"-"\u0eb0"]
- | ["\u0eb2"-"\u0eb3"]
- | ["\u0ebd"-"\u0ec4"]
- | ["\u0ec6"]
- | ["\u0edc"-"\u0edd"]
- | ["\u0f00"]
- | ["\u0f40"-"\u0f6a"]
- | ["\u0f88"-"\u0f8b"]
- | ["\u1000"-"\u1021"]
- | ["\u1023"-"\u1027"]
- | ["\u1029"-"\u102a"]
- | ["\u1050"-"\u1055"]
- | ["\u10a0"-"\u10c5"]
- | ["\u10d0"-"\u10f6"]
- | ["\u1100"-"\u1159"]
- | ["\u115f"-"\u11a2"]
- | ["\u11a8"-"\u11f9"]
- | ["\u1200"-"\u1206"]
- | ["\u1208"-"\u1246"]
- | ["\u1248"]
- | ["\u124a"-"\u124d"]
- | ["\u1250"-"\u1256"]
- | ["\u1258"]
- | ["\u125a"-"\u125d"]
- | ["\u1260"-"\u1286"]
- | ["\u1288"]
- | ["\u128a"-"\u128d"]
- | ["\u1290"-"\u12ae"]
- | ["\u12b0"]
- | ["\u12b2"-"\u12b5"]
- | ["\u12b8"-"\u12be"]
- | ["\u12c0"]
- | ["\u12c2"-"\u12c5"]
- | ["\u12c8"-"\u12ce"]
- | ["\u12d0"-"\u12d6"]
- | ["\u12d8"-"\u12ee"]
- | ["\u12f0"-"\u130e"]
- | ["\u1310"]
- | ["\u1312"-"\u1315"]
- | ["\u1318"-"\u131e"]
- | ["\u1320"-"\u1346"]
- | ["\u1348"-"\u135a"]
- | ["\u13a0"-"\u13b0"]
- | ["\u13b1"-"\u13f4"]
- | ["\u1401"-"\u1676"]
- | ["\u1681"-"\u169a"]
- | ["\u16a0"-"\u16ea"]
- | ["\u1780"-"\u17b3"]
- | ["\u1820"-"\u1877"]
- | ["\u1880"-"\u18a8"]
- | ["\u1e00"-"\u1e9b"]
- | ["\u1ea0"-"\u1ee0"]
- | ["\u1ee1"-"\u1ef9"]
- | ["\u1f00"-"\u1f15"]
- | ["\u1f18"-"\u1f1d"]
- | ["\u1f20"-"\u1f39"]
- | ["\u1f3a"-"\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"]
- | ["\u207f"]
- | ["\u2102"]
- | ["\u2107"]
- | ["\u210a"-"\u2113"]
- | ["\u2115"]
- | ["\u2119"-"\u211d"]
- | ["\u2124"]
- | ["\u2126"]
- | ["\u2128"]
- | ["\u212a"-"\u212d"]
- | ["\u212f"-"\u2131"]
- | ["\u2133"-"\u2139"]
- | ["\u2160"-"\u2183"]
- | ["\u3005"-"\u3007"]
- | ["\u3021"-"\u3029"]
- | ["\u3031"-"\u3035"]
- | ["\u3038"-"\u303a"]
- | ["\u3041"-"\u3094"]
- | ["\u309d"-"\u309e"]
- | ["\u30a1"-"\u30fa"]
- | ["\u30fc"-"\u30fe"]
- | ["\u3105"-"\u312c"]
- | ["\u3131"-"\u318e"]
- | ["\u31a0"-"\u31b7"]
- | ["\u3400"]
- | ["\u4db5"]
- | ["\u4e00"]
- | ["\u9fa5"]
- | ["\ua000"-"\ua48c"]
- | ["\uac00"]
- | ["\ud7a3"]
- | ["\uf900"-"\ufa2d"]
- | ["\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"-"\ufdfb"]
- | ["\ufe70"-"\ufe72"]
- | ["\ufe74"]
- | ["\ufe76"-"\ufefc"]
- | ["\uff21"-"\uff3a"]
- | ["\uff41"-"\uff5a"]
- | ["\uff66"-"\uffbe"]
- | ["\uffc2"-"\uffc7"]
- | ["\uffca"-"\uffcf"]
- | ["\uffd2"-"\uffd7"]
- | ["\uffda"-"\uffdc"]
- >
- }
-
- /*
- * Unicode categories Non-spacing mark (MN) OR Combining spacing mark (MC)
- */
- MORE:
- {
- < UNICODE_COMBINING_MARK: <MN> | <MC> >
- }
-
-
- TOKEN:
- {
- < MC:
- ["\u0903"]
- | ["\u093e"]
- | ["\u093f"]
- | ["\u0940"]
- | ["\u0949"]
- | ["\u094a"]
- | ["\u094b"]
- | ["\u094c"]
- | ["\u0982"]
- | ["\u0983"]
- | ["\u09be"]
- | ["\u09bf"]
- | ["\u09c0"]
- | ["\u09c7"]
- | ["\u09c8"]
- | ["\u09cb"]
- | ["\u09cc"]
- | ["\u09d7"]
- | ["\u0a03"]
- | ["\u0a3e"]
- | ["\u0a3f"]
- | ["\u0a40"]
- | ["\u0a83"]
- | ["\u0abe"]
- | ["\u0abf"]
- | ["\u0ac0"]
- | ["\u0ac9"]
- | ["\u0acb"]
- | ["\u0acc"]
- | ["\u0b02"]
- | ["\u0b03"]
- | ["\u0b3e"]
- | ["\u0b40"]
- | ["\u0b47"]
- | ["\u0b48"]
- | ["\u0b4b"]
- | ["\u0b4c"]
- | ["\u0b57"]
- | ["\u0bbe"]
- | ["\u0bbf"]
- | ["\u0bc1"]
- | ["\u0bc2"]
- | ["\u0bc6"]
- | ["\u0bc7"]
- | ["\u0bc8"]
- | ["\u0bca"]
- | ["\u0bcb"]
- | ["\u0bcc"]
- | ["\u0bd7"]
- | ["\u0c01"]
- | ["\u0c02"]
- | ["\u0c03"]
- | ["\u0c41"]
- | ["\u0c42"]
- | ["\u0c43"]
- | ["\u0c44"]
- | ["\u0c82"]
- | ["\u0c83"]
- | ["\u0cbe"]
- | ["\u0cc0"]
- | ["\u0cc1"]
- | ["\u0cc2"]
- | ["\u0cc3"]
- | ["\u0cc4"]
- | ["\u0cc7"]
- | ["\u0cc8"]
- | ["\u0cca"]
- | ["\u0ccb"]
- | ["\u0cd5"]
- | ["\u0cd6"]
- | ["\u0d02"]
- | ["\u0d03"]
- | ["\u0d3e"]
- | ["\u0d3f"]
- | ["\u0d40"]
- | ["\u0d46"]
- | ["\u0d47"]
- | ["\u0d48"]
- | ["\u0d4a"]
- | ["\u0d4b"]
- | ["\u0d4c"]
- | ["\u0d57"]
- | ["\u0d82"]
- | ["\u0d83"]
- | ["\u0dcf"]
- | ["\u0dd0"]
- | ["\u0dd1"]
- | ["\u0dd8"]
- | ["\u0dd9"]
- | ["\u0dda"]
- | ["\u0ddb"]
- | ["\u0ddc"]
- | ["\u0ddd"]
- | ["\u0dde"]
- | ["\u0ddf"]
- | ["\u0df2"]
- | ["\u0df3"]
- | ["\u0f3e"]
- | ["\u0f3f"]
- | ["\u0f7f"]
- | ["\u102c"]
- | ["\u1031"]
- | ["\u1038"]
- | ["\u1056"]
- | ["\u1057"]
- | ["\u17b6"]
- | ["\u17be"]
- | ["\u17bf"]
- | ["\u17c0"]
- | ["\u17c1"]
- | ["\u17c2"]
- | ["\u17c3"]
- | ["\u17c4"]
- | ["\u17c5"]
- | ["\u17c7"]
- | ["\u17c8"]
- | ["\u1923"]
- | ["\u1924"]
- | ["\u1925"]
- | ["\u1926"]
- | ["\u1929"]
- | ["\u192a"]
- | ["\u192b"]
- | ["\u1930"]
- | ["\u1931"]
- | ["\u1933"]
- | ["\u1934"]
- | ["\u1935"]
- | ["\u1936"]
- | ["\u1937"]
- | ["\u1938"]
- | ["\u19b0"]
- | ["\u19b1"]
- | ["\u19b2"]
- | ["\u19b3"]
- | ["\u19b4"]
- | ["\u19b5"]
- | ["\u19b6"]
- | ["\u19b7"]
- | ["\u19b8"]
- | ["\u19b9"]
- | ["\u19ba"]
- | ["\u19bb"]
- | ["\u19bc"]
- | ["\u19bd"]
- | ["\u19be"]
- | ["\u19bf"]
- | ["\u19c0"]
- | ["\u19c8"]
- | ["\u19c9"]
- | ["\u1a19"]
- | ["\u1a1a"]
- | ["\u1a1b"]
- | ["\ua802"]
- | ["\ua823"]
- | ["\ua824"]
- | ["\ua827"]
- | ["\u1d16"]
- | ["\u1d16"]
- | ["\u1d16"]
- | ["\u1d16"]
- | ["\u1d16"]
- | ["\u1d17"]
- | ["\u1d17"]
- | ["\u1d17"]
- >
- |
- < MN:
- ["\u0300"-"\u034e"]
- | ["\u0360"-"\u0362"]
- | ["\u0483"-"\u0486"]
- | ["\u0591"-"\u05a1"]
- | ["\u05a3"-"\u05b9"]
- | ["\u05bb"-"\u05bd"]
- | ["\u05bf"]
- | ["\u05c1"-"\u05c2"]
- | ["\u05c4"]
- | ["\u064b"-"\u0655"]
- | ["\u0670"]
- | ["\u06d6"-"\u06dc"]
- | ["\u06df"-"\u06e4"]
- | ["\u06e7"-"\u06e8"]
- | ["\u06ea"-"\u06ed"]
- | ["\u0711"]
- | ["\u0730"-"\u074a"]
- | ["\u07a6"-"\u07b0"]
- | ["\u0901"-"\u0903"]
- | ["\u093c"]
- | ["\u093e"-"\u094d"]
- | ["\u0951"-"\u0954"]
- | ["\u0962"-"\u0963"]
- | ["\u0981"-"\u0983"]
- | ["\u09bc"-"\u09c4"]
- | ["\u09c7"-"\u09c8"]
- | ["\u09cb"-"\u09cd"]
- | ["\u09d7"]
- | ["\u09e2"-"\u09e3"]
- | ["\u0a02"]
- | ["\u0a3c"]
- | ["\u0a3e"-"\u0a42"]
- | ["\u0a47"-"\u0a48"]
- | ["\u0a4b"-"\u0a4d"]
- | ["\u0a70"-"\u0a71"]
- | ["\u0a81"-"\u0a83"]
- | ["\u0abc"]
- | ["\u0abe"-"\u0ac5"]
- | ["\u0ac7"-"\u0ac9"]
- | ["\u0acb"-"\u0acd"]
- | ["\u0b01"-"\u0b03"]
- | ["\u0b3c"]
- | ["\u0b3e"-"\u0b43"]
- | ["\u0b47"-"\u0b48"]
- | ["\u0b4b"-"\u0b4d"]
- | ["\u0b56"-"\u0b57"]
- | ["\u0b82"-"\u0b83"]
- | ["\u0bbe"-"\u0bc2"]
- | ["\u0bc6"-"\u0bc8"]
- | ["\u0bca"-"\u0bcd"]
- | ["\u0bd7"]
- | ["\u0c01"-"\u0c03"]
- | ["\u0c3e"-"\u0c44"]
- | ["\u0c46"-"\u0c48"]
- | ["\u0c4a"-"\u0c4d"]
- | ["\u0c55"-"\u0c56"]
- | ["\u0c82"-"\u0c83"]
- | ["\u0cbe"-"\u0cc4"]
- | ["\u0cc6"-"\u0cc8"]
- | ["\u0cca"-"\u0ccd"]
- | ["\u0cd5"-"\u0cd6"]
- | ["\u0d02"-"\u0d03"]
- | ["\u0d3e"-"\u0d43"]
- | ["\u0d46"-"\u0d48"]
- | ["\u0d4a"-"\u0d4d"]
- | ["\u0d57"]
- | ["\u0d82"-"\u0d83"]
- | ["\u0dca"]
- | ["\u0dcf"-"\u0dd4"]
- | ["\u0dd6"]
- | ["\u0dd8"-"\u0ddf"]
- | ["\u0df2"-"\u0df3"]
- | ["\u0e31"]
- | ["\u0e34"-"\u0e3a"]
- | ["\u0e47"-"\u0e4e"]
- | ["\u0eb1"]
- | ["\u0eb4"-"\u0eb9"]
- | ["\u0ebb"-"\u0ebc"]
- | ["\u0ec8"-"\u0ecd"]
- | ["\u0f18"-"\u0f19"]
- | ["\u0f35"]
- | ["\u0f37"]
- | ["\u0f39"]
- | ["\u0f3e"-"\u0f3f"]
- | ["\u0f71"-"\u0f84"]
- | ["\u0f86"-"\u0f87"]
- | ["\u0f90"-"\u0f97"]
- | ["\u0f99"-"\u0fbc"]
- | ["\u0fc6"]
- | ["\u102c"-"\u1032"]
- | ["\u1036"-"\u1039"]
- | ["\u1056"-"\u1059"]
- | ["\u17b4"-"\u17d3"]
- | ["\u18a9"]
- | ["\u20d0"-"\u20dc"]
- | ["\u20e1"]
- | ["\u302a"-"\u302f"]
- | ["\u3099"-"\u309a"]
- | ["\ufb1e"]
- | ["\ufe20"-"\ufe23"]
- >
- }
-
- TOKEN:
- {
- < UNICODE_DIGIT:
- ["0"-"9"]
- | ["\u0660"-"\u0669"]
- | ["\u06f0"-"\u06f9"]
- | ["\u0966"-"\u096f"]
- | ["\u09e6"-"\u09ef"]
- | ["\u0a66"-"\u0a6f"]
- | ["\u0ae6"-"\u0aef"]
- | ["\u0b66"-"\u0b6f"]
- | ["\u0be7"-"\u0bef"]
- | ["\u0c66"-"\u0c6f"]
- | ["\u0ce6"-"\u0cef"]
- | ["\u0d66"-"\u0d6f"]
- | ["\u0e50"-"\u0e59"]
- | ["\u0ed0"-"\u0ed9"]
- | ["\u0f20"-"\u0f29"]
- | ["\u1040"-"\u1049"]
- | ["\u1369"-"\u1371"]
- | ["\u17e0"-"\u17e9"]
- | ["\u1810"-"\u1819"]
- | ["\uff10"-"\uff19"]
- >
- }
-
- TOKEN:
- {
- < UNICODE_CONNECTOR_PUNCTUATION:
- ["_"]
- |
- ["\u203f"-"\u2040"]
- |
- ["\u30fb"]
- |
- ["\ufe33"-"\ufe34"]
- |
- ["\ufe4d"-"\ufe4f"]
- |
- ["\uff3f"]
- |
- ["\uff65"]
- >
- }
-
- TOKEN:
- {
- < UNICODE_ESCAPE_SEQUENCE: "u" <HEX_DIGIT> <HEX_DIGIT> <HEX_DIGIT> <HEX_DIGIT> >
- }
-
- TOKEN:
- {
- < HEX_DIGIT: ["0"-"9"] | ["a"-"f"] | ["A"-"F"] >
- }
-
-
-
- <IN_REGEX>
- TOKEN :
- {
- < SLASHASSIGN: "/=" > : DEFAULT
- |
- < SLASH: "/" > : DEFAULT
- }
-
-
- /* Section 7.8.5: Regular Expression Literals */
-
- <DEFAULT>
- TOKEN :
- {
- < REGULAR_EXPRESSION_LITERAL:
- "/" ( (~["\n","\r","\\","/","*"]) | <BACKSLASH_SEQUENCE> )
- ( (~["\n","\r","\\","/"]) | <BACKSLASH_SEQUENCE> )* "/" (<IDENTIFIER_PART>)*
- > : IN_REGEX
- |
- < #BACKSLASH_SEQUENCE:
- "\\" (~["\n","\r"])
- >
- }
-
-
- /*
-
- <DEFAULT>
- TOKEN:
- {
- < REGULAR_EXPRESSION_LITERAL:
- "/" <REGULAR_EXPRESSION_BODY> "/" <REGULAR_EXPRESSION_FLAGS>
- > : IN_REGEX
- |
- < #REGULAR_EXPRESSION_BODY: <REGULAR_EXPRESSION_FIRSTCHAR> <REGULAR_EXPRESSION_CHARS> >
- |
- < #REGULAR_EXPRESSION_CHARS: (<REGULAR_EXPRESSION_CHAR>)* >
- |
- < #REGULAR_EXPRESSION_FIRSTCHAR:
- // ~["*","\\","/"] <NON_TERMINATOR>
- <NON_TERMINATOR_FIRSTCHAR>
- | <BACKSLASH_SEQUENCE>
- >
- |
- < #REGULAR_EXPRESSION_CHAR:
- //~["\\","/"] <NON_TERMINATOR> <NON_TERMINATOR_CHAR>
- | <BACKSLASH_SEQUENCE>
- >
- |
- < #BACKSLASH_SEQUENCE: "\\" <NON_TERMINATOR> >
- |
- < #NON_TERMINATOR_FIRSTCHAR: ~["\n","\r","\u2028","\u2029","*","\\","/"] >
- |
- < #NON_TERMINATOR_CHAR: ~["\n","\r","\u2028","\u2029","\\","/"] >
- |
- < #NON_TERMINATOR: ~["\n","\r","\u2028","\u2029"] >
- |
- < #REGULAR_EXPRESSION_FLAGS: (<IDENTIFIER_PART>)* >
- }
-
- */
-
-
- /*****************************************
- * NUMERIC STRING GRAMMAR STARTS HERE *
- *****************************************/
-
- /* Section 9.3: String-to-Number Conversion */
-
- /*
- MORE:
- {
- <STRING_NUMERIC_LITERAL: (<STR_WHITESPACE>)? (<STR_NUMERIC_LITERAL> (<STR_WHITESPACE>)?)? >
- }
-
- MORE:
- {
- < STR_WHITESPACE: (<STR_WHITESPACE_CHAR>)+ >
- }
-
- MORE:
- {
- < STR_WHITESPACE_CHAR:
- <TAB>
- | <SP>
- | <NBSP>
- | <FF>
- | <VT>
- | <CR>
- | <LF>
- | <LS>
- | <PS>
- | <USP>
- >
- }
-
-
- MORE:
- {
- < STR_NUMERIC_LITERAL:
- <STR_DECIMAL_LITERAL> | <HEX_INTEGER_LITERAL>
- >
- }
-
- MORE:
- {
- <STR_DECIMAL_LITERAL: <STR_UNSIGNED_DECIMAL_LITERAL> ("+" | "-") <STR_UNSIGNED_DECIMAL_LITERAL> >
- }
-
- MORE:
- {
- < STR_UNSIGNED_DECIMAL_LITERAL:
- "Infinity"
- | <DECIMAL_DIGITS> "." (<DECIMAL_DIGITS>)* (<EXPONENT_PART>)*
- >
- }
-
- */
-
-
- /* A.6 Universal Resource Identifier Character Classes */
-
-
- /*
-
- TOKEN:
- {
- < URIRESERVED : [";" , "/" , "?" , ":" , "@" , "&" , "=" , "+" , "$" , ","] >
- }
-
- TOKEN:
- {
- < URI_ALPHA : ["a"-"z","A"-"Z"] >
- }
-
- TOKEN:
- {
- < URI_MARK : ["-" , "_" , "." , "!" , "~" , "*" , "'" , "(" , ")"] >
- }
-
- void uri() :
- {}
- {
- (uriCharacters())?
- }
-
- void uriCharacters() :
- {}
- {
- (uriCharacter())+
- }
-
- void uriCharacter() :
- {}
- {
- <URIRESERVED>
- | uriUnescaped()
- | uriEscaped()
- }
-
- void uriUnescaped() :
- {}
- {
- <URI_ALPHA>
- | <DECIMAL_DIGIT>
- | <URI_MARK>
- }
-
- void uriEscaped() :
- {}
- {
- "%" <HEX_DIGIT> <HEX_DIGIT>
- }
-
- */
-
- /* A.7 Regular Expressions */
-
- /*
-
- MORE :
- {
- "/^" : INSIDE_PATTERN
- }
-
- <INSIDE_PATTERN, IN_PATTERN>
- TOKEN:
- {
- < PATTERN : <DISJUNCTION> > : DEFAULT
- |
- < #DISJUNCTION : (<ALTERNATIVE>)+ >
- |
- < #ALTERNATIVE : (<TERM>)* >
- |
- < #TERM : <ASSERTION> | <ATOM> (<QUANTIFIER>)? >
- |
- < #ASSERTION :
- "^"
- | "$"
- | "\\" ("b" | "B")
- >
- |
- < #QUANTIFIER : <QUANTIFIERPREFIX> ("?")? >
- |
- < #QUANTIFIERPREFIX : "*" | "+" | "?" | ( "{" <DECIMAL_DIGITS> ("," (<DECIMAL_DIGITS>)?)? "}" ) >
- |
- < #ATOM :
- <PATTERN_CHARACTER>
- | "."
- | "\\" <ATOMESCAPE>
- | <CHARACTERCLASS>
- //| "(" ("?" (":" | "=" | "!"))? <DISJUNCTION> ")"
- | "(" ("?" (":" | "=" | "!"))? ")"
- >
- |
- < #PATTERN_CHARACTER : ~["^", "$", "\\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", "|"] >
- |
- < #ATOMESCAPE : <DECIMALESCAPE> | <CHARACTERESCAPE> | <CHARACTER_CLASS_ESCAPE> >
- |
- < #CHARACTER_CLASS_ESCAPE : ["d", "D", "s", "S", "w", "W"] >
- |
- < #CHARACTERESCAPE :
- <CONTROL_ESCAPE>
- | "c" <CONTROL_LETTER>
- | <HEX_ESCAPE_SEQUENCE>
- | <UNICODE_ESCAPE_SEQUENCE>
- | <IDENTITY_ESCAPE>
- >
- |
- < #CONTROL_ESCAPE : ["f" , "n" , "r" , "t" , "v"] >
- |
- < #CONTROL_LETTER : ["a"-"z","A"-"Z"] >
- |
- < #IDENTITY_ESCAPE : ~["0"-"9", "A"-"Z", "a"-"z","-"] >
- |
- < #DECIMALESCAPE : <DECIMAL_INTEGER_LITERAL> >
- |
- < #CHARACTERCLASS : "[" ("^")? <CLASSRANGES> "]" >
- |
- < #CLASSRANGES : (<NONEMPTYCLASSRANGES>)? >
- |
- //< #NONEMPTYCLASSRANGES : <CLASSATOM> (<NONEMPTYCLASSRANGESNODASH> | "-" <CLASSATOM> <CLASSRANGES>) >
- < #NONEMPTYCLASSRANGES : <CLASSATOM> (<NONEMPTYCLASSRANGESNODASH> | "-" <CLASSATOM>) >
- |
- //< #NONEMPTYCLASSRANGESNODASH : <CLASSATOM> | <CLASSATOMNODASH> ( <NONEMPTYCLASSRANGESNODASH> | "-" <CLASSATOM> <CLASSRANGES> ) >
- < #NONEMPTYCLASSRANGESNODASH : <CLASSATOM> | <CLASSATOMNODASH> ( <CLASSATOM> | "-" <CLASSATOM> ) >
- |
- < #CLASSATOM : "-" <CLASSATOMNODASH> >
- |
- < #CLASSATOMNODASH : <CLASS_ATOM_NODASH_TOKEN> | "\\" <CLASSESCAPE> >
- |
- < #CLASS_ATOM_NODASH_TOKEN : ~["\\", "]", "-"] >
- |
- < #CLASSESCAPE :
- <DECIMALESCAPE>
- | "b"
- | <CHARACTERESCAPE>
- | <CHARACTER_CLASS_ESCAPE>
- >
- }
-
- */
-
- /*****************************************
- * ECMA SYNTACTIC GRAMMARS STARTS HERE *
- *****************************************/
-
- /* Section 11.1: Primary Expressions */
-
- void PrimaryExpression() :
- {}
- {
- try {
- LOOKAHEAD("this")/*@bgen(jjtree) ThisReference */
- {
- ASTThisReference jjtn001 = new ASTThisReference(JJTTHISREFERENCE);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
- jjtreeOpenNodeScope(jjtn001);
- }
- try {
- /*@egen*/ "this"/*@bgen(jjtree)*/
- } finally {
- if (jjtc001) {
- jjtree.closeNodeScope(jjtn001, true);
- jjtreeCloseNodeScope(jjtn001);
- }
- }
- /*@egen*/
- | LOOKAHEAD("{") ObjectLiteral()
- | LOOKAHEAD("(")/*@bgen(jjtree) ParenExpression */
- {
- ASTParenExpression jjtn002 = new ASTParenExpression(JJTPARENEXPRESSION);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
- jjtreeOpenNodeScope(jjtn002);
- }
- try {
- /*@egen*/ ( "(" Expression() ")" )/*@bgen(jjtree)*/
- } catch (Throwable jjte002) {
- if (jjtc002) {
- jjtree.clearNodeScope(jjtn002);
- jjtc002 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte002 instanceof RuntimeException) {
- throw (RuntimeException)jjte002;
- }
- if (jjte002 instanceof ParseException) {
- throw (ParseException)jjte002;
- }
- throw (Error)jjte002;
- } finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, true);
- jjtreeCloseNodeScope(jjtn002);
- }
- }
- /*@egen*/
- | LOOKAHEAD(Identifier()) Identifier()
- | LOOKAHEAD("[") ArrayLiteral()
- | LOOKAHEAD(2) Literal()
- }
- catch(ParseException pe) {
- addException(pe);
- }
- }
-
- /* Section 7.8: Literals */
-
- void Literal() :
- {/*@bgen(jjtree) Literal */
- ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtreeOpenNodeScope(jjtn000);
- /*@egen*/
- Token t;
- Map objLiteral;
- List arrayLiteral;
- }
- {/*@bgen(jjtree) Literal */
- try {
- /*@egen*/
- try {
- t = <DECIMAL_LITERAL>/*@bgen(jjtree)*/
- {
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtreeCloseNodeScope(jjtn000);
- }
- /*@egen*/
- {
- jjtn000.setDecimalValue(t.image);
- }
- |
- t = <HEX_INTEGER_LITERAL>/*@bgen(jjtree)*/
- {
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtreeCloseNodeScope(jjtn000);
- }
- /*@egen*/
- {
- jjtn000.setHexValue(t.image);
- }
- |
- t = <STRING_LITERAL>/*@bgen(jjtree)*/
- {
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtreeCloseNodeScope(jjtn000);
- }
- /*@egen*/
- {
- jjtn000.setStringValue(t.image);
- }
- |
- t = <BOOLEAN_LITERAL>/*@bgen(jjtree)*/
- {
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtreeCloseNodeScope(jjtn000);
- }
- /*@egen*/
- {
- jjtn000.setBooleanValue(t.image);
- }
- |
- t = <NULL_LITERAL>/*@bgen(jjtree)*/
- {
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtreeCloseNodeScope(jjtn000);
- }
- /*@egen*/
- {
- jjtn000.setNullValue();
- }
- |
- t = <REGULAR_EXPRESSION_LITERAL>/*@bgen(jjtree)*/
- {
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtreeCloseNodeScope(jjtn000);
- }
- /*@egen*/
- {
- jjtn000.setRegexValue(t.image);
- }
- }
- catch(ParseException pe) {
- addException(pe);
- }/*@bgen(jjtree)*/
- } finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- jjtreeCloseNodeScope(jjtn000);
- }
- }
- /*@egen*/
- }
-
-
- void Identifier() :
- {/*@bgen(jjtree) Identifier */
- ASTIdentifier jjtn000 = new ASTIdentifier(JJTIDENTIFIER);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtreeOpenNodeScope(jjtn000);
- /*@egen*/
- Token t;
- }
- {/*@bgen(jjtree) Identifier */
- try {
- /*@egen*/
- try {
- t=<IDENTIFIER_NAME>/*@bgen(jjtree)*/
- {
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtreeCloseNodeScope(jjtn000);
- }
- /*@egen*/
- {
- jjtn000.setName(t.image);
- }
- }
- catch(ParseException pe) {
- addException(pe);
- }/*@bgen(jjtree)*/
- } finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- jjtreeCloseNodeScope(jjtn000);
- }
- }
- /*@egen*/
- }
-
- /* Section 11.1.4: Array Initialiser */
-
- void ArrayLiteral() :
- {/*@bgen(jjtree) ArrayLiteral */
- ASTArrayLiteral jjtn000 = new ASTArrayLiteral(JJTARRAYLITERAL);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtreeOpenNodeScope(jjtn000);
- /*@egen*/}
- {/*@bgen(jjtree) ArrayLiteral */
- try {
- /*@egen*/
- try {
- "[" (
- LOOKAHEAD(2) ( Elision() )? "]"
- | LOOKAHEAD(ElementList() Elision()) ElementList() Elision() "]"
- | ( ElementList() )? "]"
- )
- }
- catch(ParseException pe) {
- addException(pe);
- }/*@bgen(jjtree)*/
- } catch (Throwable jjte000) {
- if (jjtc000) {
- jjtree.clearNodeScope(jjtn000);
- jjtc000 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte000 instanceof RuntimeException) {
- throw (RuntimeException)jjte000;
- }
- if (jjte000 instanceof ParseException) {
- throw (ParseException)jjte000;
- }
- throw (Error)jjte000;
- } finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- jjtreeCloseNodeScope(jjtn000);
- }
- }
- /*@egen*/
- }
-
- void ElementList() :
- {}
- {
- try {
- ( Elision() )? AssignmentExpression() ( LOOKAHEAD(Elision() AssignmentExpression()) Elision() AssignmentExpression())*
- }
- catch(ParseException pe) {
- addException(pe);
- }
- }
-
- void Elision() :
- {}
- {
- try {
- (",")+
- }
- catch(ParseException pe) {
- addException(pe);
- }
- }
-
- /* Section 11.1.5: Object Initialiser */
-
- void ObjectLiteral() :
- {/*@bgen(jjtree) ObjectLiteral */
- ASTObjectLiteral jjtn000 = new ASTObjectLiteral(JJTOBJECTLITERAL);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtreeOpenNodeScope(jjtn000);
- /*@egen*/}
- {/*@bgen(jjtree) ObjectLiteral */
- try {
- /*@egen*/
- try {
- "{" ( PropertyNameAndValueList() )? "}"
- }
- catch(ParseException pe) {
- addException(pe);
- }/*@bgen(jjtree)*/
- } catch (Throwable jjte000) {
- if (jjtc000) {
- jjtree.clearNodeScope(jjtn000);
- jjtc000 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte000 instanceof RuntimeException) {
- throw (RuntimeException)jjte000;
- }
- if (jjte000 instanceof ParseException) {
- throw (ParseException)jjte000;
- }
- throw (Error)jjte000;
- } finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- jjtreeCloseNodeScope(jjtn000);
- }
- }
- /*@egen*/
- }
-
- void PropertyNameAndValueList() :
- {}
- {
- try {
- PropertyNameAndValue() ( LOOKAHEAD( "," PropertyNameAndValue()) "," PropertyNameAndValue() | "," )*
- }
- catch(ParseException pe) {
- addException(pe);
- }
- }
-
- void PropertyNameAndValue() :
- {/*@bgen(jjtree) LiteralField */
- ASTLiteralField jjtn000 = new ASTLiteralField(JJTLITERALFIELD);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtreeOpenNodeScope(jjtn000);
- /*@egen*/}
- {/*@bgen(jjtree) LiteralField */
- try {
- /*@egen*/
- try {
- PropertyName() ":" (LOOKAHEAD("function") FunctionExpression() | AssignmentExpression())
- }
- catch(ParseException pe) {
- addException(pe);
- }/*@bgen(jjtree)*/
- } catch (Throwable jjte000) {
- if (jjtc000) {
- jjtree.clearNodeScope(jjtn000);
- jjtc000 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte000 instanceof RuntimeException) {
- throw (RuntimeException)jjte000;
- }
- if (jjte000 instanceof ParseException) {
- throw (ParseException)jjte000;
- }
- throw (Error)jjte000;
- } finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- jjtreeCloseNodeScope(jjtn000);
- }
- }
- /*@egen*/
- }
-
- void PropertyName() :
- {}
- {
- try {
- Identifier()
- |/*@bgen(jjtree) Literal */
- {
- ASTLiteral jjtn001 = new ASTLiteral(JJTLITERAL);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
- jjtreeOpenNodeScope(jjtn001);
- }
- try {
- /*@egen*/
- <STRING_LITERAL>/*@bgen(jjtree)*/
- } finally {
- if (jjtc001) {
- jjtree.closeNodeScope(jjtn001, true);
- jjtreeCloseNodeScope(jjtn001);
- }
- }
- /*@egen*/
- |/*@bgen(jjtree) Literal */
- {
- ASTLiteral jjtn002 = new ASTLiteral(JJTLITERAL);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
- jjtreeOpenNodeScope(jjtn002);
- }
- try {
- /*@egen*/
- <DECIMAL_LITERAL>/*@bgen(jjtree)*/
- } finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, true);
- jjtreeCloseNodeScope(jjtn002);
- }
- }
- /*@egen*/
- }
- catch(ParseException pe) {
- addException(pe);
- }
- }
-
-
- /* Section 11.2: Left-Hand-Side Expressions */
-
- void MemberExpression() :
- {}
- {
- try {/*@bgen(jjtree) #CompositeReference(> 1) */
- {
- ASTCompositeReference jjtn001 = new ASTCompositeReference(JJTCOMPOSITEREFERENCE);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
- jjtreeOpenNodeScope(jjtn001);
- }
- try {
- /*@egen*/
- ( (
- LOOKAHEAD("function") FunctionExpression()
- | PrimaryExpression()
- ) (LOOKAHEAD(2) MemberExpressionPart())* )/*@bgen(jjtree)*/
- } catch (Throwable jjte001) {
- if (jjtc001) {
- jjtree.clearNodeScope(jjtn001);
- jjtc001 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte001 instanceof RuntimeException) {
- throw (RuntimeException)jjte001;
- }
- if (jjte001 instanceof ParseException) {
- throw (ParseException)jjte001;
- …
Large files files are truncated, but you can click here to view the full file