1 package org.gnunet.seaspider.parser.visitors;
2 import java.util.ArrayList;
4 import org.gnunet.seaspider.parser.LineNumberInfo;
5 import org.gnunet.seaspider.parser.nodes.AssignmentOperator;
6 import org.gnunet.seaspider.parser.nodes.CompoundStatement;
7 import org.gnunet.seaspider.parser.nodes.Expression;
10 public class GNUnetDepthFirstVisitor extends DepthFirstVisitor {
11 /* Inner utilities classes */
13 public Scope(int scopeStart, int scopeEnd) {
14 this.scopeStart = scopeStart;
15 this.scopeEnd = scopeEnd;
17 public int scopeStart;
21 private class ExpressionEntry {
22 public ArrayList<ExpressionEntry> expressionComponents= new ArrayList<ExpressionEntry>();
23 public LineNumberInfo lineNumberInfo;
24 public Scope expressionScope;
28 private int current_endline;
29 private Scope currentScope;
30 private ExpressionEntry currentExpression;
34 * f0 -> ConditionalExpression()
35 * f1 -> [ AssignmentOperator() Expression() ]
37 public void visit(Expression n) {
38 currentExpression = new ExpressionEntry();
39 currentExpression.lineNumberInfo = LineNumberInfo.get(n);
40 currentExpression.expressionScope = currentScope;
46 public void visit(AssignmentOperator n) {
53 * f1 -> ( LocalVariableDeclaration() | Statement() )*
57 public void visit(CompoundStatement n) {
58 currentScope.scopeStart = n.f0.endLine;
59 currentScope.scopeEnd = n.f2.endLine;