You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2012/06/17 23:01:44 UTC

svn commit: r1351159 - in /ant/sandbox/antdsl: org.apache.ant.antdsl/src/org/apache/ant/antdsl/ org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/ test/

Author: hibou
Date: Sun Jun 17 21:01:44 2012
New Revision: 1351159

URL: http://svn.apache.org/viewvc?rev=1351159&view=rev
Log:
Better syntax for the roperty and reference assignment

Added:
    ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java   (with props)
Modified:
    ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/AntDSL.g
    ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDSL.xtext
    ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDslXTextProjectHelper.java
    ant/sandbox/antdsl/test/build.ant

Modified: ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/AntDSL.g
URL: http://svn.apache.org/viewvc/ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/AntDSL.g?rev=1351159&r1=1351158&r2=1351159&view=diff
==============================================================================
--- ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/AntDSL.g (original)
+++ ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/AntDSL.g Sun Jun 17 21:01:44 2012
@@ -95,7 +95,7 @@ targetList returns [List<String> tl = ne
     (',' n=NAME { tl.add($n.text); } )*;
 
 task returns [Task t = null]:
-      pa=propertyAssignment {t=pa;}
+      a=assignment {t=a;}
     | ie=innerElement {t=projectHelper.mapUnknown(project, context, ie, false);}
     | b=branch {t=b;}
     ;
@@ -118,10 +118,19 @@ innerElement returns [InnerElement ie = 
     '(' args=arguments? { ie.attributes = args; } ')'
     ies=innerElements? { ie.children = ies; };
 
+assignment returns [Task assign]:
+    p=propertyAssignment { assign = p; } | r=refAssignment { assign = r; } ;
+
 propertyAssignment returns [Property p = new Property()]:
+    'prop'
     { projectHelper.mapCommonTask(project, context, p); }
     NAME { p.setName($NAME.text); } '=' STRING { p.setValue(readString($STRING.text)); } ;
 
+refAssignment returns [RefTask r = new RefTask()]:
+    'ref'
+    { projectHelper.mapCommonTask(project, context, r); }
+    NAME { r.setName($NAME.text); } '=' STRING { r.setValue(readString($STRING.text)); } ;
+
 branch returns [IfTask if_ = new IfTask()]:
     { projectHelper.mapCommonTask(project, context, if_); }
     main=conditionedTasks { if_.setMain(main); }

Added: ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java
URL: http://svn.apache.org/viewvc/ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java?rev=1351159&view=auto
==============================================================================
--- ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java (added)
+++ ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java Sun Jun 17 21:01:44 2012
@@ -0,0 +1,24 @@
+package org.apache.ant.antdsl;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+public class RefTask extends Task {
+
+    private String name;
+
+    private Object value;
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+    
+    @Override
+    public void execute() throws BuildException {
+        getProject().addReference(name, value);
+    }
+}

Propchange: ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/RefTask.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDSL.xtext
URL: http://svn.apache.org/viewvc/ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDSL.xtext?rev=1351159&r1=1351158&r2=1351159&view=diff
==============================================================================
--- ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDSL.xtext (original)
+++ ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDSL.xtext Sun Jun 17 21:01:44 2012
@@ -30,7 +30,7 @@ ETargetList:
     names+=NAME (',' names+=NAME)*;
 
 ETask:
-    EPropertyAssignment | EInnerElement | EBranch;
+    EAssignment | EInnerElement | EBranch;
 
 ENSName:
     (namespace=NAME ':')? name=NAME;
@@ -47,8 +47,14 @@ EInnerElements:
 EInnerElement:
     name=ENSName '(' arguments=EArguments? ')' inners=EInnerElements?;
 
+EAssignment:
+    EPropertyAssignment | EReferenceAssignment;
+
 EPropertyAssignment:
-    name=NAME '=' value=EExpression;
+    'prop' name=NAME '=' value=STRING;
+
+EReferenceAssignment:
+    'ref' name=NAME '=' value=STRING;
 
 EBranch:
     if=EConditionedTasks ('else' elseif+=EConditionedTasks )* ('else' else=ETaskLists)?;
@@ -74,9 +80,6 @@ ETextAttribute:
 EElementAttribute:
     (optional ?= 'optional')? (implicit ?= 'implicit')? 'element' name=NAME;
 
-EExpression:
-    STRING | PROPERTY;
-
 terminal NAME:
     ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'-'|'.'|'0'..'9')*;
 

Modified: ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDslXTextProjectHelper.java
URL: http://svn.apache.org/viewvc/ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDslXTextProjectHelper.java?rev=1351159&r1=1351158&r2=1351159&view=diff
==============================================================================
--- ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDslXTextProjectHelper.java (original)
+++ ant/sandbox/antdsl/org.apache.ant.antdsl/src/org/apache/ant/antdsl/xtext/AntDslXTextProjectHelper.java Sun Jun 17 21:01:44 2012
@@ -11,6 +11,7 @@ import org.apache.ant.antdsl.AbstractAnt
 import org.apache.ant.antdsl.AntDslContext;
 import org.apache.ant.antdsl.IfTask;
 import org.apache.ant.antdsl.IfTask.ConditionnalSequential;
+import org.apache.ant.antdsl.RefTask;
 import org.apache.ant.antdsl.xtext.antdsl.EArgAttribute;
 import org.apache.ant.antdsl.xtext.antdsl.EArgument;
 import org.apache.ant.antdsl.xtext.antdsl.EArguments;
@@ -26,6 +27,7 @@ import org.apache.ant.antdsl.xtext.antds
 import org.apache.ant.antdsl.xtext.antdsl.ENamespace;
 import org.apache.ant.antdsl.xtext.antdsl.EProject;
 import org.apache.ant.antdsl.xtext.antdsl.EPropertyAssignment;
+import org.apache.ant.antdsl.xtext.antdsl.EReferenceAssignment;
 import org.apache.ant.antdsl.xtext.antdsl.ETarget;
 import org.apache.ant.antdsl.xtext.antdsl.ETargetList;
 import org.apache.ant.antdsl.xtext.antdsl.ETask;
@@ -197,6 +199,14 @@ public class AntDslXTextProjectHelper ex
             property.setValue(ePropertyAssignment.getValue());
             return property;
         }
+        if (eTask instanceof EReferenceAssignment) {
+            EReferenceAssignment eReferenceAssignment = (EReferenceAssignment) eTask;
+            RefTask ref = new RefTask();
+            mapCommonTask(project, context, ref);
+            ref.setName(eReferenceAssignment.getName());
+            ref.setValue(eReferenceAssignment.getValue());
+            return ref;
+        }
         if (eTask instanceof EInnerElement) {
             EInnerElement eInnerElement = (EInnerElement) eTask;
             return mapUnknown(project, context, mapInnerElement(eInnerElement), false);

Modified: ant/sandbox/antdsl/test/build.ant
URL: http://svn.apache.org/viewvc/ant/sandbox/antdsl/test/build.ant?rev=1351159&r1=1351158&r2=1351159&view=diff
==============================================================================
--- ant/sandbox/antdsl/test/build.ant (original)
+++ ant/sandbox/antdsl/test/build.ant Sun Jun 17 21:01:44 2012
@@ -2,7 +2,7 @@ name : myproject
 default : build
 
 {
-	foo = "hello world!"
+	prop foo = "hello world!"
 	echo(message="${foo}")
 }