comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java @ 16851:2db61eddcb97

Truffle-DSL: argument syntax support for guards
author Christian Humer <christian.humer@gmail.com>
date Mon, 18 Aug 2014 18:41:16 +0200
parents 23415229349b
children 6ee7afea175a
comparison
equal deleted inserted replaced
16850:d6c002f4d2a9 16851:2db61eddcb97
28 import javax.lang.model.type.*; 28 import javax.lang.model.type.*;
29 29
30 import com.oracle.truffle.dsl.processor.*; 30 import com.oracle.truffle.dsl.processor.*;
31 import com.oracle.truffle.dsl.processor.java.*; 31 import com.oracle.truffle.dsl.processor.java.*;
32 import com.oracle.truffle.dsl.processor.model.NodeChildData.Cardinality; 32 import com.oracle.truffle.dsl.processor.model.NodeChildData.Cardinality;
33 import com.oracle.truffle.dsl.processor.parser.*;
34 33
35 public class NodeData extends Template implements Comparable<NodeData> { 34 public class NodeData extends Template implements Comparable<NodeData> {
36 35
37 private final String nodeId; 36 private final String nodeId;
38 private final String shortName; 37 private final String shortName;
204 return false; 203 return false;
205 } 204 }
206 } 205 }
207 } 206 }
208 return true; 207 return true;
208 }
209
210 public NodeExecutionData findExecutionByExpression(String childNameExpression) {
211 String childName = childNameExpression;
212 int index = -1;
213
214 int start = childName.indexOf('[');
215 int end = childName.lastIndexOf(']');
216 if (start != -1 && end != -1 && start < end) {
217 try {
218 index = Integer.parseInt(childName.substring(start + 1, end));
219 childName = childName.substring(0, start);
220 childName = NodeExecutionData.createName(childName, index);
221 } catch (NumberFormatException e) {
222 // ignore
223 }
224 }
225
226 for (NodeExecutionData execution : childExecutions) {
227 if (execution.getName().equals(childName) && (execution.getIndex() == -1 || execution.getIndex() == index)) {
228 return execution;
229 }
230 }
231 return null;
209 } 232 }
210 233
211 public List<NodeData> getNodeDeclaringChildren() { 234 public List<NodeData> getNodeDeclaringChildren() {
212 List<NodeData> nodeChildren = new ArrayList<>(); 235 List<NodeData> nodeChildren = new ArrayList<>();
213 for (NodeData child : getEnclosingNodes()) { 236 for (NodeData child : getEnclosingNodes()) {