示例#1
0
 public void accept(IASTVisitor visitor) {
   boolean visitChildren = visitor.visit(this);
   if (visitChildren) {
     expr.accept(visitor);
   }
   visitor.endVisit(this);
 }
示例#2
0
  public static void treeApply(IParseNode node, IASTVisitor function, boolean recursive) {
    if (node == null || function == null) {
      return;
    }

    List<QueueEntry> queue = new LinkedList<QueueEntry>();

    // prime queue
    queue.add(new QueueEntry(node, true));

    while (!queue.isEmpty()) {
      QueueEntry current = queue.remove(0);
      // TODO: wrap function call in try/block?

      // Entering a node
      if (current.enter) {
        // apply function
        if (!function.enterNode(current.node)) {
          // stop processing if the function indicates to do so
          break;
        }

        if (recursive) {
          int i = 0;
          if (current.node instanceof ParseRootNode) {
            // Insert the children to front of the list, in-order
            for (IParseNode commentNode : ((ParseRootNode) node).getCommentNodes()) {
              queue.add(i++, new QueueEntry(commentNode, true));
            }
          }

          // Insert the children to front of the list, in-order
          for (IParseNode child : current.node) {
            queue.add(i++, new QueueEntry(child, true));
          }
          // This sticks the exit of the node at the end?
          queue.add(i++, new QueueEntry(current.node, false));
        }
      }
      // Exiting a node
      else {
        // apply function
        if (!function.exitNode(current.node)) {
          // stop processing if the function indicates to do so
          break;
        }
      }
    }
  }
示例#3
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitStringLiteralInterpolated(this);
 }
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitIntegerLiteralAmbiguity(this);
 }
示例#5
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitStringTailAmbiguity(this);
 }
示例#6
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitImportDefault(this);
 }
示例#7
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitImportExternal(this);
 }
示例#8
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitTypeVarAmbiguity(this);
 }
示例#9
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitJustTimeLexical(this);
 }
示例#10
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitJustTimeAmbiguity(this);
 }
示例#11
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitPathCharsAmbiguity(this);
 }
示例#12
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitCommandDeclaration(this);
 }
示例#13
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitCommandStatement(this);
 }
示例#14
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitCommandImport(this);
 }
示例#15
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitCommandExpression(this);
 }
示例#16
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitStrategyBottomUpBreak(this);
 }
示例#17
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitTypeVarFree(this);
 }
示例#18
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitCatchBinding(this);
 }
示例#19
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitBackslashLexical(this);
 }
示例#20
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitCatchAmbiguity(this);
 }
示例#21
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitImportSyntax(this);
 }
示例#22
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitURLCharsLexical(this);
 }
示例#23
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitStringTailPost(this);
 }
示例#24
0
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitQualifiedNameAmbiguity(this);
 }
示例#25
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitIntegerLiteralOctalIntegerLiteral(this);
 }
示例#26
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitQualifiedNameDefault(this);
 }
示例#27
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitStringLiteralTemplate(this);
 }
示例#28
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitStrategyOutermost(this);
 }
示例#29
0
文件: LAYOUT.java 项目: stil4m/rascal
 public <T> T accept(IASTVisitor<T> v) {
   return v.visitLAYOUTLexical(this);
 }
示例#30
0
 @Override
 public <T> T accept(IASTVisitor<T> visitor) {
   return visitor.visitStrategyTopDownBreak(this);
 }