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 6eb41c76678513851c39e49ccbc747e0f52e2c44 Author: Marcin Mielzynski <[email protected]> Date: Fri Apr 10 01:48:39 2015 +0200 Some preliminaries for \K --- src/org/joni/Analyser.java | 8 ++++---- src/org/joni/ArrayCompiler.java | 4 ++++ src/org/joni/Lexer.java | 2 ++ src/org/joni/Parser.java | 11 ++++++++--- src/org/joni/Syntax.java | 3 ++- src/org/joni/ast/AnchorNode.java | 34 +++++++++++++++++----------------- src/org/joni/constants/TokenType.java | 1 + 7 files changed, 38 insertions(+), 25 deletions(-) diff --git a/src/org/joni/Analyser.java b/src/org/joni/Analyser.java index 46fd470..d871f77 100644 --- a/src/org/joni/Analyser.java +++ b/src/org/joni/Analyser.java @@ -220,10 +220,10 @@ final class Analyser extends Parser { private void noNameDisableMapFor_anchor(Node node, int[]map, Ptr counter) { AnchorNode an = (AnchorNode)node; switch (an.type) { - case AnchorNode.PREC_READ: - case AnchorNode.PREC_READ_NOT: - case AnchorNode.LOOK_BEHIND: - case AnchorNode.LOOK_BEHIND_NOT: + case AnchorType.PREC_READ: + case AnchorType.PREC_READ_NOT: + case AnchorType.LOOK_BEHIND: + case AnchorType.LOOK_BEHIND_NOT: an.setTarget(noNameDisableMap(an.target, map, counter)); } } diff --git a/src/org/joni/ArrayCompiler.java b/src/org/joni/ArrayCompiler.java index 9b61ecd..62e44fc 100644 --- a/src/org/joni/ArrayCompiler.java +++ b/src/org/joni/ArrayCompiler.java @@ -1046,6 +1046,10 @@ final class ArrayCompiler extends Compiler { addOpcode(enc.isSingleByte() ? OPCode.WORD_END_SB : OPCode.WORD_END); break; + case AnchorType.KEEP: + addOpcode(OPCode.KEEP); + break; + case AnchorType.PREC_READ: regex.requireStack = true; addOpcode(OPCode.PUSH_POS); diff --git a/src/org/joni/Lexer.java b/src/org/joni/Lexer.java index f447059..fe01da6 100644 --- a/src/org/joni/Lexer.java +++ b/src/org/joni/Lexer.java @@ -1128,6 +1128,8 @@ class Lexer extends ScannerSupport { case 'X': if (syntax.op2EscCapitalXExtendedGraphemeCluster()) token.type = TokenType.EXTENDED_GRAPHEME_CLUSTER; break; + case 'K': + if (syntax.op2EscCapitalKKeep()) token.type = TokenType.KEEP; default: unfetch(); int num = fetchEscapedValue(); diff --git a/src/org/joni/Parser.java b/src/org/joni/Parser.java index 992c2f7..77352b7 100644 --- a/src/org/joni/Parser.java +++ b/src/org/joni/Parser.java @@ -771,10 +771,10 @@ class Parser extends Lexer { cc1.addCType(ctype, false, env, this); QuantifierNode qn = new QuantifierNode(0, QuantifierNode.REPEAT_INFINITE, false); qn.setTarget(cc2); - /* \P{M}\p{M}* */ - ConsAltNode list = ConsAltNode.newListNode(cc1, ConsAltNode.newListNode(qn, null)); + /* (?>...) */ EncloseNode en2 = new EncloseNode(EncloseType.STOP_BACKTRACK); - en2.setTarget(list); + /* \P{M}\p{M}* */ + en2.setTarget(ConsAltNode.newListNode(cc1, ConsAltNode.newListNode(qn, null))); node = en2; } } @@ -786,6 +786,11 @@ class Parser extends Lexer { node = np1; } break; + + case KEEP: + node = new AnchorNode(AnchorType.KEEP); + break; + case STRING: return parseExpTkByte(group); // tk_byte: diff --git a/src/org/joni/Syntax.java b/src/org/joni/Syntax.java index 47f069d..5ec30f7 100644 --- a/src/org/joni/Syntax.java +++ b/src/org/joni/Syntax.java @@ -422,7 +422,8 @@ public final class Syntax implements SyntaxProperties{ OP2_ESC_H_XDIGIT | OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | OP2_QMARK_LPAREN_CONDITION | - OP2_ESC_CAPITAL_R_LINEBREAK), + OP2_ESC_CAPITAL_R_LINEBREAK // | OP2_ESC_CAPITAL_K_KEEP + ), ( GNU_REGEX_BV | ALLOW_INTERVAL_LOW_ABBREV | diff --git a/src/org/joni/ast/AnchorNode.java b/src/org/joni/ast/AnchorNode.java index 1000083..498f1a6 100644 --- a/src/org/joni/ast/AnchorNode.java +++ b/src/org/joni/ast/AnchorNode.java @@ -21,7 +21,7 @@ package org.joni.ast; import org.joni.constants.AnchorType; -public final class AnchorNode extends Node implements AnchorType { +public final class AnchorNode extends Node { public final int type; public boolean asciiRange; public Node target; @@ -68,22 +68,22 @@ public final class AnchorNode extends Node implements AnchorType { public String typeToString() { StringBuilder type = new StringBuilder(); - if (isType(BEGIN_BUF)) type.append("BEGIN_BUF "); - if (isType(BEGIN_LINE)) type.append("BEGIN_LINE "); - if (isType(BEGIN_POSITION)) type.append("BEGIN_POSITION "); - if (isType(END_BUF)) type.append("END_BUF "); - if (isType(SEMI_END_BUF)) type.append("SEMI_END_BUF "); - if (isType(END_LINE)) type.append("END_LINE "); - if (isType(WORD_BOUND)) type.append("WORD_BOUND "); - if (isType(NOT_WORD_BOUND)) type.append("NOT_WORD_BOUND "); - if (isType(WORD_BEGIN)) type.append("WORD_BEGIN "); - if (isType(WORD_END)) type.append("WORD_END "); - if (isType(PREC_READ)) type.append("PREC_READ "); - if (isType(PREC_READ_NOT)) type.append("PREC_READ_NOT "); - if (isType(LOOK_BEHIND)) type.append("LOOK_BEHIND "); - if (isType(LOOK_BEHIND_NOT)) type.append("LOOK_BEHIND_NOT "); - if (isType(ANYCHAR_STAR)) type.append("ANYCHAR_STAR "); - if (isType(ANYCHAR_STAR_ML)) type.append("ANYCHAR_STAR_ML "); + if (isType(AnchorType.BEGIN_BUF)) type.append("BEGIN_BUF "); + if (isType(AnchorType.BEGIN_LINE)) type.append("BEGIN_LINE "); + if (isType(AnchorType.BEGIN_POSITION)) type.append("BEGIN_POSITION "); + if (isType(AnchorType.END_BUF)) type.append("END_BUF "); + if (isType(AnchorType.SEMI_END_BUF)) type.append("SEMI_END_BUF "); + if (isType(AnchorType.END_LINE)) type.append("END_LINE "); + if (isType(AnchorType.WORD_BOUND)) type.append("WORD_BOUND "); + if (isType(AnchorType.NOT_WORD_BOUND)) type.append("NOT_WORD_BOUND "); + if (isType(AnchorType.WORD_BEGIN)) type.append("WORD_BEGIN "); + if (isType(AnchorType.WORD_END)) type.append("WORD_END "); + if (isType(AnchorType.PREC_READ)) type.append("PREC_READ "); + if (isType(AnchorType.PREC_READ_NOT)) type.append("PREC_READ_NOT "); + if (isType(AnchorType.LOOK_BEHIND)) type.append("LOOK_BEHIND "); + if (isType(AnchorType.LOOK_BEHIND_NOT)) type.append("LOOK_BEHIND_NOT "); + if (isType(AnchorType.ANYCHAR_STAR)) type.append("ANYCHAR_STAR "); + if (isType(AnchorType.ANYCHAR_STAR_ML)) type.append("ANYCHAR_STAR_ML "); return type.toString(); } diff --git a/src/org/joni/constants/TokenType.java b/src/org/joni/constants/TokenType.java index 3dc8386..80f3079 100644 --- a/src/org/joni/constants/TokenType.java +++ b/src/org/joni/constants/TokenType.java @@ -41,6 +41,7 @@ public enum TokenType { CHAR_PROPERTY, /* \p{...}, \P{...} */ LINEBREAK, EXTENDED_GRAPHEME_CLUSTER, + KEEP, /* in cc */ CC_CLOSE, CC_RANGE, -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

