WALA/com.ibm.wala.cast/source/java/com/ibm/wala/cast/tree/CAst.java

81 lines
3.0 KiB
Java

/******************************************************************************
* Copyright (c) 2002 - 2006 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*****************************************************************************/
package com.ibm.wala.cast.tree;
/**
* The main interface for creating CAPA Abstract Syntax Trees. This
* interface provides essentially a factory for creating AST nodes in
* a tree structure. There is no strong assumption about the meaning
* of specific nodes; however, the `kind' argument to a makeNode call
* should be a value from the constants in the CAstNode interface.
* The other arguments to makeNode calls are child nodes. The
* structure of the tree is a matter of agreement between providers and
* consumers of specific trees.
*
* @author Julian Dolby (dolby@us.ibm.com)
*
*/
public interface CAst {
/** Make a node of type kind with no children. */
CAstNode makeNode(int kind);
/** Make a node of type kind with one child. */
CAstNode makeNode(int kind, CAstNode c1);
/** Make a node of type kind with two children. */
CAstNode makeNode(int kind, CAstNode c1, CAstNode c2);
/** Make a node of type kind with three children. */
CAstNode makeNode(int kind, CAstNode c1, CAstNode c2, CAstNode c3);
/** Make a node of type kind with four children. */
CAstNode makeNode(int kind, CAstNode c1, CAstNode c2, CAstNode c3, CAstNode c4);
/** Make a node of type kind with five children. */
CAstNode makeNode(int kind, CAstNode c1, CAstNode c2, CAstNode c3, CAstNode c4, CAstNode c5);
/** Make a node of type kind with six children. */
CAstNode makeNode(int kind, CAstNode c1, CAstNode c2, CAstNode c3, CAstNode c4, CAstNode c5, CAstNode c6);
/** Make a node of type kind specifying an array of children. */
CAstNode makeNode(int kind, CAstNode[] cs);
/** Make a node of type kind giving a first child and array of the rest. */
CAstNode makeNode(int kind, CAstNode firstChild, CAstNode[] otherChildren);
/** Make a boolean constant node. */
CAstNode makeConstant(boolean value);
/** Make a char constant node. */
CAstNode makeConstant(char value);
/** Make a short integer constant node. */
CAstNode makeConstant(short value);
/** Make an integer constant node. */
CAstNode makeConstant(int value);
/** Make a long integer constant node. */
CAstNode makeConstant(long value);
/** Make a double-precision floating point constant node. */
CAstNode makeConstant(double value);
/** Make a single-precision floating point constant node. */
CAstNode makeConstant(float value);
/** Make an arbitrary object constant node. */
CAstNode makeConstant(Object value);
/** Make a new identifier, unqiue to this CAst instance. */
String makeUnique();
}