]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/expression/BasicExpressionVisitor.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / expression / BasicExpressionVisitor.java
index f735f71c8df5e9d1666f5a8679dd1c7aee005731..240a248a4151544595450f89b32f4a0ef3202805 100644 (file)
-package org.simantics.modeling.ui.expression;\r
-\r
-import java.util.HashMap;\r
-import java.util.Stack;\r
-\r
-import org.simantics.basicexpression.analysis.DepthFirstAdapter;\r
-import org.simantics.basicexpression.node.AAddressValue;\r
-import org.simantics.basicexpression.node.AConstantValue;\r
-import org.simantics.basicexpression.node.ADivMultiplicative;\r
-import org.simantics.basicexpression.node.AFunctionPrimary;\r
-import org.simantics.basicexpression.node.AMinusExpression;\r
-import org.simantics.basicexpression.node.AMultMultiplicative;\r
-import org.simantics.basicexpression.node.APlusExpression;\r
-import org.simantics.basicexpression.node.ARangeValue;\r
-import org.simantics.basicexpression.node.ARviValue;\r
-import org.simantics.basicexpression.node.ASequenceArgList;\r
-import org.simantics.basicexpression.node.ASingleArgList;\r
-import org.simantics.basicexpression.node.AStringValue;\r
-import org.simantics.basicexpression.node.PArgList;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.adapter.Function;\r
-import org.simantics.db.layer0.variable.Variable;\r
-\r
-public class BasicExpressionVisitor extends DepthFirstAdapter {\r
-\r
-    public static final boolean DEBUG_APPLICATION = false;\r
-    \r
-       public static class ApplicationException extends Exception {\r
-\r
-               private static final long serialVersionUID = 1L;\r
-\r
-               public ApplicationException(String message) {\r
-                       super(message);\r
-               }\r
-\r
-       }\r
-\r
-       final ReadGraph graph;\r
-       final Variable property;\r
-       \r
-       Stack<Object> stack = new Stack<Object>();\r
-\r
-       HashMap<String, Function> builtins = new HashMap<String, Function>();\r
-\r
-       public BasicExpressionVisitor(ReadGraph graph, Variable property) {\r
-\r
-               this.graph = graph;\r
-               this.property = property;\r
-               \r
-       }\r
-\r
-       public Object getResult() {\r
-               return stack.pop();\r
-       }\r
-\r
-       public void outAConstantValue(AConstantValue node) {\r
-               // System.out.println("eval constant " + node);\r
-               stack.push(Double.valueOf(node.toString()));\r
-       }\r
-\r
-       public void outAStringValue(AStringValue node) {\r
-\r
-               try {\r
-                       String value = node.toString();\r
-                       String rvi = value.substring(1, value.length() - 2).trim(); \r
-                       Variable relative = property.browse(graph, rvi);\r
-                       stack.push(relative.getValue(graph));\r
-               } catch (DatabaseException e) {\r
-                       stack.push(e);\r
-               }\r
-               \r
-       }\r
-\r
-       @Override\r
-       public void outARviValue(ARviValue node) {\r
-               \r
-               try {\r
-                       String value = node.toString();\r
-                       String rvi = value.trim(); \r
-//                     System.out.println("property=" + property.getURI(graph) + " " + property);\r
-//                     System.out.println("rvi=" + rvi);\r
-                       Variable relative = property.browse(graph, rvi);\r
-//                     System.out.println("relative=" + relative.getURI(graph));\r
-                       Object valueObject = relative.getValue(graph); \r
-//                     System.out.println("relative2=" + relative.getURI(graph) + " -> " + valueObject);\r
-                       stack.push(valueObject);\r
-               } catch (DatabaseException e) {\r
-                       stack.push(e);\r
-               }\r
-               \r
-       }\r
-       \r
-       public void outAAddressValue(AAddressValue node) {\r
-               stack.push('&' + node.getRange().toString());\r
-       }\r
-\r
-       public void outARangeValue(ARangeValue node) {\r
-       }\r
-\r
-       private double extractValue(Object o) {\r
-               if (o instanceof Number) {\r
-                       return ((Number) o).doubleValue();\r
-               } else if (o instanceof String) {\r
-                       return Double.valueOf((String) o);\r
-               } else {\r
-                       return Double.NaN;\r
-               }\r
-       }\r
-\r
-       public void outAPlusExpression(APlusExpression node) {\r
-               Object o1 = stack.pop();\r
-               Object o2 = stack.pop();\r
-               double d1 = extractValue(o1);\r
-               double d2 = extractValue(o2);\r
-               stack.push(d1 + d2);\r
-               // System.out.println("plus " + d1 + " " + d2);\r
-       }\r
-\r
-       public void outAMinusExpression(AMinusExpression node) {\r
-               Object o2 = stack.pop();\r
-               Object o1 = stack.pop();\r
-               double d1 = extractValue(o1);\r
-               double d2 = extractValue(o2);\r
-//             System.out.println("minus " + d1 + " " + d2);\r
-               stack.push(d1 - d2);\r
-       }\r
-\r
-       public void outAMultMultiplicative(AMultMultiplicative node) {\r
-               Object o1 = stack.pop();\r
-               Object o2 = stack.pop();\r
-               double d1 = extractValue(o1);\r
-               double d2 = extractValue(o2);\r
-               stack.push(d1 * d2);\r
-               // System.out.println("mult " + d1 + " " + d2);\r
-       }\r
-       \r
-       @Override\r
-       public void outADivMultiplicative(ADivMultiplicative node) {\r
-               Object o1 = stack.pop();\r
-               Object o2 = stack.pop();\r
-               double d1 = extractValue(o1);\r
-               double d2 = extractValue(o2);\r
-               stack.push(d2 / d1);\r
-       }\r
-\r
-       int countArguments(PArgList args) {\r
-               if (args == null)\r
-                       return 0;\r
-               if (args instanceof ASingleArgList)\r
-                       return 1;\r
-               ASequenceArgList seq = (ASequenceArgList) args;\r
-               return 1 + countArguments(seq.getArgList());\r
-       }\r
-\r
-       public void outAFunctionPrimary(AFunctionPrimary node) {\r
-       }\r
-\r
-}\r
+package org.simantics.modeling.ui.expression;
+
+import java.util.HashMap;
+import java.util.Stack;
+
+import org.simantics.basicexpression.analysis.DepthFirstAdapter;
+import org.simantics.basicexpression.node.AAddressValue;
+import org.simantics.basicexpression.node.AConstantValue;
+import org.simantics.basicexpression.node.ADivMultiplicative;
+import org.simantics.basicexpression.node.AFunctionPrimary;
+import org.simantics.basicexpression.node.AMinusExpression;
+import org.simantics.basicexpression.node.AMultMultiplicative;
+import org.simantics.basicexpression.node.APlusExpression;
+import org.simantics.basicexpression.node.ARangeValue;
+import org.simantics.basicexpression.node.ARviValue;
+import org.simantics.basicexpression.node.ASequenceArgList;
+import org.simantics.basicexpression.node.ASingleArgList;
+import org.simantics.basicexpression.node.AStringValue;
+import org.simantics.basicexpression.node.PArgList;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.adapter.Function;
+import org.simantics.db.layer0.variable.Variable;
+
+public class BasicExpressionVisitor extends DepthFirstAdapter {
+
+    public static final boolean DEBUG_APPLICATION = false;
+    
+       public static class ApplicationException extends Exception {
+
+               private static final long serialVersionUID = 1L;
+
+               public ApplicationException(String message) {
+                       super(message);
+               }
+
+       }
+
+       final ReadGraph graph;
+       final Variable property;
+       
+       Stack<Object> stack = new Stack<Object>();
+
+       HashMap<String, Function> builtins = new HashMap<String, Function>();
+
+       public BasicExpressionVisitor(ReadGraph graph, Variable property) {
+
+               this.graph = graph;
+               this.property = property;
+               
+       }
+
+       public Object getResult() {
+               return stack.pop();
+       }
+
+       public void outAConstantValue(AConstantValue node) {
+               // System.out.println("eval constant " + node);
+               stack.push(Double.valueOf(node.toString()));
+       }
+
+       public void outAStringValue(AStringValue node) {
+
+               try {
+                       String value = node.toString();
+                       String rvi = value.substring(1, value.length() - 2).trim(); 
+                       Variable relative = property.browse(graph, rvi);
+                       stack.push(relative.getValue(graph));
+               } catch (DatabaseException e) {
+                       stack.push(e);
+               }
+               
+       }
+
+       @Override
+       public void outARviValue(ARviValue node) {
+               
+               try {
+                       String value = node.toString();
+                       String rvi = value.trim(); 
+//                     System.out.println("property=" + property.getURI(graph) + " " + property);
+//                     System.out.println("rvi=" + rvi);
+                       Variable relative = property.browse(graph, rvi);
+//                     System.out.println("relative=" + relative.getURI(graph));
+                       Object valueObject = relative.getValue(graph); 
+//                     System.out.println("relative2=" + relative.getURI(graph) + " -> " + valueObject);
+                       stack.push(valueObject);
+               } catch (DatabaseException e) {
+                       stack.push(e);
+               }
+               
+       }
+       
+       public void outAAddressValue(AAddressValue node) {
+               stack.push('&' + node.getRange().toString());
+       }
+
+       public void outARangeValue(ARangeValue node) {
+       }
+
+       private double extractValue(Object o) {
+               if (o instanceof Number) {
+                       return ((Number) o).doubleValue();
+               } else if (o instanceof String) {
+                       return Double.valueOf((String) o);
+               } else {
+                       return Double.NaN;
+               }
+       }
+
+       public void outAPlusExpression(APlusExpression node) {
+               Object o1 = stack.pop();
+               Object o2 = stack.pop();
+               double d1 = extractValue(o1);
+               double d2 = extractValue(o2);
+               stack.push(d1 + d2);
+               // System.out.println("plus " + d1 + " " + d2);
+       }
+
+       public void outAMinusExpression(AMinusExpression node) {
+               Object o2 = stack.pop();
+               Object o1 = stack.pop();
+               double d1 = extractValue(o1);
+               double d2 = extractValue(o2);
+//             System.out.println("minus " + d1 + " " + d2);
+               stack.push(d1 - d2);
+       }
+
+       public void outAMultMultiplicative(AMultMultiplicative node) {
+               Object o1 = stack.pop();
+               Object o2 = stack.pop();
+               double d1 = extractValue(o1);
+               double d2 = extractValue(o2);
+               stack.push(d1 * d2);
+               // System.out.println("mult " + d1 + " " + d2);
+       }
+       
+       @Override
+       public void outADivMultiplicative(ADivMultiplicative node) {
+               Object o1 = stack.pop();
+               Object o2 = stack.pop();
+               double d1 = extractValue(o1);
+               double d2 = extractValue(o2);
+               stack.push(d2 / d1);
+       }
+
+       int countArguments(PArgList args) {
+               if (args == null)
+                       return 0;
+               if (args instanceof ASingleArgList)
+                       return 1;
+               ASequenceArgList seq = (ASequenceArgList) args;
+               return 1 + countArguments(seq.getArgList());
+       }
+
+       public void outAFunctionPrimary(AFunctionPrimary node) {
+       }
+
+}