[jruby-joni] 60/194: move isInvalidQuantifier to Parser
Hideki Yamane
henrich at moszumanska.debian.org
Thu Feb 1 12:04:27 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 2838d87437ae440301c3ec9cc352f059f444eb83
Author: Marcin Mielzynski <lopx at gazeta.pl>
Date: Sat Dec 30 13:46:52 2017 +0100
move isInvalidQuantifier to Parser
---
src/org/joni/Parser.java | 37 +++++++++++++++++++++++++++++++++++--
src/org/joni/ast/Node.java | 36 ------------------------------------
2 files changed, 35 insertions(+), 38 deletions(-)
diff --git a/src/org/joni/Parser.java b/src/org/joni/Parser.java
index dab14c1..ea36575 100644
--- a/src/org/joni/Parser.java
+++ b/src/org/joni/Parser.java
@@ -1337,7 +1337,7 @@ class Parser extends Lexer {
private Node parseExpRepeat(Node target, boolean group) {
while (token.type == TokenType.OP_REPEAT || token.type == TokenType.INTERVAL) { // repeat:
- if (target.isInvalidQuantifier()) newSyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_INVALID);
+ if (isInvalidQuantifier(target)) newSyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_INVALID);
if (!group && syntax.op2OptionECMAScript() && target.getType() == NodeType.QTFR) {
newSyntaxException(ERR_NESTED_REPEAT_NOT_ALLOWED);
@@ -1372,7 +1372,7 @@ class Parser extends Lexer {
private Node parseExpRepeatForCar(Node top, ConsAltNode target, boolean group) {
while (token.type == TokenType.OP_REPEAT || token.type == TokenType.INTERVAL) { // repeat:
- if (target.car.isInvalidQuantifier()) newSyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_INVALID);
+ if (isInvalidQuantifier(target.car)) newSyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_INVALID);
QuantifierNode qtfr = new QuantifierNode(token.getRepeatLower(),
token.getRepeatUpper(),
@@ -1398,6 +1398,39 @@ class Parser extends Lexer {
return top;
}
+ private boolean isInvalidQuantifier(Node node) {
+ if (Config.USE_NO_INVALID_QUANTIFIER) return false;
+
+ ConsAltNode consAlt;
+ switch(node.getType()) {
+ case NodeType.ANCHOR:
+ return true;
+
+ case NodeType.ENCLOSE:
+ /* allow enclosed elements */
+ /* return is_invalid_quantifier_target(NENCLOSE(node)->target); */
+ break;
+
+ case NodeType.LIST:
+ consAlt = (ConsAltNode)node;
+ do {
+ if (!isInvalidQuantifier(consAlt.car)) return false;
+ } while ((consAlt = consAlt.cdr) != null);
+ return false;
+
+ case NodeType.ALT:
+ consAlt = (ConsAltNode)node;
+ do {
+ if (isInvalidQuantifier(consAlt.car)) return true;
+ } while ((consAlt = consAlt.cdr) != null);
+ break;
+
+ default:
+ break;
+ }
+ return false;
+ }
+
private Node parseCodePoint() {
byte[]buf = new byte[Config.ENC_CODE_TO_MBC_MAXLEN];
int num = enc.codeToMbc(token.getCode(), buf, 0);
diff --git a/src/org/joni/ast/Node.java b/src/org/joni/ast/Node.java
index 824e651..96890f8 100644
--- a/src/org/joni/ast/Node.java
+++ b/src/org/joni/ast/Node.java
@@ -89,42 +89,6 @@ public abstract class Node implements NodeType {
return value.toString().replace("\n", "\n" + pad);
}
- public final boolean isInvalidQuantifier() {
- if (Config.USE_NO_INVALID_QUANTIFIER) return false;
-
- ConsAltNode node;
-
- switch(getType()) {
-
- case ANCHOR:
- return true;
-
- case ENCLOSE:
- /* allow enclosed elements */
- /* return is_invalid_quantifier_target(NENCLOSE(node)->target); */
- break;
-
- case LIST:
- node = (ConsAltNode)this;
- do {
- if (!node.car.isInvalidQuantifier()) return false;
- } while ((node = node.cdr) != null);
- return false;
-
- case ALT:
- node = (ConsAltNode)this;
- do {
- if (node.car.isInvalidQuantifier()) return true;
- } while ((node = node.cdr) != null);
- break;
-
- default:
- break;
- }
-
- return false;
- }
-
public final boolean isAllowedInLookBehind() {
return (getType2Bit() & ALLOWED_IN_LB) != 0;
}
--
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