home *** CD-ROM | disk | FTP | other *** search
- package netrexx.lang;
-
- public final class RexxParse {
- public static final char EOP = '\u0000';
- public static final char EOS = '\u0001';
- public static final char STRING = '\u0002';
- public static final char ABS = '\u0003';
- public static final char PLUS = '\u0004';
- public static final char MINUS = '\u0005';
- public static final char VAR = '\u0006';
- public static final char VARABS = '\u0007';
- public static final char VARPLUS = '\b';
- public static final char VARMINUS = '\t';
- public static final char VARLIST = '\n';
- public static final int MinCol = 0;
- public static final int MaxCol = 999999999;
- // $FF: renamed from: $0 java.lang.String
- private static final String field_0 = "RexxParse.nrx";
-
- public static void parse(Rexx var0, char[] var1, Rexx[] var2) {
- int var6 = 0;
- Object var10 = null;
- int var11 = 0;
- boolean var12 = false;
- int var13 = 0;
- char var14 = '\u0000';
- boolean var15 = false;
- int var16 = 0;
- int var17 = 0;
- int var18 = 0;
- Object var19 = null;
- char[] var3 = var0.toCharArray();
- int var4 = 0;
- int var5 = 0;
- int var7 = 0;
- int var8 = 0;
- char var9 = var1[0];
-
- while(true) {
- var6 = var4;
- if (var9 == 0) {
- return;
- }
-
- if (var9 == 1) {
- var7 = var3.length;
- var5 = var7;
- var4 = var7;
- ++var8;
- } else if (var9 == 2 | var9 == 6) {
- char[] var25;
- if (var9 == 6) {
- var25 = var2[var1[var8 + 1]].toCharArray();
- var11 = var25.length;
- var8 += 2;
- } else {
- var11 = var1[var8 + 1];
- var25 = new char[var11];
- var8 += 2;
- int var38 = var11 - 1;
-
- for(int var28 = 0; var28 <= var38; ++var28) {
- var25[var28] = var1[var8];
- ++var8;
- }
- }
-
- var5 = RexxWords.pos(var25, var3, var4 + 1) - 1;
- if (var5 < 0) {
- var7 = var3.length;
- var5 = var7;
- var4 = var7;
- } else {
- var7 = var5;
- var4 = var5 + var11;
- }
- } else if (var9 == 7 | var9 == '\b' | var9 == '\t') {
- var13 = var2[var1[var8 + 1]].toint();
- if (var13 < 0 | var13 > 999999999) {
- throw new BadColumnException(Rexx.toString(var2[var1[var8 + 1]]));
- }
-
- var8 += 2;
- if (var9 == 7) {
- var5 = var13 - 1;
- } else if (var9 == '\b') {
- var6 = var5;
- var5 += var13;
- } else {
- if (var9 != '\t') {
- throw new NoOtherwiseException();
- }
-
- var6 = var5;
- var5 -= var13;
- }
-
- if (var5 < 0) {
- var5 = 0;
- }
-
- var7 = var5;
- var4 = var5;
- if (var5 <= var6) {
- var7 = var3.length;
- }
- } else {
- var13 = 0;
- ++var8;
- char var20 = var1[var8];
-
- for(int var27 = 1; var27 <= var20; ++var27) {
- ++var8;
- var13 = var13 * 256 + var1[var8];
- }
-
- ++var8;
- if (var9 == 3) {
- var5 = var13 - 1;
- } else if (var9 == 4) {
- var6 = var5;
- var5 += var13;
- } else {
- if (var9 != 5) {
- throw new NoOtherwiseException();
- }
-
- var6 = var5;
- var5 -= var13;
- }
-
- if (var5 < 0) {
- var5 = 0;
- }
-
- var7 = var5;
- var4 = var5;
- if (var5 <= var6) {
- var7 = var3.length;
- }
- }
-
- if (var6 > var3.length) {
- var6 = var3.length;
- }
-
- if (var7 > var3.length) {
- var7 = var3.length;
- }
-
- var9 = var1[var8];
- if (var9 == '\n') {
- var14 = var1[var8 + 1];
- var8 += 2;
- char var39 = var14;
-
- for(int var33 = 1; var33 <= var39; ++var33) {
- if (var33 == var14) {
- var16 = var6;
- var17 = var7;
- var6 = var7;
- } else {
- for(var16 = var6; var16 < var7 && var3[var16] == ' '; ++var16) {
- }
-
- for(var17 = var16; var17 < var7 && var3[var17] != ' '; ++var17) {
- }
-
- if (var17 < var7) {
- var6 = var17 + 1;
- } else {
- var6 = var17;
- }
- }
-
- var18 = var17 - var16;
- char[] var37 = new char[var18];
- int var21 = var18 - 1;
-
- for(int var29 = 0; var29 <= var21; ++var29) {
- var37[var29] = var3[var16 + var29];
- }
-
- var2[var1[var8]] = new Rexx(var37);
- ++var8;
- }
-
- var9 = var1[var8];
- }
- }
- }
-
- private RexxParse() {
- }
- }
-