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) {


Reply via email to