[jruby-joni] 139/194: CallNode target is always an enclose
Hideki Yamane
henrich at moszumanska.debian.org
Thu Feb 1 12:04:35 UTC 2018
This is an automated email from the git hooks/post-receive script.
henrich pushed a commit to branch debian/sid
in repository jruby-joni.
commit 59679c697ef2fe7346080cd47f95e94ce1c2f47f
Author: Marcin Mielzynski <lopx at gazeta.pl>
Date: Wed Jan 10 22:32:16 2018 +0100
CallNode target is always an enclose
---
src/org/joni/Analyser.java | 10 +++++-----
src/org/joni/Parser.java | 6 +++---
src/org/joni/ScanEnvironment.java | 9 +++++----
src/org/joni/UnsetAddrList.java | 18 +++++++-----------
src/org/joni/ast/CallNode.java | 6 +++---
5 files changed, 23 insertions(+), 26 deletions(-)
diff --git a/src/org/joni/Analyser.java b/src/org/joni/Analyser.java
index 0d50347..5715e14 100644
--- a/src/org/joni/Analyser.java
+++ b/src/org/joni/Analyser.java
@@ -258,7 +258,7 @@ final class Analyser extends Parser {
if (en.type == EncloseType.CONDITION) {
en.regNum = map[en.regNum];
}
- renumberByMap(((EncloseNode)node).target, map);
+ renumberByMap(en.target, map);
break;
case NodeType.BREF:
@@ -433,7 +433,7 @@ final class Analyser extends Parser {
if (Config.USE_SUBEXP_CALL) {
CallNode cn = (CallNode)node;
if (cn.isRecursion()) {
- EncloseNode en = (EncloseNode)cn.target;
+ EncloseNode en = cn.target;
if (en.isMinFixed()) min = en.minLength;
} else {
min = getMinMatchLength(cn.target);
@@ -1272,7 +1272,7 @@ final class Analyser extends Parser {
cn.target = env.memNodes[cn.groupNum]; // no setTarget in call nodes!
if (cn.target == null) newValueException(ERR_UNDEFINED_NAME_REFERENCE, cn.nameP, cn.nameEnd);
- ((EncloseNode)cn.target).setCalled();
+ cn.target.setCalled();
env.btMemStart = BitStatus.bsOnAt(env.btMemStart, cn.groupNum);
cn.unsetAddrList = env.unsetAddrList;
}
@@ -1858,7 +1858,7 @@ final class Analyser extends Parser {
env.btMemEnd = bsOnAt(env.btMemEnd, br.back[i]);
}
} // USE_BACKREF_AT_LEVEL
- ((EncloseNode)env.memNodes[br.back[i]]).setMemBackrefed();
+ env.memNodes[br.back[i]].setMemBackrefed();
}
}
break;
@@ -2197,7 +2197,7 @@ final class Analyser extends Parser {
opt.length.set(0, MinMaxLen.INFINITE_DISTANCE);
} else {
int safe = oenv.options;
- oenv.options = ((EncloseNode)cn.target).option;
+ oenv.options = cn.target.option;
optimizeNodeLeft(cn.target, opt, oenv);
oenv.options = safe;
}
diff --git a/src/org/joni/Parser.java b/src/org/joni/Parser.java
index 6163b09..1bcf6f8 100644
--- a/src/org/joni/Parser.java
+++ b/src/org/joni/Parser.java
@@ -709,7 +709,7 @@ class Parser extends Lexer {
en.containingAnchor = env.currentPrecReadNotNode();
}
/* Don't move this to previous of parse_subexp() */
- env.setMemNode(en.regNum, node);
+ env.setMemNode(en.regNum, en);
} else if (en.type == EncloseType.CONDITION) {
if (target.getType() != NodeType.ALT) { /* convert (?(cond)yes) to (?(cond)yes|empty) */
en.setTarget(ConsAltNode.newAltNode(target, ConsAltNode.newAltNode(StringNode.EMPTY, null)));
@@ -1500,7 +1500,7 @@ class Parser extends Lexer {
private Node parseBackref() {
final Node node;
if (syntax.op3OptionECMAScript() && token.getBackrefNum() == 1 && env.memNodes != null) {
- EncloseNode encloseNode = (EncloseNode) env.memNodes[token.getBackrefRef1()];
+ EncloseNode encloseNode = env.memNodes[token.getBackrefRef1()];
boolean shouldIgnore = false;
if (encloseNode != null && encloseNode.containingAnchor != null) {
shouldIgnore = true;
@@ -1612,7 +1612,7 @@ class Parser extends Lexer {
EncloseNode np = EncloseNode.newMemory(env.option, false);
np.regNum = 0;
np.setTarget(top);
- if (env.memNodes == null) env.memNodes = new Node[Config.SCANENV_MEMNODES_SIZE];
+ if (env.memNodes == null) env.memNodes = new EncloseNode[Config.SCANENV_MEMNODES_SIZE];
env.memNodes[0] = np;
top = np;
}
diff --git a/src/org/joni/ScanEnvironment.java b/src/org/joni/ScanEnvironment.java
index 8c384a6..6262e8a 100644
--- a/src/org/joni/ScanEnvironment.java
+++ b/src/org/joni/ScanEnvironment.java
@@ -20,6 +20,7 @@
package org.joni;
import org.jcodings.Encoding;
+import org.joni.ast.EncloseNode;
import org.joni.ast.Node;
import org.joni.exception.ErrorMessages;
import org.joni.exception.InternalException;
@@ -42,7 +43,7 @@ public final class ScanEnvironment {
int numNamed; // USE_NAMED_GROUP
- public Node memNodes[];
+ public EncloseNode memNodes[];
// USE_COMBINATION_EXPLOSION_CHECK
int numCombExpCheck;
@@ -64,9 +65,9 @@ public final class ScanEnvironment {
public int addMemEntry() {
if (numMem >= Config.MAX_CAPTURE_GROUP_NUM) throw new InternalException(ErrorMessages.ERR_TOO_MANY_CAPTURE_GROUPS);
if (numMem++ == 0) {
- memNodes = new Node[Config.SCANENV_MEMNODES_SIZE];
+ memNodes = new EncloseNode[Config.SCANENV_MEMNODES_SIZE];
} else if (numMem >= memNodes.length) {
- Node[]tmp = new Node[memNodes.length << 1];
+ EncloseNode[]tmp = new EncloseNode[memNodes.length << 1];
System.arraycopy(memNodes, 0, tmp, 0, memNodes.length);
memNodes = tmp;
}
@@ -74,7 +75,7 @@ public final class ScanEnvironment {
return numMem;
}
- public void setMemNode(int num, Node node) {
+ public void setMemNode(int num, EncloseNode node) {
if (numMem >= num) {
memNodes[num] = node;
} else {
diff --git a/src/org/joni/UnsetAddrList.java b/src/org/joni/UnsetAddrList.java
index 34e472d..84c9acc 100644
--- a/src/org/joni/UnsetAddrList.java
+++ b/src/org/joni/UnsetAddrList.java
@@ -20,23 +20,22 @@
package org.joni;
import org.joni.ast.EncloseNode;
-import org.joni.ast.Node;
import org.joni.exception.ErrorMessages;
import org.joni.exception.InternalException;
public final class UnsetAddrList {
- int num;
- Node[]targets;
+ EncloseNode[]targets;
int[]offsets;
+ int num;
public UnsetAddrList(int size) {
- targets = new Node[size];
+ targets = new EncloseNode[size];
offsets = new int[size];
}
- public void add(int offset, Node node) {
+ public void add(int offset, EncloseNode node) {
if (num >= offsets.length) {
- Node []ttmp = new Node[targets.length << 1];
+ EncloseNode []ttmp = new EncloseNode[targets.length << 1];
System.arraycopy(targets, 0, ttmp, 0, num);
targets = ttmp;
int[]otmp = new int[offsets.length << 1];
@@ -45,13 +44,12 @@ public final class UnsetAddrList {
}
targets[num] = node;
offsets[num] = offset;
-
num++;
}
public void fix(Regex regex) {
for (int i=0; i<num; i++) {
- EncloseNode en = (EncloseNode)targets[i];
+ EncloseNode en = targets[i];
if (!en.isAddrFixed()) new InternalException(ErrorMessages.ERR_PARSER_BUG);
regex.code[offsets[i]] = en.callAddr; // is this safe ?
}
@@ -60,9 +58,7 @@ public final class UnsetAddrList {
public String toString() {
StringBuilder value = new StringBuilder();
if (num > 0) {
- for (int i=0; i<num; i++) {
- value.append("offset + " + offsets[i] + " target: " + targets[i].getAddressName());
- }
+ for (int i = 0; i < num; i++) value.append("offset + " + offsets[i] + " target: " + targets[i].getAddressName());
}
return value.toString();
}
diff --git a/src/org/joni/ast/CallNode.java b/src/org/joni/ast/CallNode.java
index 19ffc80..ff450f0 100644
--- a/src/org/joni/ast/CallNode.java
+++ b/src/org/joni/ast/CallNode.java
@@ -30,7 +30,7 @@ public final class CallNode extends StateNode {
public final int nameEnd;
public int groupNum;
- public Node target; // is it an EncloseNode always ?
+ public EncloseNode target;
public UnsetAddrList unsetAddrList;
public CallNode(byte[]name, int nameP, int nameEnd, int gnum) {
@@ -43,7 +43,7 @@ public final class CallNode extends StateNode {
@Override
protected void setChild(Node newChild) {
- target = newChild;
+ target = (EncloseNode)newChild;
}
@Override
@@ -51,7 +51,7 @@ public final class CallNode extends StateNode {
return target;
}
- public void setTarget(Node tgt) {
+ public void setTarget(EncloseNode tgt) {
target = tgt;
tgt.parent = this;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git
More information about the pkg-java-commits
mailing list