Author: pkluegl Date: Wed Jan 30 13:33:47 2013 New Revision: 1440410 URL: http://svn.apache.org/viewvc?rev=1440410&view=rev Log: UIMA-2618 - fixed grammar for AST creation - hotfixed formatter for min/max quantifier
Modified: uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/antlr3/org/apache/uima/textmarker/ide/core/parser/TextMarkerParser.g uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java Modified: uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/antlr3/org/apache/uima/textmarker/ide/core/parser/TextMarkerParser.g URL: http://svn.apache.org/viewvc/uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/antlr3/org/apache/uima/textmarker/ide/core/parser/TextMarkerParser.g?rev=1440410&r1=1440409&r2=1440410&view=diff ============================================================================== --- uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/antlr3/org/apache/uima/textmarker/ide/core/parser/TextMarkerParser.g (original) +++ uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/antlr3/org/apache/uima/textmarker/ide/core/parser/TextMarkerParser.g Wed Jan 30 13:33:47 2013 @@ -847,9 +847,13 @@ quantifierPart returns [List<Expression> s = STAR q = QUESTION? {exprs.add(ExpressionFactory.createQuantifierLiteralExpression(s,q));} | p = PLUS q = QUESTION? {exprs.add(ExpressionFactory.createQuantifierLiteralExpression(p,q));} | q1 = QUESTION q = QUESTION? {exprs.add(ExpressionFactory.createQuantifierLiteralExpression(q1,q));} - | (LBRACK min = numberExpression (COMMA (max = numberExpression)?)? RBRACK q = QUESTION? - {if(min!=null) {exprs.add(min);} + | (b1 = LBRACK min = numberExpression (COMMA (max = numberExpression)?)? b2 = RBRACK q = QUESTION? + { + //if(b1!=null) {exprs.add(b1);} + if(min!=null) {exprs.add(min);} if(max!=null) {exprs.add(max);} + //if(b2!=null) {exprs.add(b2);} + if(q!=null) {exprs.add(ExpressionFactory.createQuantifierLiteralExpression(q, null));} } ) ; Modified: uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java URL: http://svn.apache.org/viewvc/uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java?rev=1440410&r1=1440409&r2=1440410&view=diff ============================================================================== --- uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java (original) +++ uima/sandbox/TextMarker/trunk/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java Wed Jan 30 13:33:47 2013 @@ -41,6 +41,7 @@ import org.apache.uima.textmarker.ide.pa import org.apache.uima.textmarker.ide.parser.ast.TextMarkerListExpression; import org.apache.uima.textmarker.ide.parser.ast.TextMarkerLogAction; import org.apache.uima.textmarker.ide.parser.ast.TextMarkerPackageDeclaration; +import org.apache.uima.textmarker.ide.parser.ast.TextMarkerQuantifierLiteralExpression; import org.apache.uima.textmarker.ide.parser.ast.TextMarkerRule; import org.apache.uima.textmarker.ide.parser.ast.TextMarkerRuleElement; import org.apache.uima.textmarker.ide.parser.ast.TextMarkerStringExpression; @@ -187,7 +188,7 @@ public class TextMarkerFormattedPrinter } if (s instanceof TextMarkerRule) { // traverse into container TextMarkerRule to format RuleElements - if(!inBlockDeclaration) { + if (!inBlockDeclaration) { appendNewLine(); } // Rules always just consists of RuleElements: whitespace separation @@ -198,7 +199,7 @@ public class TextMarkerFormattedPrinter TextMarkerRule rule = (TextMarkerRule) s; List<Expression> expressions = rule.getExpressions(); traverseAstNodes(expressions, ""); - if(!inBlockDeclaration) { + if (!inBlockDeclaration) { appendStatementEnd(); } if (inLargeRule > 0) { @@ -281,7 +282,7 @@ public class TextMarkerFormattedPrinter } commentLineSince = 0; } - } else if(inBlockDeclaration || s instanceof CommonToken){ + } else if (inBlockDeclaration || s instanceof CommonToken) { appendNewLine(); } lastStatements.put(indentLevel, s); @@ -575,17 +576,35 @@ public class TextMarkerFormattedPrinter // print Quantifiers List<? extends ASTNode> quantifierExpressions = ruleEl.getQuantifierExpressions(); if (quantifierExpressions != null && !quantifierExpressions.isEmpty()) { - if (quantifierExpressions.size() > 1) { - append(BRACK_OPEN); - for (ASTNode expression : quantifierExpressions) { - append(expression); - if (quantifierExpressions.indexOf(expression) < quantifierExpressions.size() - 1) { - append(COMMA); - } + if (quantifierExpressions.size() == 1) { + ASTNode astNode = quantifierExpressions.get(0); + if (astNode instanceof TextMarkerQuantifierLiteralExpression) { + append(astNode); + } else { + append(BRACK_OPEN); + append(astNode); + append(BRACK_CLOSE); } - append(BRACK_CLOSE); - } else if (quantifierExpressions.size() == 1) { + } else if (quantifierExpressions.size() == 2) { + if (quantifierExpressions.get(1) instanceof TextMarkerQuantifierLiteralExpression) { + append(BRACK_OPEN); + append(quantifierExpressions.get(0)); + append(BRACK_CLOSE); + append(quantifierExpressions.get(1)); + } else { + append(BRACK_OPEN); + append(quantifierExpressions.get(0)); + append(COMMA + " "); + append(quantifierExpressions.get(1)); + append(BRACK_CLOSE); + } + } else if (quantifierExpressions.size() == 3) { + append(BRACK_OPEN); append(quantifierExpressions.get(0)); + append(COMMA + " "); + append(quantifierExpressions.get(1)); + append(BRACK_CLOSE); + append(quantifierExpressions.get(2)); } } if (!inBlockDeclaration && conditions == null && actions == null) {