return new IfNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); case ASTNode.BLOCK_FOR: for (int i = condStart; i < condEnd; i++) { if (expr[i] == ';') return new ForNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); else if (expr[i] == ':') break; return new ForEachNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); case ASTNode.BLOCK_WHILE: return new WhileNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); case ASTNode.BLOCK_UNTIL: return new UntilNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); case ASTNode.BLOCK_DO: return new DoNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); case ASTNode.BLOCK_DO_UNTIL: return new DoUntilNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), pCtx); default: return new WithNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx);
splitAccumulator.add(new TypedVarNode(subArray(start, cursor), fields | ASTNode.ASSIGN, (Class) lastNode.getLiteralValue(), pCtx)); splitAccumulator.add(new ProtoVarNode(subArray(start, cursor), fields | ASTNode.ASSIGN, (Proto) lastNode, pCtx)); splitAccumulator.add(new TypedVarNode(subArray(start, cursor), fields | ASTNode.ASSIGN, (Class) stk.pop(), pCtx)); splitAccumulator.add(new ProtoVarNode(subArray(start, cursor), fields | ASTNode.ASSIGN, (Proto) stk.pop(), pCtx));
TypeDescriptor descr = new TypeDescriptor(subArray(start, cursor), fields); start = cursor = trimRight(cursor); captureToEOS(); return lastNode = new AssertNode(subArray(start, cursor--), fields, pCtx); return lastNode = new ReturnNode(subArray(start, cursor), fields, pCtx); start = cursor = trimRight(cursor); captureToNextTokenJunction(); return lastNode = new IsDef(subArray(start, cursor)); ImportNode importNode = new ImportNode(subArray(start, cursor)); start = cursor = trimRight(cursor); captureToEOS(); return lastNode = new StaticImportNode(subArray(start, cursor)); name = new String(subArray(start, end)); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { splitAccumulator.add(lastNode = new IndexedDeclTypedVarNode(idx, Object.class)); switch (lookAhead()) { case '+': name = new String(subArray(start, trimLeft(cursor))); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { lastNode = new IndexedPostFixIncNode(idx); return lastNode = new DeepAssignmentNode(subArray(start, cursor), fields,
return ifNode.setElseBlock(subArray(trimRight(blockStart + 1), trimLeft(blockEnd - 1)));
switch (lookAhead()) { case '+': name = new String(subArray(st, trimLeft(cursor))); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { lastNode = new IndexedPostFixIncNode(idx, pCtx); switch (lookAhead()) { case '-': name = new String(subArray(st, trimLeft(cursor))); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { lastNode = new IndexedPostFixDecNode(idx, pCtx); captureIdentifier(); name = new String(subArray(st, cursor)); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { return lastNode = new IndexedPreFixDecNode(idx, pCtx); captureIdentifier(); name = new String(subArray(st, cursor)); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { return lastNode = new IndexedPreFixIncNode(idx, pCtx);
switch (lookAhead()) { case '+': name = new String(subArray(st, trimLeft(cursor))); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { lastNode = new IndexedPostFixIncNode(idx, pCtx); switch (lookAhead()) { case '-': name = new String(subArray(st, trimLeft(cursor))); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { lastNode = new IndexedPostFixDecNode(idx, pCtx); captureIdentifier(); name = new String(subArray(st, cursor)); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { return lastNode = new IndexedPreFixDecNode(idx, pCtx); captureIdentifier(); name = new String(subArray(st, cursor)); if (pCtx != null && (idx = pCtx.variableIndexOf(name)) != -1) { return lastNode = new IndexedPreFixIncNode(idx, pCtx);