/*
* This file is part of the X10 project (http://x10-lang.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* This file was originally derived from the Polyglot extensible compiler framework.
*
* (C) Copyright 2000-2007 Polyglot project group, Cornell University
* (C) Copyright IBM Corporation 2007-2012.
*/
package polyglot.ast;
/**
* An <code>ExtFactory</code> constructs extensions. It is only used by
* a <code>NodeFactory</code>, during the creation of AST nodes. ExtFactories
* may be chained together (see AbstractExtFactory_c) to allow extensions to be
* composed.
*/
public interface ExtFactory
{
/**
* The next extFactory in the chain.
*/
ExtFactory nextExtFactory();
//////////////////////////////////////////////////////////////////
// Factory Methods
//////////////////////////////////////////////////////////////////
Ext extFlagsNode();
Ext extId();
Ext extAmbAssign();
Ext extAmbExpr();
Ext extAmbPrefix();
Ext extAmbReceiver();
Ext extAmbTypeNode();
Ext extArrayAccess();
Ext extArrayInit();
Ext extArrayTypeNode();
Ext extAssert();
Ext extAssign();
Ext extLocalAssign();
Ext extFieldAssign();
Ext extArrayAccessAssign();
Ext extBinary();
Ext extBlock();
Ext extBooleanLit();
Ext extBranch();
Ext extCall();
Ext extCanonicalTypeNode();
Ext extCase();
Ext extCast();
Ext extCatch();
Ext extCharLit();
Ext extClassBody();
Ext extClassDecl();
Ext extClassLit();
Ext extClassMember();
Ext extCodeDecl();
Ext extCompoundStmt();
Ext extConditional();
Ext extConstructorCall();
Ext extConstructorDecl();
Ext extDo();
Ext extEmpty();
Ext extEval();
Ext extExpr();
Ext extField();
Ext extFieldDecl();
Ext extFloatLit();
Ext extFor();
Ext extFormal();
Ext extIf();
Ext extImport();
Ext extInitializer();
Ext extInstanceof();
Ext extIntLit();
Ext extLabeled();
Ext extLit();
Ext extLocal();
Ext extLocalClassDecl();
Ext extLocalDecl();
Ext extLoop();
Ext extMethodDecl();
Ext extNewArray();
Ext extNode();
Ext extNodeList();
Ext extNew();
Ext extNullLit();
Ext extNumLit();
Ext extPackageNode();
Ext extProcedureDecl();
Ext extReturn();
Ext extSourceCollection();
Ext extSourceFile();
Ext extSpecial();
Ext extStmt();
Ext extStringLit();
Ext extSwitchBlock();
Ext extSwitchElement();
Ext extSwitch();
Ext extSynchronized();
Ext extTerm();
Ext extThrow();
Ext extTry();
Ext extTypeNode();
Ext extUnary();
Ext extWhile();
}