http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/Help.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/Help.java b/debugger/src/main/java/flex/tools/debugger/cli/Help.java new file mode 100644 index 0000000..b6272bf --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/Help.java @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class Help +{ + private Help() + { + } + + public static InputStream getResourceAsStream() + { + List<String> names = calculateLocalizedFilenames("fdbhelp", ".txt", Locale.getDefault()); //$NON-NLS-1$ //$NON-NLS-2$ + for (int i=names.size()-1; i>=0; --i) { + InputStream stm = Help.class.getResourceAsStream(names.get(i)); + if (stm != null) { + return stm; + } + } + return null; + } + + /** + * Returns an array of filenames that might match the given baseName and locale. + * For example, if baseName is "fdbhelp", the extension is ".txt", and the locale + * is "en_US", then the returned array will be (in this order): + * + * <ul> + * <li> <code>fdbhelp.txt</code> </li> + * <li> <code>fdbhelp_en.txt</code> </li> + * <li> <code>fdbhelp_en_US.txt</code> </li> + * </ul> + */ + private static List<String> calculateLocalizedFilenames(String baseName, String extensionWithDot, Locale locale) { + List<String> names = new ArrayList<String>(); + String language = locale.getLanguage(); + String country = locale.getCountry(); + String variant = locale.getVariant(); + + names.add(baseName + extensionWithDot); + + if (language.length() + country.length() + variant.length() == 0) { + //The locale is "", "", "". + return names; + } + final StringBuilder temp = new StringBuilder(baseName); + temp.append('_'); + temp.append(language); + if (language.length() > 0) { + names.add(temp.toString() + extensionWithDot); + } + + if (country.length() + variant.length() == 0) { + return names; + } + temp.append('_'); + temp.append(country); + if (country.length() > 0) { + names.add(temp.toString() + extensionWithDot); + } + + if (variant.length() == 0) { + return names; + } + temp.append('_'); + temp.append(variant); + names.add(temp.toString() + extensionWithDot); + + return names; + } +}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/IntProperties.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/IntProperties.java b/debugger/src/main/java/flex/tools/debugger/cli/IntProperties.java new file mode 100644 index 0000000..a5b3ee0 --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/IntProperties.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +import java.util.HashMap; +import java.util.Set; + +public class IntProperties +{ + HashMap<String, Integer> m_map = new HashMap<String, Integer>(); + + /* getters */ + public Integer getInteger(String s) { return m_map.get(s); } + public int get(String s) { return getInteger(s).intValue(); } + public Set<String> keySet() { return m_map.keySet(); } + public HashMap<String, Integer> map() { return m_map; } + + /* setters */ + public void put(String s, int value) { m_map.put(s, new Integer(value)); } + +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/InternalProperty.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/InternalProperty.java b/debugger/src/main/java/flex/tools/debugger/cli/InternalProperty.java new file mode 100644 index 0000000..b5ce7e7 --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/InternalProperty.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +import flash.tools.debugger.expression.NoSuchVariableException; + +public class InternalProperty +{ + String m_key; + Object m_value; + + public InternalProperty(String key, Object value) + { + m_key = key; + m_value = value; + } + + /* getters */ + public String getName() { return m_key; } + @Override + public String toString() { return (m_value == null) ? "null" : m_value.toString(); } //$NON-NLS-1$ + + public String valueOf() throws NoSuchVariableException + { + if (m_value == null) + throw new NoSuchVariableException(m_key); + + return toString(); + } + +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/LocationCollection.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/LocationCollection.java b/debugger/src/main/java/flex/tools/debugger/cli/LocationCollection.java new file mode 100644 index 0000000..37dbeab --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/LocationCollection.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +import java.util.ArrayList; +import java.util.Iterator; + +import flash.tools.debugger.Location; + +/** + * This object is a container for source locations + * that represent the same underlying file and line + * number. + * + * The reason we need this is because multiple + * swfs each contain their own unique version of + * a source file and we'd like to be able to + * refer to any one location freely + * + * It is modelled after the Collection interface + */ +public class LocationCollection +{ + private ArrayList<Location> m_locations = new ArrayList<Location>(); + + public boolean add(Location l) { return m_locations.add(l); } + public boolean contains(Location l) { return m_locations.contains(l); } + public boolean remove(Location l) { return m_locations.remove(l); } + public boolean isEmpty() { return m_locations.isEmpty(); } + public Iterator<Location> iterator() { return m_locations.iterator(); } + + // Return the first Location object or null + public Location first() { return ( (m_locations.size() > 0) ? m_locations.get(0) : null ); } + + // Return the last Location object or null + public Location last() { return ( (m_locations.size() > 0) ? m_locations.get(m_locations.size() - 1) : null ); } + + /** + * Removes Locations from the Collection which contain + * SourceFiles with Ids in the range [startingId, endingId]. + */ + public void removeFileIdRange(int startingId, int endingId) + { + Iterator<Location> i = iterator(); + while(i.hasNext()) + { + Location l = i.next(); + int id = (l.getFile() == null) ? -1 : l.getFile().getId(); + if (id >= startingId && id <= endingId) + i.remove(); + } + } + + /** + * See if the collection contains a Location + * which is identical to the given file id and + * line number + */ + public boolean contains(int fileId, int line) + { + boolean found = false; + Iterator<Location> i = iterator(); + while(i.hasNext() && !found) + { + Location l = i.next(); + int id = (l.getFile() == null) ? -1 : l.getFile().getId(); + if (id == fileId && l.getLine() == line) + found = true; + } + return found; + } + + /** for debugging */ + @Override + public String toString() + { + return m_locations.toString(); + } +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/NoMatchException.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/NoMatchException.java b/debugger/src/main/java/flex/tools/debugger/cli/NoMatchException.java new file mode 100644 index 0000000..98dde02 --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/NoMatchException.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +/** + * While attempting to resolve a function name or filename, no match + * was found. For example, this is thrown if the user enters + * "break foo.mxml:12" but there is no file called "foo.mxml". + */ +public class NoMatchException extends Exception +{ + private static final long serialVersionUID = 721945420519126096L; + + public NoMatchException() {} + public NoMatchException(String s) { super(s); } +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/StringIntArray.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/StringIntArray.java b/debugger/src/main/java/flex/tools/debugger/cli/StringIntArray.java new file mode 100644 index 0000000..76db507 --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/StringIntArray.java @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +import java.util.ArrayList; +import java.util.AbstractList; + +/** + * This class wraps a Nx2 array and provides a List interface + * for each of the 2 columns of the array. + * + * Its main purpose is to provide the method elementsStartingWith() + * which returns a ArrayList of index numbers for each element whose + * String component matches the provided argument. + */ +public class StringIntArray extends AbstractList<Object> +{ + Object[] m_ar; + int m_size = 0; + double m_growthRatio = 1.60; + + public StringIntArray(Object[] ar) + { + m_ar = ar; + m_size = m_ar.length; + } + + public StringIntArray() { this(10); } + + public StringIntArray(int size) + { + m_ar = new Object[size]; + m_size = 0; + } + + @Override + public Object get(int at) { return m_ar[at]; } + @Override + public int size() { return m_size; } + + public Object[] getElement(int at) { return (Object[])get(at); } + public String getString(int at) { return (String)getElement(at)[0]; } + public Integer getInteger(int at) { return (Integer)getElement(at)[1]; } + public int getInt(int at) { return getInteger(at).intValue(); } + + /** + * Sequentially walk through the entire list + * matching the String components against the + * given string + */ + public ArrayList<Integer> elementsStartingWith(String s) + { + ArrayList<Integer> alist = new ArrayList<Integer>(); + for(int i=0; i<m_size; i++) + if ( getString(i).startsWith(s) ) + alist.add( new Integer(i) ); + + return alist; + } + + @Override + public void add(int at, Object e) + { + // make sure there is enough room in the array, then add the element + ensureCapacity(1); + int size = size(); + + // open a spot for the element and stick it in +// System.out.println("add("+at+"), moving "+at+" to "+(at+1)+" for "+(size-at)+",size="+size); + System.arraycopy(m_ar, at, m_ar, at+1, size-at); + m_ar[at] = e; + + m_size++; + } + + @Override + public Object remove(int at) + { + int size = size(); + Object o = m_ar[at]; + +// System.out.println("remove("+at+"), moving "+(at+1)+" to "+at+" for "+(size-at+1)+",size="+size); + System.arraycopy(m_ar, at+1, m_ar, at, size-at+1); + m_size--; + + return o; + } + + void ensureCapacity(int amt) + { + int size = size(); + int newSize = amt+size; + if (newSize > m_ar.length) + { + // we need a new array, compute a good size for it + double growTo = m_ar.length * m_growthRatio; // make bigger + if (newSize > growTo) + growTo += newSize + (newSize * m_growthRatio); + + Object[] nAr = new Object[(int)growTo+1]; + System.arraycopy(m_ar, 0, nAr, 0, m_ar.length); + m_ar = nAr; + } + } +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/VariableFacade.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/VariableFacade.java b/debugger/src/main/java/flex/tools/debugger/cli/VariableFacade.java new file mode 100644 index 0000000..eda7784 --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/VariableFacade.java @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +import flash.tools.debugger.NoResponseException; +import flash.tools.debugger.NotConnectedException; +import flash.tools.debugger.NotSuspendedException; +import flash.tools.debugger.Session; +import flash.tools.debugger.Value; +import flash.tools.debugger.Variable; +import flash.tools.debugger.concrete.PlayerSession; +import flash.tools.debugger.events.FaultEvent; + +/** + * A VariableFacade provides a wrapper around a Variable object + * that provides a convenient way of storing parent information. + * + * Don't ask me why we didn't just add a parent member to + * Variable and be done with it. + */ +public class VariableFacade implements Variable +{ + Variable m_var; + long m_context; + String m_name; + String m_path; + int m_isolateId; + + public VariableFacade(Variable v, long context, int m_isolateId) { init(context, v, null, m_isolateId); } + public VariableFacade(long context, String name, int m_isolateId) { init(context, null, name, m_isolateId); } + + void init(long context, Variable v, String name, int isolateId) + { + m_var = v; + m_context = context; + m_name = name; + m_isolateId = isolateId; + } + + /** + * The variable interface + */ + public String getName() { return (m_var == null) ? m_name : m_var.getName(); } + public String getQualifiedName() { return (m_var == null) ? m_name : m_var.getQualifiedName(); } + public String getNamespace() { return m_var.getNamespace(); } + public int getLevel() { return m_var.getLevel(); } + public String getDefiningClass() { return m_var.getDefiningClass(); } + public int getAttributes() { return m_var.getAttributes(); } + public int getScope() { return m_var.getScope(); } + public boolean isAttributeSet(int variableAttribute) { return m_var.isAttributeSet(variableAttribute); } + public Value getValue() { return m_var.getValue(); } + public boolean hasValueChanged(Session s) { return m_var.hasValueChanged(s); } + public FaultEvent setValue(Session s, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException + { + return ((PlayerSession)s).setScalarMember(m_context, getQualifiedName(), type, value, m_var.getIsolateId()); + } + @Override + public String toString() { return (m_var == null) ? m_name : m_var.toString(); } + public String getPath() { return m_path; } + public void setPath(String path) { m_path = path; } + public boolean needsToInvokeGetter() { return m_var.needsToInvokeGetter(); } + public void invokeGetter(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException + { + m_var.invokeGetter(s); + } + + /** + * Our lone get context (i.e. parent) interface + */ + public long getContext() { return m_context; } + public Variable getVariable() { return m_var; } + @Override + public int getIsolateId() { + return m_isolateId; + } +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/java/flex/tools/debugger/cli/WatchAction.java ---------------------------------------------------------------------- diff --git a/debugger/src/main/java/flex/tools/debugger/cli/WatchAction.java b/debugger/src/main/java/flex/tools/debugger/cli/WatchAction.java new file mode 100644 index 0000000..3229928 --- /dev/null +++ b/debugger/src/main/java/flex/tools/debugger/cli/WatchAction.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package flex.tools.debugger.cli; + +import flash.tools.debugger.Watch; + +/** + * An object that relates a CLI debugger watchpoint with the + * actual Watch obtained from the Session + */ +public class WatchAction +{ + Watch m_watch; + int m_id; + + public WatchAction(Watch w) + { + init(w); + } + + void init(Watch w) + { + m_watch = w; + m_id = BreakIdentifier.next(); + } + + /* getters */ + public int getId() { return m_id; } + public long getVariableId() { return m_watch.getValueId(); } + public int getKind() { return m_watch.getKind(); } + public Watch getWatch() { return m_watch; } + + public String getExpr() + { + String memberName = m_watch.getMemberName(); + int namespaceSeparator = memberName.indexOf("::"); //$NON-NLS-1$ + if (namespaceSeparator != -1) + memberName = memberName.substring(namespaceSeparator + 2); + return "#"+getVariableId()+"."+memberName; //$NON-NLS-1$ //$NON-NLS-2$ + } + + /* setters */ + public void resetWatch(Watch w) { m_watch = w; } +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerBURM.jbg ---------------------------------------------------------------------- diff --git a/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerBURM.jbg b/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerBURM.jbg new file mode 100644 index 0000000..d2918be --- /dev/null +++ b/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerBURM.jbg @@ -0,0 +1,336 @@ +package flash.tools.debugger.expression; + +header +{ + /* + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + AS3DebuggerBURM.java is a Bottom-Up Rewrite Machine for ActionScript 3.0. + + A BURM recognizes patterns of nodes within an tree (in this case, an + abstract syntax tree for AS 3.0 expressions) and performs rule-based reduction + on them (in this case producing DebuggerValues). + + AS3DebuggerBURM.java is generated from AS3DebuggerBURM.jbg using JBurg, an open-source + Java implementation of a Bottom-Up Rewrite Generator. + + The most important entry point of this class is burm(), + which is called by the code generator. + */ + + import static org.apache.flex.abc.ABCConstants.*; + import static org.apache.flex.compiler.tree.ASTNodeID.*; + + import org.apache.flex.compiler.constants.IASLanguageConstants; + import org.apache.flex.compiler.exceptions.BURMAbortException; + import org.apache.flex.compiler.problems.*; + import org.apache.flex.compiler.internal.semantics.SemanticUtils; + import org.apache.flex.compiler.tree.ASTNodeID; + import org.apache.flex.compiler.tree.as.IASNode; + import org.apache.flex.compiler.tree.as.ITryNode; +} + +INodeType IASNode; +OpcodeType ASTNodeID; + +/* + * The I-node type is IASNode, and it has its own adapter. + */ +INodeAdapter org.apache.flex.compiler.internal.as.codegen.IASNodeAdapter; + +// Generate Java output. +Language java; + +// Return type of all the reductions +ReturnType Object; + +/** + * This is a name to use in an expression context. + * + * TODO: What type should this be? + */ +ReturnType name = Object; + +ReturnType decl_name = Object; + +/** + * Qualified name - this acts the same as a name above, but is built a little differently. + */ +ReturnType qualifiedName = Object; +ReturnType qualifiedNamePart = Object; + +/** + * This is a name used in a type annotation context, such as 'Foo' in: + * var x : Foo; + * It is a Binding, as type annotations must always be resolved. + * A type_name also allows '*', which can't happen in a general expression context. + */ +ReturnType type_name = Object; + +/** + * This is a name used in a new context, such as 'Foo' in: + * new Foo(); + * We can do additional analysis when the new expression resolves to a Type, which + * is why we have a special name for the new expression. + */ +ReturnType new_type_name = Object; + +ReturnType dottedNamePart = String; + +ReturnType non_resolving_identifier = String; + +ReturnType runtime_name_expression = Object; +ReturnType multinameL = Object; +ReturnType e4x_literal = String; + +ReturnType integer_constant = Integer; +ReturnType uint_constant = Long; +ReturnType double_constant = Double; +ReturnType string_constant = String; +ReturnType boolean_constant = Boolean; +ReturnType float_constant = Float; + +ReturnType numeric_constant = Number; + +ReturnType constant_value = Object; + +/** + * Value to use to indicate a cost that is not feasible + */ +JBurg.Constant ERROR_TRAP = 268435456; + +{ + final static boolean NEED_VALUE = true; + final static boolean DISCARD_VALUE = false; + + + /** + * The reducer has all the implementation + * logic for the rewrite; the BURM constructed + * by this specification drives that logic. + */ + AS3DebuggerReducer reducer; + + + /* + * ** Cost functions ** + * Cost functions are Java code that returns an int value. + * The value is used to compute the cost of a particular + * candidate reduction. The BURM searches for the lowest + * total cost sequence of reductions to transform the input + * AST into a value, so low values mean "good cost," higher + * values mean "less desirable." The total cost of a reduction + * is always strictly less than Integer.MAX_VALUE; a cost of + * Integer.MAX_VALUE tells the pattern matcher that the + * reduction is not feasible. + */ + + + /** + * @return "feasible" if the reducer can reduce this to a dotted name. + */ + int isDottedName(IASNode iNode) + { + return reducer.isDottedName(iNode); + } + + /** + * @return "feasible" if the reducer can reduce this to a package name. + */ + int isPackageName(IASNode iNode) + { + return reducer.isPackageName(iNode); + } + + /** + * @return "feasible" if this node's qualifier is a compile-time constant. + */ + int qualifierIsCompileTimeConstant(IASNode iNode) + { + return reducer.qualifierIsCompileTimeConstant(iNode); + } + + /** + * @return "feasible" if this node can be resolved to a compile-time constant. + */ + int isCompileTimeConstant(IASNode iNode) + { + return reducer.isCompileTimeConstant(iNode); + } + + /** + * @return "feasible" if this function call node can be resolved to a compile-time constant function. + */ + int isCompileTimeConstantFunction(IASNode iNode) + { + return reducer.isCompileTimeConstantFunction(iNode); + } + + /** + * @return "feasible" if this binary node has at least one expression that is + * of type "float". + */ + int isFloatBinOp(IASNode iNode) + { + return reducer.isFloatBinOp(iNode); + } + + /** + * @return "feasible" if this node is for 'new Array()'. + */ + int isEmptyArrayConstructor(IASNode iNode) + { + return reducer.isEmptyArrayConstructor(iNode); + } + + /** + * @return "feasible" if this node is for 'new Object()'. + */ + int isEmptyObjectConstructor(IASNode iNode) + { + return reducer.isEmptyObjectConstructor(iNode); + } + + /** + * @return "feasible" if this node resolves to a type definition. + */ + int isKnownType(IASNode iNode) + { + return reducer.isKnownType(iNode); + } + + /** + * @return "feasible" if the type parameter resolves to a type definition. + */ + int parameterTypeIsConstant(IASNode iNode) + { + return reducer.parameterTypeIsConstant(iNode); + } + + /** + * recordError is a convenience method for error reductions; + * it adds a problem to the current set of problems and + */ + Object recordError(ICompilerProblem problem) + { + return new Object(); + } + + int isIntLiteral(IASNode iNode) + { + return reducer.isIntLiteral(iNode); + } + + int isUintLiteral(IASNode iNode) + { + return reducer.isUintLiteral(iNode); + } + + int isDoubleLiteral(IASNode iNode) + { + return reducer.isDoubleLiteral(iNode); + } + + int isFloatLiteral(IASNode iNode) + { + return reducer.isDoubleLiteral(iNode); + } + +} + +/* + * Error recovery routine: deduce what we can from the problem + * tree, then abort this BURM with an exception that the caller + * can catch and ignore. + */ +DefaultErrorHandler +{ + BURMAbortException.abort(); +} + +/* + * Patterns and rules are stored in their own, shareable file. + */ +JBurg.include "../compiler/src/org/apache/flex/compiler/internal/as/codegen/CmcPatterns.jbg" + + +/* + * This pattern is used by the debugger to call special functions + * like $obj() when handling the âprint #ObjectRefNumberâ feature. + * I donât think I would have a rule like this in the compiler as + * calling foo() where foo is just an identifier is probably likely + * and âfooâ has to be resolved from an identifier to, in most cases, + * a MemberAccessExpression, but I donât think folks print function + * calls in the debugger. And even if they do, there is a chance it + * will work anyway. + * + * If the debugger is missing the ability to print something, it may be + * that a new Pattern and Rule need to be added. First, set a breakpoint + * in DebuggerExpressionEvaluator at the call to burm.burm(). Examine + * the node to make sure it was parsed correctly into a tree of nodes. + * + * If the node tree is correct, step into the burm() call. You should + * see the code call label() and return a different tree of instances. + * For lots of things, there are custom classes like: + * JBurgAnnotation_FunctionCallID_2_n + * which represents a FunctionCallID in the AST. If the top node is an + * instance of JBurgAnnotationGeneral, that means that the BURM did not + * expect a node of that type. This may be true throughout the tree + * but Iâve seen that ContainerID, which represents parenthesis around + * parameters to a function also becomes a JBurgAnnotationGeneral because + * the BURM theoretically never examines that node in the tree, it examines + * its children. + * + * If a pattern is missing, add the pattern. A Pattern seems to be a node ID + * with a parameter list of the children node IDâs or other Patterns. The + * names you use in the parameter list will be used in the reduction function + * later. + * + * Then add a Rule for it in AS3DebuggerRules.jbg. + * + * It seems like the BURM + * operates on âlevelsâ of constructs, the higher order construct being an + * âexpressionâ. Expressions are composed of other expressions or lower-level + * constructs like name or constants (like uint_constant) or literals (like + * boolean_literal. It seems like, even if the string you want the debugger + * to print is just a string or number, it may get âreducedâ by the BURM into + * higher-level things first. + * + * So, I think most new Rules for complex patterns will be an expression, + * but if it doesnât recognize a constant of some sort you may need to + * add that. Anyway, you add an expression like the one in this change list + * and then assign a value (or cost) for the rule. Lower numbers + * (but greater than 0) win. The actual cost is computed by factoring in the + * cost of reducing the children. + * + * On the next line below the rule and its cost, add, for most things, a + * JBurg.reduction method call that you will write to do the reduction. Pass + * in the node (__p) and any of the parameters from the Pattern. + * + * Next, in AS3DebuggerReducer.java, add that reduction method and fill + * in the method body. Try to look for similar reductions and copy what + * they do. For the debugger, you eventually want to return a DebuggerValue. + * DebuggerValues seem to be what expressions reduce to and youâll find they + * get passed into the reduction method as well. + * + */ +// $obj() +Pattern functionCallSpecial +FunctionCallID(IdentifierID(void) specialName, ContainerID(expression args*)); + + +JBurg.include "AS3DebuggerRules.jbg" http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerCompoundAssignmentRules.jbg ---------------------------------------------------------------------- diff --git a/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerCompoundAssignmentRules.jbg b/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerCompoundAssignmentRules.jbg new file mode 100644 index 0000000..5a6b955 --- /dev/null +++ b/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerCompoundAssignmentRules.jbg @@ -0,0 +1,28 @@ +/* + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +expression = Pattern compoundAssignToName : 0 +JBurg.Reduction reducer.compoundBinaryAssignmentNameExpr(__p, operand, expr, Op_COMPOUND_ASSIGN); + + +expression = Pattern compoundAssignToMember : 0 +JBurg.Reduction reducer.compoundBinaryAssignmentMemberExpr(__p, stem, member, expr, Op_COMPOUND_ASSIGN); + +expression = Pattern compoundAssignToBracket : 0 +JBurg.Reduction reducer.compoundBinaryAssignmentBracketExpr(__p, stem, index, expr, Op_COMPOUND_ASSIGN); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerRules.jbg ---------------------------------------------------------------------- diff --git a/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerRules.jbg b/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerRules.jbg new file mode 100644 index 0000000..9664a03 --- /dev/null +++ b/debugger/src/main/jburg/flash/tools/debugger/expression/AS3DebuggerRules.jbg @@ -0,0 +1,746 @@ +/* + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ +Pattern foldedExpressionPattern +FoldedExpressionID(void); + +foldedExpression = Pattern foldedExpressionPattern: 1 +JBurg.Reduction reducer.reduceLazyExpression(__p); + +Pattern logicalAndExprLazy +Op_LogicalAndID(expression l, foldedExpression r); + +Pattern logicalOrExprLazy +Op_LogicalOrID(expression l, foldedExpression r); + +/* + * AS3DebuggerRules.jbg holds the rewrite rules for debugger support. + * @see compiler/CmcPatterns.jbg, which holds the corresponding patterns. + */ + +/* + * Assignment to a simple name. + */ +expression = Pattern assignToNameExpr: 2 +JBurg.Reduction reducer.reduce_assignToNameExpr_to_expression(__p, lval,r); + +/* + * Assignment to a more general lvalue. + */ +expression = Pattern assignToMemberExpr : 10 +JBurg.Reduction reducer.reduce_assignToMemberExpr_to_expression(__p, stem, member, r); + +/* + * Assignment to a[i] type lvalue. + */ +expression = Pattern assignToBracketExpr: 1 +JBurg.Reduction reducer.reduce_assignToBracketExpr_to_expression(__p, stem, index, r, false); + +expression = Pattern assignToSuperBracketExpr: 1 +JBurg.Reduction reducer.reduce_assignToBracketExpr_to_expression(__p, null, index, r, true); + +/* + * Assignment to qualified names and attributes. + */ +expression = Pattern assignToQualifiedMemberExpr : 1 +JBurg.Reduction reducer.reduce_assignToQualifiedMemberExpr(__p, stem, qualifier, member, r, NEED_VALUE); + +expression = Pattern assignToQualifiedRuntimeMemberExpr : 1 +JBurg.Reduction reducer.reduce_assignToQualifiedRuntimeMemberExpr(__p, stem, qualifier, member, r, NEED_VALUE); + +expression = Pattern assignToQualifiedAttributeExpr : 1 +JBurg.Reduction reducer.reduce_assignToQualifiedAttributeExpr(__p, stem, qualifier, attribute, r, NEED_VALUE); + +expression = Pattern assignToUnqualifiedRuntimeAttributeExpr : 1 +JBurg.Reduction reducer.reduce_assignToUnqualifiedRuntimeAttributeExpr(__p, stem, rt_attr_name, r, NEED_VALUE); + +expression = Pattern assignToUnqualifiedRuntimeDescendantsAttributeExpr : 1 +JBurg.Reduction reducer.reduce_assignToUnqualifiedRuntimeAttributeExpr(__p, stem, rt_attr_name, r, NEED_VALUE); + +/* + * Assignment to descendants. + */ +expression = Pattern assignToDescendantsExpr : 1 +JBurg.Reduction reducer.reduce_assignToDescendantsExpr(__p, stem, member, r, NEED_VALUE); + +/* + * Error trap for diagnosing parser/CG mismatches. + * The cost is unfeasibly high for a normal reduction, + * so this will only be chosen if no other reduction works. + */ +expression = Op_AssignId(expression non_lvalue, expression rvalue ) : ERROR_TRAP +JBurg.Reduction reducer.error_reduce_Op_AssignId(__p, non_lvalue, rvalue); + +/* + * Miscellaneous void expressions. + */ +expression = Pattern nilExpr : 1 +JBurg.Reduction reducer.reduce_nilExpr_to_expression(__p); + +/* + * Binary logical operators. + */ +comparison_expression = Pattern equalExpr : 1 +JBurg.Reduction reducer.binaryOp (__p, l, r, OP_equals); + +comparison_expression = Pattern neqExpr : 1 +JBurg.Reduction reducer.reduce_neqExpr (__p, l, r); + +comparison_expression = Pattern stricteqExpr : 1 +JBurg.Reduction reducer.binaryOp (__p, l, r, OP_strictequals); + +comparison_expression = Pattern strictneqExpr : 1 +JBurg.Reduction reducer.reduce_strictneqExpr (__p, l, r); + +comparison_expression = Pattern greaterThanExpr: 1 +JBurg.Reduction reducer.binaryOp (__p, l, r, OP_greaterthan); + +comparison_expression = Pattern greaterThanEqExpr: 1 +JBurg.Reduction reducer.binaryOp (__p, l, r, OP_greaterequals); + +comparison_expression = Pattern lessExpr : 1 +JBurg.Reduction reducer.binaryOp (__p, l, r, OP_lessthan); + +comparison_expression = Pattern lessEqExpr : 1 +JBurg.Reduction reducer.binaryOp (__p, l, r, OP_lessequals); + +// Closure rule: any comparison_expression +// is also an expression without further conversion. +expression = comparison_expression; + +expression = Pattern logicalAndExprLazy : 5 +JBurg.Reduction reducer.reduce_logicalAndExpr (__p, l, r); + +expression = Pattern logicalOrExprLazy : 5 +JBurg.Reduction reducer.reduce_logicalOrExpr (__p, l, r); + +expression = Pattern logicalNotExpr : 1 +JBurg.Reduction reducer.reduce_logicalNotExpr (__p, expr); + +expression = Pattern ternaryExpr : 1 +JBurg.Reduction reducer.reduce_ternaryExpr (__p, test, when_true, when_false); + +/* + * Binary arithmetic operators. + */ + +expression = Pattern divideExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_divide); + +expression = Pattern multExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_multiply); + +expression = Pattern moduloExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_modulo); + +expression = Pattern addExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_add); + +expression = Pattern subtractExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_subtract); + +expression = Pattern bitwiseLeftShiftExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_lshift); + +expression = Pattern bitwiseRightShiftExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_rshift); + +expression = Pattern bitwiseUnsignedRightShiftExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_urshift); + +expression = Pattern bitwiseAndExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_bitand); + +expression = Pattern bitwiseOrExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_bitor); + +expression = Pattern bitwiseXorExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, l, r, OP_bitxor); + +/* + * pre/postfix unary operators. + */ + +expression = Pattern postIncNameExpr : 7 +JBurg.Reduction reducer.reduce_postIncNameExpr(__p, unary, true); + +expression = Pattern preIncNameExpr : 7 +JBurg.Reduction reducer.reduce_preIncNameExpr(__p, unary, true); + +expression = Pattern preIncMemberExpr : 8 +JBurg.Reduction reducer.reduce_preIncMemberExpr(__p, stem, field, true); + +expression = Pattern postIncMemberExpr: 8 +JBurg.Reduction reducer.reduce_postIncMemberExpr(__p, stem, field, true); + +expression = Pattern preIncBracketExpr: 8 +JBurg.Reduction reducer.reduce_preIncBracketExpr(__p, stem, index, true); + +expression = Pattern postIncBracketExpr: 8 +JBurg.Reduction reducer.reduce_postIncBracketExpr(__p, stem, index, true); + +expression = Pattern postDecNameExpr : 7 +JBurg.Reduction reducer.reduce_postDecNameExpr(__p, unary, true); + +expression = Pattern preDecNameExpr : 7 +JBurg.Reduction reducer.reduce_preDecNameExpr(__p, unary, true); + +expression = Pattern preDecMemberExpr : 8 +JBurg.Reduction reducer.reduce_preDecMemberExpr(__p, stem, field, true); + +expression = Pattern postDecMemberExpr: 8 +JBurg.Reduction reducer.reduce_postDecMemberExpr(__p, stem, field, true); + +expression = Pattern preDecBracketExpr: 8 +JBurg.Reduction reducer.reduce_preDecBracketExpr(__p, stem, index, true); + +expression = Pattern postDecBracketExpr: 8 +JBurg.Reduction reducer.reduce_postDecBracketExpr(__p, stem, index, true); + +/* + * Unary expressions. + */ +expression = Pattern unaryMinusExpr: 1 +JBurg.Reduction reducer.unaryOp(__p, e, OP_negate); + +expression = Pattern unaryPlusExpr: 0 +{ + return reducer.unaryOp(__p, e, OP_convert_d); +} + +expression = Pattern typeofExpr: 10 +JBurg.Reduction reducer.reduce_typeof_expr(__p, expr); + +expression = Pattern typeofName: 1 +JBurg.Reduction reducer.reduce_typeof_name(__p, n); + +expression = Pattern bitNotExpr: 1 +JBurg.Reduction reducer.unaryOp(__p, unary, OP_bitnot); + +/* + * Miscellaneous binary expressions. + */ +expression = Pattern istypeExprLate : 1 +JBurg.Reduction reducer.binaryOp(__p, expr, typename, OP_istypelate); + +expression = Pattern astypeExprLate : 1 +JBurg.Reduction reducer.binaryOp(__p, expr, typename, OP_astypelate); + +expression = Pattern inExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, needle, haystack, OP_in); + +expression = Pattern instanceofExpr : 1 +JBurg.Reduction reducer.binaryOp(__p, expr, typename, OP_instanceof); + +// lhs += rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_add" \ + compoundAssignToName="assignPlusToNameExpr" \ + compoundAssignToMember="assignPlusToMemberExpr" \ + compoundAssignToBracket="assignPlusToBracketExpr" + +// lhs *= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_multiply" \ + compoundAssignToName="assignMultiplyToNameExpr" \ + compoundAssignToMember="assignMultiplyToMemberExpr" \ + compoundAssignToBracket="assignMultiplyToBracketExpr" + +// lhs -= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_subtract" \ + compoundAssignToName="assignMinusToNameExpr" \ + compoundAssignToMember="assignMinusToMemberExpr" \ + compoundAssignToBracket="assignMinusToBracketExpr" + +// lhs /= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_divide" \ + compoundAssignToName="assignDivideToNameExpr" \ + compoundAssignToMember="assignDivideToMemberExpr" \ + compoundAssignToBracket="assignDivideToBracketExpr" + +// lhs %= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_modulo" \ + compoundAssignToName="assignModuloToNameExpr" \ + compoundAssignToMember="assignModuloToMemberExpr" \ + compoundAssignToBracket="assignModuloToBracketExpr" + +// lhs <<= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_lshift" \ + compoundAssignToName="assignLeftShiftToNameExpr" \ + compoundAssignToMember="assignLeftShiftToMemberExpr" \ + compoundAssignToBracket="assignLeftShiftToBracketExpr" + +// lhs <<= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_rshift" \ + compoundAssignToName="assignRightShiftToNameExpr" \ + compoundAssignToMember="assignRightShiftToMemberExpr" \ + compoundAssignToBracket="assignRightShiftToBracketExpr" + +// lhs >>>= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_urshift" \ + compoundAssignToName="assignUnsignedRightShiftToNameExpr" \ + compoundAssignToMember="assignUnsignedRightShiftToMemberExpr" \ + compoundAssignToBracket="assignUnsignedRightShiftToBracketExpr" + +// lhs &= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_bitand" \ + compoundAssignToName="assignBitwiseAndToNameExpr" \ + compoundAssignToMember="assignBitwiseAndToMemberExpr" \ + compoundAssignToBracket="assignBitwiseAndToBracketExpr" + +// lhs |= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_bitor" \ + compoundAssignToName="assignBitwiseOrToNameExpr" \ + compoundAssignToMember="assignBitwiseOrToMemberExpr" \ + compoundAssignToBracket="assignBitwiseOrToBracketExpr" + +// lhs ^= rhs +JBurg.include "AS3DebuggerCompoundAssignmentRules.jbg" \ + Op_COMPOUND_ASSIGN="OP_bitxor" \ + compoundAssignToName="assignBitwiseXorToNameExpr" \ + compoundAssignToMember="assignBitwiseXorToMemberExpr" \ + compoundAssignToBracket="assignBitwiseXorToBracketExpr" + +/* + * Primary expressions. + */ +expression = Pattern memberAccessExpr : 10 +JBurg.Reduction reducer.reduce_memberAccessExpr (__p, stem, member, OP_getproperty); + +expression = Pattern qualifiedMemberAccessExpr : 10 +JBurg.Reduction reducer.reduce_qualifiedMemberAccessExpr(__p, stem, qualifier, member, OP_getproperty); + +expression = Pattern qualifiedDescendantsExpr : 10 +JBurg.Reduction reducer.reduce_qualifiedMemberAccessExpr(__p, stem, qualifier, member, OP_getdescendants); + +expression = Pattern qualifiedDescendantsRuntimeExpr : 1 +JBurg.Reduction reducer.reduce_qualifiedAttributeRuntimeMemberExpr(__p, stem, qualifier, runtime_member, OP_getdescendants); + +expression = Pattern qualifiedAttributeExpr : 1 +JBurg.Reduction reducer.reduce_qualifiedAttributeExpr(__p, stem, qualifier, member, OP_getproperty); + +expression = Pattern qualifiedDescendantsAttributeExpr : 1 +JBurg.Reduction reducer.reduce_qualifiedAttributeExpr(__p, stem, qualifier, member, OP_getdescendants); + +expression = Pattern qualifiedAttributeRuntimeMemberExpr : 1 +JBurg.Reduction reducer.reduce_qualifiedAttributeRuntimeMemberExpr(__p, stem, qualifier, runtime_member, OP_getproperty); + +expression = Pattern qualifiedDescendantsRuntimeMemberExpr : 1 +JBurg.Reduction reducer.reduce_qualifiedAttributeRuntimeMemberExpr(__p, stem, qualifier, runtime_member, OP_getdescendants); + +// Prefer the basic memberAccessExpr pattern where feasible. +expression = Pattern qualifiedMemberRuntimeNameExpr : 100 +JBurg.Reduction reducer.reduce_qualifiedMemberRuntimeNameExpr(__p, stem, qualifier, runtime_member); + +expression = Pattern unqualifiedAttributeExpr : 1 +JBurg.Reduction reducer.reduce_unqualifiedAttributeExpr(__p, stem, expr, OP_getproperty); + +expression = Pattern unqualifiedDescendantsAttributeExpr : 1 +JBurg.Reduction reducer.reduce_unqualifiedAttributeExpr(__p, stem, expr, OP_getdescendants); + +expression = Pattern runtimeAttributeExp : 1 +JBurg.Reduction reducer.reduce_runtimeAttributeExp(__p, expr); + +expression = Pattern arrayIndexExpr : 1 +JBurg.Reduction reducer.reduce_arrayIndexExpr (__p, stem, false, index); + +expression = Pattern superIndexExpr : 1 +JBurg.Reduction reducer.reduce_arrayIndexExpr (__p, null, true, index); + +expression = Pattern functionCallExpr : 3 // Cost artificially inflated +JBurg.Reduction reducer.reduce_functionCallExpr_to_expression (__p, method_name, args); + +expression = Pattern functionCallSpecial : 1 // We want this to win over other function calls to simple names +JBurg.Reduction reducer.reduce_functionCallSpecial_to_expression (__p, specialName, args); + +expression = Pattern newVectorLiteral: 0 +JBurg.Reduction reducer.reduce_newVectorLiteral(__p, literal); + +// 'new Whatever(...)' has cost 2, so it gets beaten by the two previous rules. +// Use this reduction if the type is known; +// it allows much better error checking of the constructor call. +expression = Pattern newExpr : 2 +JBurg.Reduction reducer.reduce_newExpr (__p, class_binding, args); + +expression = Pattern newMemberProperty: 10 +JBurg.Reduction reducer.reduce_newMemberProperty(__p, stem, member, args); + +expression = Pattern newAsRandomExpr : 30 +JBurg.Reduction reducer.reduce_newAsRandomExpr (__p, random_expr, args); + +expression = Pattern functionCallOfSuperclassMethod : 2 +JBurg.Reduction reducer.reduce_functionCallOfSuperclassMethod_to_expression (__p, null, method_name, args); + +expression = Pattern functionCallOfExplicitObjectSuperclassMethod : 2 +JBurg.Reduction reducer.reduce_functionCallOfSuperclassMethod_to_expression (__p, stem, method_name, args); + +expression = Pattern functionAsMemberExpr : 4 // Cost inflated to prefer functionCallOfSuperclassMethod +JBurg.Reduction reducer.reduce_functionAsMemberExpr (__p, stem, method_name, args); + +expression = Pattern functionAsBracketExpr : 4 +JBurg.Reduction reducer.reduce_functionAsBracketExpr (__p, stem, index, args); + +expression = Pattern functionAsRandomExpr : 30 +JBurg.Reduction reducer.reduce_functionAsRandomExpr (__p, random_expr, args); + +/* + * Delete expressions. + */ +expression = Pattern deleteNameExpr: 2 +JBurg.Reduction reducer.reduce_deleteNameExpr(__p, n); + +expression = Pattern deleteBracketExpr: 1 +JBurg.Reduction reducer.reduce_deleteBracketExpr(__p, stem, index); + +expression = Pattern deleteAtBracketExpr: 1 +JBurg.Reduction reducer.reduce_deleteAtBracketExpr(__p, stem, index); + +expression = Pattern deleteMemberExpr: 1 +JBurg.Reduction reducer.reduce_deleteMemberExpr(__p, stem, field); + +expression = Pattern deleteRuntimeNameExpr: 1 +JBurg.Reduction reducer.reduce_deleteRuntimeNameExpr(__p, stem, rt_name); + +expression = Pattern deleteDescendantsExpr: 1 +JBurg.Reduction reducer.reduce_deleteDescendantsExpr(__p, stem, field); + +expression = Pattern deleteAnyExprExprExpr: 2000 +JBurg.Reduction reducer.reduce_deleteExprExprExpr(__p, expr); + +/* + * Comma expression. + */ +expression = Pattern commaExpr: 0 +JBurg.Reduction reducer.reduce_commaExpr(__p, payload_expr, exprs); + +/* + * Names and reference expressions built from names. + */ +name = Pattern simpleName : 0 +JBurg.Reduction reducer.reduce_simpleName (__p); + +qualifiedNamePart = Pattern simpleName: 0 +JBurg.Reduction reducer.getIdentifierContent(__p); + +name = Pattern typedVariableExpression : 0 +JBurg.Reduction reducer.reduce_typedVariableExpression (__p, var_name, var_type); + +dottedNamePart = Pattern dottedName : 0 +JBurg.Reduction reducer.reduce_by_concatenation (__p, first, second); + +dottedNamePart = qualifiedNamePart; + +name = Pattern dottedName : isDottedName() +JBurg.Reduction reducer.dottedName (__p, first, second); + +name = Pattern dottedName : isPackageName() +JBurg.Reduction reducer.errorPackageName(__p, first, second); + +// This reduction handles an entire dotted name subtree. +name = Pattern fullName : 0 +JBurg.Reduction reducer.dottedName(__p, first, second); + +// qualified namespace is the same as a full name, +// it's just what gets produced when we're in a use namespace directive +// use namespace a.b.Foo; +name = Pattern qualifiedNamespaceName : 0 +JBurg.Reduction reducer.dottedName(__p, first, second); + +// This reduction handles the bar.T part of foo.bar.T +dottedNamePart = Pattern fullName : 0 +JBurg.Reduction reducer.reduce_by_concatenation (__p, first, second); + +name = Pattern superAccess : 0 +JBurg.Reduction reducer.reduce_superAccess (__p, qualified_name); + +// A bare parameterized type name can only be +// used as a type annotation. In code it's necessary +// to expand it into an expression that calls applytype. +// Note: this reduction gets an error-trapping cost if +// the parameter type is not constant; this forces +// expression-oriented reductions to try and reduce +// the type parameter as an expression. +type_name = Pattern parameterizedName : parameterTypeIsConstant() +JBurg.Reduction reducer.reduce_parameterizedTypeName (__p, base, param); + +// A name can be a type_name, which in combination with +// the reduction above yields the set of possible type_names: +// identifiers and * +type_name = name : 1 +JBurg.Reduction reducer.reduce_nameToTypeName(name, true); + +// The 'new' expression takes a pseduo-type name: +// when it can be resolved, the semantic analysis +// code can check the constructor. When it can't +// be resolved, it's a generalized expression. +new_type_name = name; + +// Inflate this cost so it's only selected +// if the type_name isn't a name. +new_type_name = type_name : 20 +JBurg.Reduction reducer.reduce_nameToTypeName(type_name, false); + +// The parameter of a parameterized type expression may be an expression +// or a type name; if it resolves to a type, it's a type name. +type_param_expression = name: isKnownType() +JBurg.Reduction reducer.reduce_typeNameParameterAsType(__p, name); + +// any expression can be used as a type param name in an expression context. +type_param_expression = expression; + +expression = Pattern parameterizedTypeExpression : 1 +JBurg.Reduction reducer.reduce_parameterizedTypeExpression (__p, base, param); + +expression = name: 2000 +JBurg.Reduction reducer.transform_name_to_expression(__p, name); + +type_name = Pattern voidExpr : 0 +JBurg.Reduction reducer.reduce_voidExpr_to_type_name(__p); + +name = Pattern attributeName : 0 +JBurg.Reduction reducer.reduce_attributeName (__p, attr_name); + +// ns1::foo and rt_ns::foo look alike to +// the parser, so they must be disambiguated +// by checking their semantic annotations. +name = Pattern namespaceAccess : qualifierIsCompileTimeConstant() +JBurg.Reduction reducer.reduce_namespaceAccess (__p, qualifier, qualified_name); + +// Error trap for an unresolved namespace in a context +// where it must be declared. +name = Pattern namespaceAccess: ERROR_TRAP +JBurg.Reduction reducer.error_namespaceAccess(__p, qualifier, qualified_name); + +// A namespace-qualified name reference whose name +// is a runtime expression, e.g., ns1::[foo]. +// The parser doesn't know the difference between +// ns1::[foo] and rt_ns::[foo], so we need a cost +// function to disambiguate the tree. +runtime_name_expression = Pattern namespaceMultinameL: qualifierIsCompileTimeConstant() +JBurg.Reduction reducer.reduce_namespaceMultinameL(__p, qualifier, expr); + +runtime_name_expression = Pattern namespaceRTQName : 2000 +JBurg.Reduction reducer.reduce_namespaceRTQName (__p, qualifier, qualfied_name); + +expression = Pattern embedExpression : 2 +JBurg.Reduction reducer.reduce_embed(__p); + +/* + * E4X expressions (except literals) + */ + +expression = Pattern e4xFilter : 3 +JBurg.Reduction reducer.reduce_e4xFilter (__p, stem, filter); + +runtime_name_expression = Pattern namespaceRTQNameL : 2000 +JBurg.Reduction reducer.reduce_namespaceRTQNameL (__p, qualifier, expr); + +expression = runtime_name_expression : 1 +JBurg.Reduction reducer.transform_runtime_name_expression(__p, runtime_name_expression); + +expression = Pattern runtimeNameExpression: 1 +JBurg.Reduction reducer.reduce_runtimeNameExpression(__p, expr); + +name = Pattern namespaceAsName: 1 +JBurg.Reduction reducer.reduce_namespaceAsName_to_name(__p); + +expression = Pattern namespaceAsName: 1 +JBurg.Reduction reducer.reduce_namespaceAsName_to_expression(__p); + +void_expression = Pattern assignToRuntimeNameExpr: 1 +JBurg.Reduction reducer.reduce_assignToRuntimeNameExpr(__p, lval, r, DISCARD_VALUE); + +expression = Pattern assignToRuntimeNameExpr: 1 +JBurg.Reduction reducer.reduce_assignToRuntimeNameExpr(__p, lval, r, NEED_VALUE); + +expression = Pattern descendantsExpression : 1 +JBurg.Reduction reducer.reduce_memberAccessExpr(__p, stem, descendants, OP_getdescendants); + +/* + * Literals. + */ +e4x_literal = Pattern XMLLiteral : 0 +JBurg.Reduction reducer.getStringLiteralContent (__p); + +string_constant = e4x_literal; + +expression = Pattern XMLContent: 1 +JBurg.Reduction reducer.reduce_XMLContent(__p, exprs); + +expression = Pattern XMLList: 2 +JBurg.Reduction reducer.reduce_XMLList(__p, exprs); + +expression = Pattern XMLListConst: 1 +JBurg.Reduction reducer.reduce_XMLListConst(__p, elements); + +expression = literal; +literal = object_literal; +literal = boolean_literal; +literal = array_literal; + +expression = string_constant : 1 +JBurg.Reduction reducer.transform_string_constant(__p, string_constant); + +integer_constant = Pattern numericLiteral: isIntLiteral() +JBurg.Reduction reducer.getIntegerContent(__p); + +expression = integer_constant : 1 +JBurg.Reduction reducer.transform_integer_constant(__p, integer_constant); + +uint_constant = Pattern numericLiteral: isIntLiteral() +JBurg.Reduction reducer.getUintContent(__p); + +expression = uint_constant : 1 +JBurg.Reduction reducer.transform_uint_constant(__p, uint_constant); + +expression = boolean_constant : 1 +JBurg.Reduction reducer.transform_boolean_constant(__p, boolean_constant); + + +/** + * Constant values + */ +// Error trap for non-constant expressions +// used in a context where only a constant is valid, +// e.g., foo() in function needsConstantInit(x = foo()). +required_constant_value = expression : ERROR_TRAP +JBurg.Reduction reducer.transform_expression_to_constant_value(__p, expression); + +// A name can be used as a constant in some contexts, +// e.g., if it's a Namespace or otherwise known to be +// a compile-time constant. + +integer_constant = LiteralIntegerZeroID(void) : 1 +JBurg.Reduction reducer.getIntegerZeroContent(__p); + +integer_constant = LiteralIntegerID(void) : 1 +JBurg.Reduction reducer.getIntegerContent(__p); + +uint_constant = LiteralIntegerZeroID(void) : 1 +JBurg.Reduction reducer.getIntegerZeroContentAsLong(__p); + +float_constant = Pattern numericLiteral : isFloatLiteral() +JBurg.Reduction reducer.getFloatContent(__p); + +constant_value = Pattern nullLiteral : 0 +JBurg.Reduction reducer.reduce_nullLiteral_to_constant_value (__p); + +constant_value = Pattern void0Literal: 0 +JBurg.Reduction reducer.reduce_void0Literal_to_constant_value(__p); + +constant_value = Pattern voidConstant: 0 +JBurg.Reduction reducer.reduce_voidOperator_to_constant_value(__p, value); + +boolean_constant = Pattern booleanLiteral: 0 +JBurg.Reduction reducer.reduce_booleanLiteral(__p); + +string_constant = Pattern stringLiteral : 0 +JBurg.Reduction reducer.getStringLiteralContent (__p); + +numeric_constant = integer_constant; +numeric_constant = uint_constant; +numeric_constant = double_constant; +numeric_constant = float_constant; + + +constant_value = string_constant : 1 +JBurg.Reduction reducer.transform_string_constant_to_constant(__p, string_constant); + +constant_value = boolean_constant : 1 +JBurg.Reduction reducer.transform_boolean_constant_to_constant(__p, boolean_constant); + +constant_value = numeric_constant : 1 +JBurg.Reduction reducer.transform_numeric_constant_to_constant(__p, numeric_constant); + +required_constant_value = constant_value; + +double_constant = Pattern numericLiteral : isDoubleLiteral() +JBurg.Reduction reducer.getDoubleContent(__p); + +double_constant = Pattern doubleLiteral : isDoubleLiteral() +JBurg.Reduction reducer.getDoubleContent(__p); + +// Fallback code-gen choice if conversion to +// double failed in LiteralNumberNode.getNodeID(). +// It's not likely to work better here, +// but the BURM will emit some diagnostics. +double_constant = Pattern numericLiteral : 3 +JBurg.Reduction reducer.getDoubleContent(__p); + +expression = double_constant : 5 +JBurg.Reduction reducer.transform_double_constant(__p, double_constant); + +expression = integer_constant : 5 +JBurg.Reduction reducer.transform_integer_constant(__p, integer_constant); + +expression = numeric_constant : 5 +JBurg.Reduction reducer.transform_numeric_constant(__p, numeric_constant); + +expression = float_constant : 5 +JBurg.Reduction reducer.transform_float_constant(__p, float_constant); + +expression = constant_value : 0 +JBurg.Reduction reducer.transform_constant_value(__p, constant_value); + +object_literal = Pattern nullLiteral : 1 +JBurg.Reduction reducer.reduce_nullLiteral_to_object_literal (__p); + +object_literal = Pattern objectLiteral : 3 +JBurg.Reduction reducer.reduce_objectLiteral (__p, elements); + +object_literal_element = Pattern objectLiteralElement : 0 +JBurg.Reduction reducer.reduce_objectLiteralElement (__p, id, value); + +non_resolving_identifier = Pattern nonResolvingIdentifier : 0 +JBurg.Reduction reducer.getIdentifierContent(__p); + +expression = non_resolving_identifier : 1 +JBurg.Reduction reducer.transform_non_resolving_identifier(__p, non_resolving_identifier); + +object_literal = Pattern regexLiteral: 5 +JBurg.Reduction reducer.reduce_regexLiteral(__p); + +object_literal = Pattern void0Literal: 1 +JBurg.Reduction reducer.reduce_void0Literal_to_object_literal(__p); + +object_literal = Pattern void0Operator: 1 +JBurg.Reduction reducer.reduce_void0Operator(__p); + +expression = Pattern voidOperator : 1 +JBurg.Reduction reducer.reduce_voidOperator_to_expression (__p, expr); + +boolean_literal = boolean_constant: 1 +JBurg.Reduction reducer.transform_boolean_constant(__p, boolean_constant); + +array_literal = Pattern arrayLiteral : 1 +JBurg.Reduction reducer.reduce_arrayLiteral (__p, elements); + +vector_literal = Pattern vectorLiteral: 1 +JBurg.Reduction reducer.reduce_vectorLiteral(__p, type_param, elements); + +decl_name = Pattern simpleName : 0 +JBurg.Reduction reducer.reduce_declName(__p); + http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseCaminoWindow.txt ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseCaminoWindow.txt b/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseCaminoWindow.txt new file mode 100644 index 0000000..1ad0279 --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseCaminoWindow.txt @@ -0,0 +1,59 @@ +-------------------------------------------------------------------------------- +-- +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-------------------------------------------------------------------------------- + +-- tell Camino browser to close all windows that have the specified URL +tell application "Camino" + -- 'closed' keeps track of whether we have closed any documents + set closed to false + + set done to false + repeat until done + set done to true + + -- Camino has some hidden windows that are not regular browser + -- windows. Those windows don't have a URL. We keep count of + -- how many windows do have a URL. + set countOfWindowsWithURL to 0 + + repeat with win in windows + if URL of win exists then + if URL of win is item 1 of argv then + close win + set closed to true + + -- since we have closed a document, we must restart the loop + set done to false + exit repeat + else + set countOfWindowsWithURL to countOfWindowsWithURL+1 + end if + end if + end repeat + end repeat + + -- if we closed at least one Safari window, and no more are + -- open, then tell Safari to exit + if closed and countOfWindowsWithURL is 0 then + quit + set closed to "appquit" + end if + + -- return true if we closed at least one window, false if not, appquit if told browser to quit + closed +end tell http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseSafariWindow.txt ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseSafariWindow.txt b/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseSafariWindow.txt new file mode 100644 index 0000000..a03b14d --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptCloseSafariWindow.txt @@ -0,0 +1,53 @@ +-------------------------------------------------------------------------------- +-- +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-------------------------------------------------------------------------------- + +-- tell Safari to close all windows that have the specified URL +tell application "Safari" + -- 'closed' keeps track of whether we have closed any documents + set closed to false + + set done to false + repeat until done + set done to true + repeat with w in windows + try + repeat with t in tabs of w + if URL of t is item 1 of argv then + close t + set closed to true + + -- since we have closed a document, we must restart the loop + set done to false + exit repeat + end if + end repeat + end try + end repeat + end repeat + + -- if we closed at least one Safari window, and no more are + -- open, then tell Safari to exit + if closed and (count of documents) is 0 then + quit + set closed to "appquit" + end if + + -- return true if we closed at least one window, false if not + closed +end tell http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptGetDefaultBrowserName.txt ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptGetDefaultBrowserName.txt b/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptGetDefaultBrowserName.txt new file mode 100644 index 0000000..c2d6f9e --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/appleScriptGetDefaultBrowserName.txt @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +-- +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-------------------------------------------------------------------------------- + +-- Note, this only works on OSX 10.4 and up +-- Returns the name of the default browser, e.g. "Safari", "Firefox", "Camino"; or "" if not known +set p to POSIX path of (path to preferences) & "com.apple.LaunchServices.plist" +tell application "System Events" to tell property list item "LSHandlerRoleAll" of (property list item 1 of property list item "LSHandlers" of property list file p whose value contains "http") to if exists then + set v to value -- now v is, for example, "com.apple.safari" + -- "application file id v" returns a file; so we are setting, for example, + -- "n" to "Safari.app" and "e" to "app" + tell application "Finder" to set {name:n, name extension:e} to application file id v + -- strip off the ".app" extension + tell (count e) + 1 to return n's text 1 thru -(1 mod it + it) +end if + +-- if we get here, we couldn't find an "http" handler, so we don't know the default browser +"" http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_da.properties ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_da.properties b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_da.properties new file mode 100644 index 0000000..a88f2e3 --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_da.properties @@ -0,0 +1,29 @@ +################################################################################ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## +################################################################################ + +functionsInFile = Funktioner i ${fileName}#${fileNumber} +unknown = ukendt +empty = <empty> +processTerminatedWithoutDebuggerConnection = Processen blev afsluttet uden at der blev etableret forbindelse til fejlfinding. +processTerminatedUnexpectedly = Handlingen blev uventet afbrudt. +serverSocketNotListening = Serversoklen lytter ikke. +functionCallsNotSupported = Den valgte afspiller underst\u00f8tter ikke funktionskald +watchpointsNotSupported = Den valgte afspiller underst\u00f8tter ikke overv\u00e5gningspunkter +exceptionBreakpointsNotSupported = Den valgte afspiller underst\u00f8tter ikke undtagelsespausepunkter +operatorNotSupported = Den valgte afspiller underst\u00f8tter ikke operatoren "${operator}" http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_de.properties ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_de.properties b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_de.properties new file mode 100644 index 0000000..4a300bf --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_de.properties @@ -0,0 +1,29 @@ +################################################################################ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## +################################################################################ + +functionsInFile = Funktionen in ${fileName}#${fileNumber} +unknown = unbekannt +empty = <leer> +processTerminatedWithoutDebuggerConnection = Der Vorgang wurde beendet, ohne dass eine Verbindung mit dem Debugger hergestellt wurde. +processTerminatedUnexpectedly = Der Prozess wurde unerwartet beendet. +serverSocketNotListening = Server-Socket wartet nicht auf Meldungen. +functionCallsNotSupported = Zielplayer unterst\u00fctzt keine Funktionsaufrufe +watchpointsNotSupported = Zielplayer unterst\u00fctzt keine Watchpoints +exceptionBreakpointsNotSupported = Zielplayer unterst\u00fctzt keine Ausnahme-Haltepunkte +operatorNotSupported = Zielplayer unterst\u00fctzt nicht den Operator \u201e${operator}\u201c http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_en.properties ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_en.properties b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_en.properties new file mode 100644 index 0000000..f45bedf --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_en.properties @@ -0,0 +1,29 @@ +################################################################################ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## +################################################################################ + +functionsInFile = Functions in ${fileName}#${fileNumber} +unknown = unknown +empty = <empty> +processTerminatedWithoutDebuggerConnection = Process terminated without establishing connection to debugger. +processTerminatedUnexpectedly = Process terminated unexpectedly. +serverSocketNotListening = Server socket not listening. +functionCallsNotSupported = Target player does not support function calls +watchpointsNotSupported = Target player does not support watchpoints +exceptionBreakpointsNotSupported = Target player does not support exception breakpoints +operatorNotSupported = Target player does not support the "${operator}" operator http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_es.properties ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_es.properties b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_es.properties new file mode 100644 index 0000000..38bbe42 --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_es.properties @@ -0,0 +1,29 @@ +################################################################################ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## +################################################################################ + +functionsInFile = Funciones en ${fileName}#${fileNumber} +unknown = desconocido +empty = <vac\u00edo> +processTerminatedWithoutDebuggerConnection = Proceso terminado sin establecer conexi\u00f3n con el depurador. +processTerminatedUnexpectedly = El proceso se ha terminado de forma inesperada. +serverSocketNotListening = El socket del servidor no est\u00e1 detectando. +functionCallsNotSupported = El reproductor de destino no admite llamadas de funci\u00f3n +watchpointsNotSupported = El reproductor de destino no admite puntos de observaci\u00f3n +exceptionBreakpointsNotSupported = El reproductor de destino no admite puntos de corte de excepciones +operatorNotSupported = El reproductor de destino no admite el operador "${operator}" http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fi.properties ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fi.properties b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fi.properties new file mode 100644 index 0000000..352ec32 --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fi.properties @@ -0,0 +1,29 @@ +################################################################################ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## +################################################################################ + +functionsInFile = Toiminnot kohteessa ${fileName}#${fileNumber} +unknown = tuntematon +empty = <tyhj\u00e4> +processTerminatedWithoutDebuggerConnection = Prosessi lopetettiin muodostamatta yhteytt\u00e4 virheenkorjaukseen. +processTerminatedUnexpectedly = Prosessi p\u00e4\u00e4tettiin odottamatta. +serverSocketNotListening = Palvelimen vastake ei ole kuuntelutilassa. +functionCallsNotSupported = Kohdesoitin ei tue toimintopuheluita +watchpointsNotSupported = Kohdesoitin ei tue katselukohtia +exceptionBreakpointsNotSupported = Kohdesoitin ei tue poikkeuksien keskeytyskohtia +operatorNotSupported = Kohdesoitin ei tue operaattoria "${operator}" http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fr.properties ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fr.properties b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fr.properties new file mode 100644 index 0000000..8a64fd0 --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_fr.properties @@ -0,0 +1,29 @@ +################################################################################ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## +################################################################################ + +functionsInFile = Fonctions de ${fileName}#${fileNumber} +unknown = Inconnu +empty = <vide> +processTerminatedWithoutDebuggerConnection = Le processus s'est termin\u00e9 sans \u00e9tablir de connexion vers le d\u00e9bogueur. +processTerminatedUnexpectedly = Processus termin\u00e9 de mani\u00e8re inattendue. +serverSocketNotListening = Le socket du serveur n'est pas en mode d'\u00e9coute. +functionCallsNotSupported = Le lecteur cible ne prend pas en charge les appels de fonction +watchpointsNotSupported = Le lecteur cible ne prend pas en charge les points de contr\u00f4le +exceptionBreakpointsNotSupported = Le lecteur cible ne prend pas en charge les points d'arr\u00eat d'exception. +operatorNotSupported = Le lecteur cible ne prend pas en charge l'op\u00e9rateur "${operator}" http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_it.properties ---------------------------------------------------------------------- diff --git a/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_it.properties b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_it.properties new file mode 100644 index 0000000..20770a9 --- /dev/null +++ b/debugger/src/main/resources/flash/tools/debugger/concrete/djapi_it.properties @@ -0,0 +1,29 @@ +################################################################################ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## +################################################################################ + +functionsInFile = Funzioni in ${fileName}#${fileNumber} +unknown = sconosciuto +empty = <vuoto> +processTerminatedWithoutDebuggerConnection = Processo terminato senza stabilire la connessione con debugger. +processTerminatedUnexpectedly = Il processo \u00e8 stato interrotto inaspettatamente. +serverSocketNotListening = Socket del server non in ascolto. +functionCallsNotSupported = Il Player di destinazione non supporta le chiamate di funzione +watchpointsNotSupported = Il Player di destinazione non supporta i punti di controllo +exceptionBreakpointsNotSupported = Il Player di destinazione non supporta i punti di interruzione delle eccezioni +operatorNotSupported = Il Player di destinazione non supporta l'operatore "${operator}"
