home *** CD-ROM | disk | FTP | other *** search
- package com.netscape.javascript;
-
- import java.io.IOException;
-
- class Parser {
- private static final boolean implementsCatchCond = false;
- private int lastExprEndLine;
- // $FF: renamed from: nf com.netscape.javascript.IRFactory
- private IRFactory field_0;
- // $FF: renamed from: er com.netscape.javascript.ErrorReporter
- private ErrorReporter field_1;
- // $FF: renamed from: ok boolean
- private boolean field_2;
-
- private Object statementHelper(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- Object var3 = null;
- boolean var4 = false;
- boolean var6 = false;
- int var5 = var1.getToken();
- switch (var5) {
- case -1:
- this.reportError(var1, "msg.scanner.caught.error");
- case 1:
- case 88:
- var3 = this.field_0.createLeaf(131);
- var4 = true;
- break;
- case 5:
- Object var32 = null;
- int var42 = 0;
- var2.append('\u0005');
- if ((var1.flags & 8) == 0) {
- this.reportError(var1, "msg.bad.return");
- }
-
- var1.flags |= 512;
- var5 = var1.peekTokenSameLine();
- var1.flags &= -513;
- if (var5 != 0 && var5 != 1 && var5 != 88 && var5 != 92) {
- var42 = var1.getLineno();
- var32 = this.expr(var1, var2, false);
- if (var1.getLineno() == var42) {
- this.wellTerminated(var1, -1);
- }
-
- var1.flags |= 16;
- } else {
- var1.flags |= 32;
- }
-
- if ((var1.flags & 48) == 48) {
- this.reportError(var1, "msg.fn.retval");
- }
-
- var3 = this.field_0.createReturn(var32, var42);
- break;
- case 62:
- int var31 = var1.getLineno();
- var2.append('>');
- var3 = this.field_0.createThrow(this.expr(var1, var2, false), var31);
- if (var31 == var1.getLineno()) {
- this.wellTerminated(var1, -1);
- }
- break;
- case 75:
- int var30 = var1.getLineno();
- Object var48 = null;
- Object var52 = null;
- var4 = true;
- var2.append('K');
- var2.append('[');
- var2.append('\u0001');
- Object var41 = this.statement(var1, var2);
- var2.append('\\');
- var2.append('\u0001');
- var48 = this.field_0.createLeaf(132);
- int var53 = var1.peekToken();
- if (var53 == 124) {
- while(var1.matchToken(124)) {
- var2.append('|');
- this.mustMatchToken(var1, 93, "msg.no.paren.catch");
- var2.append(']');
- this.mustMatchToken(var1, 44, "msg.bad.catchcond");
- String var12 = var1.getString();
- var2.addString(44, var12);
- Object var13 = null;
- this.mustMatchToken(var1, 94, "msg.bad.catchcond");
- var2.append('^');
- this.mustMatchToken(var1, 91, "msg.no.brace.catchblock");
- var2.append('[');
- var2.append('\u0001');
- this.field_0.addChildToBack(var48, this.field_0.createCatch(var12, var13, this.statements(var1, var2), var1.getLineno()));
- var1.matchToken(92);
- var2.append('\\');
- var2.append('\u0001');
- }
- } else if (var53 != 125) {
- this.mustMatchToken(var1, 125, "msg.try.no.catchfinally");
- }
-
- if (var1.matchToken(125)) {
- var2.append('}');
- var2.append('[');
- var2.append('\u0001');
- var52 = this.statement(var1, var2);
- var2.append('\\');
- var2.append('\u0001');
- }
-
- var3 = this.field_0.createTryCatchFinally(var41, var48, var52, var30);
- break;
- case 91:
- var4 = true;
- var3 = this.statements(var1, var2);
- this.mustMatchToken(var1, 92, "msg.no.brace.block");
- break;
- case 112:
- var4 = true;
- var2.append('p');
- int var29 = var1.getLineno();
- Object var40 = this.condition(var1, var2);
- var2.append('[');
- var2.append('\u0001');
- Object var47 = this.statement(var1, var2);
- Object var51 = null;
- if (var1.matchToken(113)) {
- var2.append('\\');
- var2.append('q');
- var2.append('[');
- var2.append('\u0001');
- var51 = this.statement(var1, var2);
- }
-
- var2.append('\\');
- var2.append('\u0001');
- var3 = this.field_0.createIf(var40, var47, var51, var29);
- break;
- case 114:
- var4 = true;
- var2.append('r');
- var3 = this.field_0.createSwitch(var1.getLineno());
- Object var28 = null;
- this.mustMatchToken(var1, 93, "msg.no.paren.switch");
- var2.append(']');
- this.field_0.addChildToBack(var3, this.expr(var1, var2, false));
- this.mustMatchToken(var1, 94, "msg.no.paren.after.switch");
- var2.append('^');
- this.mustMatchToken(var1, 91, "msg.no.brace.switch");
- var2.append('[');
- var2.append('\u0001');
-
- while((var5 = var1.getToken()) != 92 && var5 != 0) {
- switch (var5) {
- case 115:
- var2.append('s');
- var28 = this.field_0.createUnary(115, this.expr(var1, var2, false));
- var2.append('b');
- var2.append('\u0001');
- break;
- case 116:
- var28 = this.field_0.createLeaf(116);
- var2.append('t');
- var2.append('b');
- var2.append('\u0001');
- break;
- default:
- this.reportError(var1, "msg.bad.switch");
- }
-
- this.mustMatchToken(var1, 98, "msg.no.colon.case");
- Object var39 = this.field_0.createLeaf(132);
-
- while((var5 = var1.peekToken()) != 92 && var5 != 115 && var5 != 116 && var5 != 0) {
- this.field_0.addChildToBack(var39, this.statement(var1, var2));
- }
-
- this.field_0.addChildToBack(var28, var39);
- this.field_0.addChildToBack(var3, var28);
- }
-
- var2.append('\\');
- var2.append('\u0001');
- break;
- case 117:
- var4 = true;
- var2.append('u');
- int var27 = var1.getLineno();
- Object var38 = this.condition(var1, var2);
- var2.append('[');
- var2.append('\u0001');
- Object var46 = this.statement(var1, var2);
- var2.append('\\');
- var2.append('\u0001');
- var3 = this.field_0.createWhile(var38, var46, var27);
- break;
- case 118:
- var2.append('v');
- var2.append('[');
- var2.append('\u0001');
- int var26 = var1.getLineno();
- Object var37 = this.statement(var1, var2);
- var2.append('\\');
- this.mustMatchToken(var1, 117, "msg.no.while.do");
- var2.append('u');
- Object var45 = this.condition(var1, var2);
- var3 = this.field_0.createDoWhile(var37, var45, var26);
- break;
- case 119:
- var4 = true;
- var2.append('w');
- int var25 = var1.getLineno();
- Object var10 = null;
- this.mustMatchToken(var1, 93, "msg.no.paren.for");
- var2.append(']');
- var5 = var1.peekToken();
- Object var36;
- if (var5 == 88) {
- var36 = this.field_0.createLeaf(131);
- } else if (var5 == 122) {
- var1.getToken();
- var36 = this.variables(var1, var2, true);
- } else {
- var36 = this.expr(var1, var2, true);
- }
-
- var5 = var1.peekToken();
- Object var44;
- if (var5 == 102 && var1.getOp() == 63) {
- var1.matchToken(102);
- var2.append('?');
- var44 = this.expr(var1, var2, false);
- } else {
- this.mustMatchToken(var1, 88, "msg.no.semi.for");
- var2.append('X');
- if (var1.peekToken() == 88) {
- var44 = this.field_0.createLeaf(131);
- } else {
- var44 = this.expr(var1, var2, false);
- }
-
- this.mustMatchToken(var1, 88, "msg.no.semi.for.cond");
- var2.append('X');
- if (var1.peekToken() == 94) {
- var10 = this.field_0.createLeaf(131);
- } else {
- var10 = this.expr(var1, var2, false);
- }
- }
-
- this.mustMatchToken(var1, 94, "msg.no.paren.for.ctrl");
- var2.append('^');
- var2.append('[');
- var2.append('\u0001');
- Object var11 = this.statement(var1, var2);
- var2.append('\\');
- var2.append('\u0001');
- if (var10 == null) {
- var3 = this.field_0.createForIn(var36, var44, var11, var25);
- } else {
- var3 = this.field_0.createFor(var36, var44, var10, var11, var25);
- }
- break;
- case 120:
- int var24 = var1.getLineno();
- var2.append('x');
- String var35 = this.matchLabel(var1);
- if (var35 != null) {
- var2.addString(44, var35);
- }
-
- var3 = this.field_0.createBreak(var35, var24);
- break;
- case 121:
- int var23 = var1.getLineno();
- var2.append('y');
- String var34 = this.matchLabel(var1);
- if (var34 != null) {
- var2.addString(44, var34);
- }
-
- var3 = this.field_0.createContinue(var34, var23);
- break;
- case 122:
- int var22 = var1.getLineno();
- var3 = this.variables(var1, var2, false);
- if (var1.getLineno() == var22) {
- this.wellTerminated(var1, -1);
- }
- break;
- case 123:
- var4 = true;
- var2.append('{');
- int var7 = var1.getLineno();
- this.mustMatchToken(var1, 93, "msg.no.paren.with");
- var2.append(']');
- Object var8 = this.expr(var1, var2, false);
- this.mustMatchToken(var1, 94, "msg.no.paren.after.with");
- var2.append('^');
- var2.append('[');
- var2.append('\u0001');
- Object var9 = this.statement(var1, var2);
- var2.append('\\');
- var2.append('\u0001');
- var3 = this.field_0.createWith(var8, var9, var7);
- break;
- default:
- int var33 = var1.getTokenno();
- var1.ungetToken(var5);
- int var43 = var1.getLineno();
- var3 = this.expr(var1, var2, false);
- if (var1.peekToken() == 98) {
- if (var5 != 44 || var1.getTokenno() != var33) {
- this.reportError(var1, "msg.bad.label");
- }
-
- var1.getToken();
- String var50 = var1.getString();
- var3 = this.field_0.createLabel(var50, var43);
- var2.append('b');
- var2.append('\u0001');
- return var3;
- }
-
- var3 = this.field_0.createExprStatement(var3, var43);
- if (var1.getLineno() == var43 || var5 == 109 && var1.getLineno() == this.lastExprEndLine) {
- this.wellTerminated(var1, var5);
- }
- }
-
- var1.matchToken(88);
- if (!var4) {
- var2.append('X');
- var2.append('\u0001');
- }
-
- return var3;
- }
-
- public Object parse(TokenStream var1) throws IOException {
- this.field_2 = true;
- Source var2 = new Source();
- int var4 = var1.getLineno();
- Object var5 = this.field_0.createLeaf(132);
-
- while(this.field_2) {
- var1.flags |= 512;
- int var3 = var1.getToken();
- var1.flags &= -513;
- if (var3 <= 0) {
- break;
- }
-
- if (var3 == 109) {
- try {
- this.field_0.addChildToBack(var5, this.function(var1, var2));
- var2.append('\u0001');
- this.wellTerminated(var1, 109);
- } catch (JavaScriptException var7) {
- this.field_2 = false;
- }
- } else {
- var1.ungetToken(var3);
- this.field_0.addChildToBack(var5, this.statement(var1, var2));
- }
- }
-
- if (!this.field_2) {
- return null;
- } else {
- Object var6 = this.field_0.createScript(var5, var1.getSourceName(), var4, var1.getLineno(), var2.buf.toString());
- return var6;
- }
- }
-
- private void mustMatchToken(TokenStream var1, int var2, String var3) throws IOException, JavaScriptException {
- int var4;
- if ((var4 = var1.getToken()) != var2) {
- this.reportError(var1, var3);
- var1.ungetToken(var4);
- }
-
- }
-
- private Object parseFunctionBody(TokenStream var1, Source var2) throws IOException {
- int var4 = var1.flags;
- var1.flags &= -49;
- var1.flags |= 8;
-
- Object var3;
- try {
- var3 = this.statements(var1, var2);
- } finally {
- var1.flags = var4;
- }
-
- return var3;
- }
-
- public Parser(IRFactory var1) {
- this.field_0 = var1;
- }
-
- private Object statement(TokenStream var1, Source var2) throws IOException {
- try {
- return this.statementHelper(var1, var2);
- } catch (JavaScriptException var5) {
- int var3 = var1.getLineno();
-
- int var4;
- do {
- var4 = var1.getToken();
- } while(var4 != 88 && var4 != 1 && var4 != 0 && var4 != -1);
-
- return this.field_0.createExprStatement(this.field_0.createName("error"), var3);
- }
- }
-
- private Object addExpr(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- int var3;
- Object var4;
- for(var4 = this.mulExpr(var1, var2); (var3 = var1.getToken()) == 23 || var3 == 24; var4 = this.field_0.createBinary(var3, var4, this.mulExpr(var1, var2))) {
- var2.append((char)var3);
- }
-
- var1.ungetToken(var3);
- return var4;
- }
-
- private Object function(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- String var3 = null;
- Object var4 = this.field_0.createLeaf(93);
- int var6 = var1.getLineno();
- var2.append('m');
- var2.append(var2.functionNumber);
- ++var2.functionNumber;
- var2 = new Source();
- var2.append('m');
- if (var1.matchToken(44)) {
- var3 = var1.getString();
- var2.addString(44, var3);
- }
-
- this.mustMatchToken(var1, 93, "msg.no.paren.parms");
- var2.append(']');
- if (!var1.matchToken(94)) {
- boolean var7 = true;
-
- do {
- if (!var7) {
- var2.append('_');
- }
-
- var7 = false;
- this.mustMatchToken(var1, 44, "msg.no.parm");
- String var8 = var1.getString();
- this.field_0.addChildToBack(var4, this.field_0.createName(var8));
- var2.addString(44, var8);
- } while(var1.matchToken(95));
-
- this.mustMatchToken(var1, 94, "msg.no.paren.after.parms");
- }
-
- var2.append('^');
- this.mustMatchToken(var1, 91, "msg.no.brace.body");
- var2.append('[');
- var2.append('\u0001');
- Object var5 = this.parseFunctionBody(var1, var2);
- this.mustMatchToken(var1, 92, "msg.no.brace.after.body");
- var2.append('\\');
- return this.field_0.createFunction(var3, var4, var5, var1.getSourceName(), var6, var1.getLineno(), var2.buf.toString());
- }
-
- private Object argumentList(TokenStream var1, Source var2, Object var3) throws IOException, JavaScriptException {
- var1.flags |= 512;
- boolean var4 = var1.matchToken(94);
- var1.flags &= -513;
- if (!var4) {
- boolean var5 = true;
-
- do {
- if (!var5) {
- var2.append('_');
- }
-
- var5 = false;
- this.field_0.addChildToBack(var3, this.assignExpr(var1, var2, false));
- } while(var1.matchToken(95));
-
- this.mustMatchToken(var1, 94, "msg.no.paren.arg");
- }
-
- var2.append('^');
- return var3;
- }
-
- private boolean wellTerminated(TokenStream var1, int var2) throws IOException, JavaScriptException {
- int var3 = var1.peekTokenSameLine();
- if (var3 == -1) {
- this.reportError(var1, "msg.scanner.caught.error");
- return false;
- } else {
- if (var3 != 0 && var3 != 1 && var3 != 88 && var3 != 92) {
- int var4 = Context.getContext().getLanguageVersion();
- if ((var3 == 109 || var2 == 109) && var4 < 120) {
- return true;
- }
-
- this.reportError(var1, "msg.no.semi.stmt");
- }
-
- return true;
- }
- }
-
- private void reportError(TokenStream var1, String var2) throws JavaScriptException {
- if (this.field_2) {
- this.field_2 = false;
- if ((var1.flags & 1) == 0) {
- String var3 = Context.getMessage(var2, (Object[])null);
- Context.reportError(var3, var1.getSourceName(), var1.getLineno(), var1.getLine(), var1.getOffset());
- }
- }
-
- throw new JavaScriptException(var2);
- }
-
- private Object bitOrExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4;
- for(var4 = this.bitXorExpr(var1, var2, var3); var1.matchToken(11); var4 = this.field_0.createBinary(11, var4, this.bitXorExpr(var1, var2, var3))) {
- var2.append('\u000b');
- }
-
- return var4;
- }
-
- private Object eqExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4;
- for(var4 = this.relExpr(var1, var2, var3); var1.matchToken(101); var4 = this.field_0.createBinary(101, var1.getOp(), var4, this.relExpr(var1, var2, var3))) {
- var2.append('e');
- var2.append((char)var1.getOp());
- }
-
- return var4;
- }
-
- private Object relExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4;
- int var5;
- for(var4 = this.shiftExpr(var1, var2); var1.matchToken(102); var4 = this.field_0.createBinary(102, var5, var4, this.shiftExpr(var1, var2))) {
- var5 = var1.getOp();
- if (var3 && var5 == 63) {
- var1.ungetToken(102);
- break;
- }
-
- var2.append('f');
- var2.append((char)var5);
- }
-
- return var4;
- }
-
- private Object shiftExpr(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- Object var3;
- for(var3 = this.addExpr(var1, var2); var1.matchToken(103); var3 = this.field_0.createBinary(var1.getOp(), var3, this.addExpr(var1, var2))) {
- var2.append('g');
- var2.append((char)var1.getOp());
- }
-
- return var3;
- }
-
- private Object unaryExpr(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- var1.flags |= 512;
- int var3 = var1.getToken();
- var1.flags &= -513;
- switch (var3) {
- case -1:
- this.reportError(var1, "msg.scanner.caught.error");
- return this.field_0.createName("err");
- case 23:
- case 24:
- var2.append('h');
- var2.append((char)var3);
- return this.field_0.createUnary(104, var3, this.unaryExpr(var1, var2));
- case 31:
- var2.append('\u001f');
- return this.field_0.createUnary(31, this.unaryExpr(var1, var2));
- case 104:
- var2.append('h');
- var2.append((char)var1.getOp());
- return this.field_0.createUnary(104, var1.getOp(), this.unaryExpr(var1, var2));
- case 105:
- case 106:
- var2.append((char)var3);
- return this.field_0.createUnary(var3, 129, this.memberExpr(var1, var2, true));
- default:
- var1.ungetToken(var3);
- int var4 = var1.getLineno();
- Object var5 = this.memberExpr(var1, var2, true);
- int var6;
- if (((var6 = var1.peekToken()) == 105 || var6 == 106) && var1.getLineno() == var4) {
- int var7 = var1.getToken();
- var2.append((char)var7);
- return this.field_0.createUnary(var7, 130, var5);
- } else {
- return var5;
- }
- }
- }
-
- private Object memberExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- var1.flags |= 512;
- int var4 = var1.peekToken();
- var1.flags &= -513;
- Object var5;
- if (var4 == 30) {
- var1.getToken();
- var2.append('\u001e');
- var5 = this.field_0.createLeaf(30);
- this.field_0.addChildToBack(var5, this.memberExpr(var1, var2, false));
- if (var1.matchToken(93)) {
- var2.append(']');
- var5 = this.argumentList(var1, var2, var5);
- }
- } else {
- var5 = this.primaryExpr(var1, var2);
- }
-
- this.lastExprEndLine = var1.getLineno();
-
- while((var4 = var1.getToken()) > 0) {
- if (var4 == 107) {
- var2.append('k');
- this.mustMatchToken(var1, 44, "msg.no.name.after.dot");
- String var6 = var1.getString();
- var2.addString(44, var6);
- var5 = this.field_0.createBinary(107, var5, this.field_0.createName(var1.getString()));
- this.lastExprEndLine = var1.getLineno();
- } else if (var4 == 89) {
- var2.append('Y');
- var5 = this.field_0.createBinary(89, var5, this.expr(var1, var2, false));
- this.mustMatchToken(var1, 90, "msg.no.bracket.index");
- var2.append('Z');
- this.lastExprEndLine = var1.getLineno();
- } else {
- if (!var3 || var4 != 93) {
- var1.ungetToken(var4);
- break;
- }
-
- var5 = this.field_0.createUnary(43, var5);
- var2.append(']');
- var5 = this.argumentList(var1, var2, var5);
- this.lastExprEndLine = var1.getLineno();
- }
- }
-
- if (var4 == -1) {
- this.reportError(var1, "msg.scanner.caught.error");
- }
-
- return var5;
- }
-
- private Object statements(TokenStream var1, Source var2) throws IOException {
- Object var3 = this.field_0.createBlock(var1.getLineno());
-
- int var4;
- while((var4 = var1.peekToken()) > 0 && var4 != 92) {
- this.field_0.addChildToBack(var3, this.statement(var1, var2));
- }
-
- return var3;
- }
-
- private Object condition(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- this.mustMatchToken(var1, 93, "msg.no.paren.cond");
- var2.append(']');
- Object var3 = this.expr(var1, var2, false);
- this.mustMatchToken(var1, 94, "msg.no.paren.after.cond");
- var2.append('^');
- return var3;
- }
-
- private Object variables(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4 = this.field_0.createVariables(var1.getLineno());
- boolean var5 = true;
- var2.append('z');
-
- do {
- this.mustMatchToken(var1, 44, "msg.bad.var");
- String var8 = var1.getString();
- if (!var5) {
- var2.append('_');
- }
-
- var5 = false;
- var2.addString(44, var8);
- Object var6 = this.field_0.createName(var8);
- if (var1.matchToken(96)) {
- if (var1.getOp() != 127) {
- this.reportError(var1, "msg.bad.var.init");
- }
-
- var2.append('`');
- var2.append('\u007f');
- Object var7 = this.assignExpr(var1, var2, var3);
- this.field_0.addChildToBack(var6, var7);
- }
-
- this.field_0.addChildToBack(var4, var6);
- } while(var1.matchToken(95));
-
- return var4;
- }
-
- private Object expr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4;
- for(var4 = this.assignExpr(var1, var2, var3); var1.matchToken(95); var4 = this.field_0.createBinary(95, var4, this.assignExpr(var1, var2, var3))) {
- var2.append('_');
- }
-
- return var4;
- }
-
- private Object condExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var6 = this.orExpr(var1, var2, var3);
- if (var1.matchToken(97)) {
- var2.append('a');
- Object var4 = this.assignExpr(var1, var2, false);
- this.mustMatchToken(var1, 98, "msg.no.colon.cond");
- var2.append('b');
- Object var5 = this.assignExpr(var1, var2, var3);
- return this.field_0.createTernary(var6, var4, var5);
- } else {
- return var6;
- }
- }
-
- private Object bitXorExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4;
- for(var4 = this.bitAndExpr(var1, var2, var3); var1.matchToken(12); var4 = this.field_0.createBinary(12, var4, this.bitAndExpr(var1, var2, var3))) {
- var2.append('\f');
- }
-
- return var4;
- }
-
- private Object bitAndExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4;
- for(var4 = this.eqExpr(var1, var2, var3); var1.matchToken(13); var4 = this.field_0.createBinary(13, var4, this.eqExpr(var1, var2, var3))) {
- var2.append('\r');
- }
-
- return var4;
- }
-
- private Object primaryExpr(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- var1.flags |= 512;
- int var3 = var1.getToken();
- var1.flags &= -513;
- switch (var3) {
- case -1:
- this.reportError(var1, "msg.scanner.caught.error");
- break;
- case 44:
- String var15 = var1.getString();
- var2.addString(44, var15);
- return this.field_0.createName(var15);
- case 45:
- Number var17 = var1.getNumber();
- var2.addNumber(var17);
- return this.field_0.createNumber(var17);
- case 46:
- String var18 = var1.getString();
- var2.addString(46, var18);
- return this.field_0.createString(var18);
- case 56:
- String var19 = var1.regExpFlags;
- var1.regExpFlags = null;
- String var9 = var1.getString();
- var2.addString(56, '/' + var9 + '/' + var19);
- return this.field_0.createRegExp(var9, var19);
- case 89:
- var2.append('Y');
- Object var13 = this.field_0.createLeaf(133);
- var1.flags |= 512;
- boolean var14 = var1.matchToken(90);
- var1.flags &= -513;
- if (!var14) {
- boolean var16 = true;
-
- do {
- var1.flags |= 512;
- var3 = var1.peekToken();
- var1.flags &= -513;
- if (!var16) {
- var2.append('_');
- } else {
- var16 = false;
- }
-
- if (var3 == 90) {
- break;
- }
-
- if (var3 == 95) {
- this.field_0.addChildToBack(var13, this.field_0.createLeaf(108, 74));
- } else {
- this.field_0.addChildToBack(var13, this.assignExpr(var1, var2, false));
- }
- } while(var1.matchToken(95));
-
- this.mustMatchToken(var1, 90, "msg.no.bracket.arg");
- }
-
- var2.append('Z');
- return this.field_0.createArrayLiteral(var13);
- case 91:
- Object var12 = this.field_0.createLeaf(134);
- var2.append('[');
- if (!var1.matchToken(92)) {
- boolean var5 = true;
-
- label49:
- do {
- if (!var5) {
- var2.append('_');
- } else {
- var5 = false;
- }
-
- var3 = var1.getToken();
- Object var6;
- switch (var3) {
- case 44:
- case 46:
- String var7 = var1.getString();
- var2.addString(44, var7);
- var6 = this.field_0.createString(var1.getString());
- break;
- case 45:
- Number var8 = var1.getNumber();
- var2.addNumber(var8);
- var6 = this.field_0.createNumber(var8);
- break;
- case 92:
- var1.ungetToken(var3);
- break label49;
- default:
- this.reportError(var1, "msg.bad.prop");
- break label49;
- }
-
- this.mustMatchToken(var1, 98, "msg.no.colon.prop");
- var2.append('\u0086');
- this.field_0.addChildToBack(var12, var6);
- this.field_0.addChildToBack(var12, this.assignExpr(var1, var2, false));
- } while(var1.matchToken(95));
-
- this.mustMatchToken(var1, 92, "msg.no.brace.prop");
- }
-
- var2.append('\\');
- return this.field_0.createObjectLiteral(var12);
- case 93:
- var2.append(']');
- Object var4 = this.expr(var1, var2, false);
- var2.append('^');
- this.mustMatchToken(var1, 94, "msg.no.paren");
- return var4;
- case 108:
- var2.append('l');
- var2.append((char)var1.getOp());
- return this.field_0.createLeaf(108, var1.getOp());
- case 109:
- return this.function(var1, var2);
- case 126:
- this.reportError(var1, "msg.reserved.id");
- break;
- default:
- this.reportError(var1, "msg.syntax");
- }
-
- return null;
- }
-
- private String matchLabel(TokenStream var1) throws IOException, JavaScriptException {
- int var2 = var1.getLineno();
- String var3 = null;
- int var4 = var1.peekTokenSameLine();
- if (var4 == 44) {
- var1.getToken();
- var3 = var1.getString();
- }
-
- if (var2 == var1.getLineno()) {
- this.wellTerminated(var1, -1);
- }
-
- return var3;
- }
-
- private Object assignExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4 = this.condExpr(var1, var2, var3);
- if (var1.matchToken(96)) {
- var2.append('`');
- var2.append((char)var1.getOp());
- var4 = this.field_0.createBinary(96, var1.getOp(), var4, this.assignExpr(var1, var2, var3));
- }
-
- return var4;
- }
-
- private Object orExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4 = this.andExpr(var1, var2, var3);
- if (var1.matchToken(99)) {
- var2.append('c');
- var4 = this.field_0.createBinary(99, var4, this.orExpr(var1, var2, var3));
- }
-
- return var4;
- }
-
- private Object andExpr(TokenStream var1, Source var2, boolean var3) throws IOException, JavaScriptException {
- Object var4 = this.bitOrExpr(var1, var2, var3);
- if (var1.matchToken(100)) {
- var2.append('d');
- var4 = this.field_0.createBinary(100, var4, this.andExpr(var1, var2, var3));
- }
-
- return var4;
- }
-
- private Object mulExpr(TokenStream var1, Source var2) throws IOException, JavaScriptException {
- int var3;
- Object var4;
- for(var4 = this.unaryExpr(var1, var2); (var3 = var1.peekToken()) == 25 || var3 == 26 || var3 == 27; var4 = this.field_0.createBinary(var3, var4, this.unaryExpr(var1, var2))) {
- var3 = var1.getToken();
- var2.append((char)var3);
- }
-
- return var4;
- }
- }
-