Permalink
Browse files

Need to update to enebo branch for this

git-svn-id: http://svn.codehaus.org/jruby/branches/enebo_node@2359 961051c9-f516-0410-bf72-c9f7e237a7b7
  • Loading branch information...
1 parent 0b8a560 commit 835e7ce9728f4851734db487c7c2d2e8741d9594 @enebo enebo committed Oct 19, 2006
@@ -44,6 +44,10 @@
*/
public class ArrayNode extends ListNode implements ILiteralNode {
static final long serialVersionUID = 6279246130032958596L;
+
+ public ArrayNode(ISourcePosition position, Node firstNode) {
+ super(position, NodeTypes.ARRAYNODE, firstNode);
+ }
public ArrayNode(ISourcePosition position) {
super(position, NodeTypes.ARRAYNODE);
@@ -32,6 +32,7 @@
import java.util.List;
+import org.jruby.ast.types.INameNode;
import org.jruby.ast.visitor.NodeVisitor;
import org.jruby.evaluator.Instruction;
import org.jruby.lexer.yacc.ISourcePosition;
@@ -45,14 +46,16 @@
* in this example c is a BlockArgNode
* @author jpetersen
*/
-public class BlockArgNode extends Node {
+public class BlockArgNode extends Node implements INameNode {
static final long serialVersionUID = 8374824536805365398L;
private final int count;
+ private String name;
- public BlockArgNode(ISourcePosition position, int count) {
+ public BlockArgNode(ISourcePosition position, int count, String name) {
super(position, NodeTypes.BLOCKARGNODE);
this.count = count;
+ this.name = name;
}
/**
@@ -70,9 +73,17 @@ public Instruction accept(NodeVisitor iVisitor) {
public int getCount() {
return count;
}
-
+
+ /**
+ * Get the name of this block argument
+ *
+ * @return it's name
+ */
+ public String getName() {
+ return name;
+ }
+
public List childNodes() {
return EMPTY_LIST;
}
-
}
@@ -34,6 +34,7 @@
import java.io.IOException;
import java.util.List;
+import org.jruby.ast.types.INameNode;
import org.jruby.ast.visitor.NodeVisitor;
import org.jruby.evaluator.Instruction;
import org.jruby.lexer.yacc.ISourcePosition;
@@ -43,7 +44,7 @@
*
* @author jpetersen
*/
-public final class CallNode extends Node {
+public final class CallNode extends Node implements INameNode {
static final long serialVersionUID = -1993752395320088525L;
private final Node receiverNode;
@@ -0,0 +1,67 @@
+/***** BEGIN LICENSE BLOCK *****
+ * Version: CPL 1.0/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Common Public
+ * License Version 1.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.eclipse.org/legal/cpl-v10.html
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * Copyright (C) 2006 Thomas E Enebo <enebo@acm.org>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the CPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the CPL, the GPL or the LGPL.
+ ***** END LICENSE BLOCK *****/
+package org.jruby.ast;
+
+import java.util.List;
+
+import org.jruby.ast.visitor.NodeVisitor;
+import org.jruby.evaluator.Instruction;
+import org.jruby.lexer.yacc.ISourcePosition;
+
+/**
+ * Representation of a comment. Note that comments are not part of evaluation so you do
+ * not get the ability to visit this node as part of evaluation. In theory we could add
+ * this if we envisioned some wacky annotation system, but we have no crazy ideas yet.
+ *
+ */
+public class CommentNode extends Node {
+ private static final long serialVersionUID = -8304070370230933044L;
+
+ // Textual data (this is missing newline as a single line comment and =begin..=end
+ // comments do contain the intermediary newlines.
+ String content;
+
+ public CommentNode(ISourcePosition position, String content) {
+ super(position, NodeTypes.COMMENTNODE);
+
+ this.content = content;
+ }
+
+ public Instruction accept(NodeVisitor visitor) {
+ return null;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public List childNodes() {
+ return EMPTY_LIST;
+ }
+
+}
@@ -34,6 +34,7 @@
import java.io.IOException;
import java.util.List;
+import org.jruby.ast.types.INameNode;
import org.jruby.ast.visitor.NodeVisitor;
import org.jruby.evaluator.Instruction;
import org.jruby.lexer.yacc.ISourcePosition;
@@ -42,7 +43,7 @@
*
* @author jpetersen
*/
-public class FCallNode extends Node {
+public class FCallNode extends Node implements INameNode {
static final long serialVersionUID = 3590332973770104094L;
private String name;
@@ -48,6 +48,18 @@
private List list = null;
+ /**
+ * Create a new ListNode.
+ *
+ * @param id type of listnode
+ * @param firstNode first element of the list
+ */
+ public ListNode(ISourcePosition position, int id, Node firstNode) {
+ this(position, id);
+
+ add(firstNode);
+ }
+
public ListNode(ISourcePosition position, int id) {
super(position, id);
}
@@ -57,10 +69,12 @@ public ListNode(ISourcePosition position) {
}
public ListNode add(Node node) {
- if (list == null) {
- list = new ArrayList();
- }
+ if (list == null) list = new ArrayList();
+ // Ruby Grammar productions return plenty of nulls.
+ if (node == null) return this;
+
list.add(node);
+ setPosition(getPosition().union(node.getPosition()));
return this;
}
@@ -105,7 +119,7 @@ public String toString() {
}
public List childNodes() {
- return list;
+ return list == null ? EMPTY_LIST : list;
}
public Instruction accept(NodeVisitor visitor) {
@@ -32,6 +32,7 @@
import java.util.List;
+import org.jruby.ast.types.INameNode;
import org.jruby.ast.visitor.NodeVisitor;
import org.jruby.evaluator.Instruction;
import org.jruby.lexer.yacc.ISourcePosition;
@@ -40,14 +41,16 @@
*
* @author jpetersen
*/
-public class LocalVarNode extends Node {
+public class LocalVarNode extends Node implements INameNode {
static final long serialVersionUID = 8562701804939317217L;
private final int count;
+ private final String name;
- public LocalVarNode(ISourcePosition position, int count) {
+ public LocalVarNode(ISourcePosition position, int count, String name) {
super(position, NodeTypes.LOCALVARNODE);
this.count = count;
+ this.name = name;
}
/**
@@ -66,6 +69,10 @@ public int getCount() {
return count;
}
+ public String getName() {
+ return name;
+ }
+
public List childNodes() {
return EMPTY_LIST;
}
Oops, something went wrong.

0 comments on commit 835e7ce

Please sign in to comment.