diff options
author | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-07-10 13:01:48 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-07-10 13:01:48 +1000 |
commit | f9fc35785b53aa097a09ab1b865d33497ee1802e (patch) | |
tree | a6c8ea8e913ceab2c08e9f7698332bff08681552 /impl/antlr/libantlr3c-3.4/include/antlr3commontree.h | |
parent | d11acd6d52351b35c102e9c18e32d38a11975c5b (diff) |
Move antlr. Add `make test` to Makefile.
Diffstat (limited to 'impl/antlr/libantlr3c-3.4/include/antlr3commontree.h')
-rw-r--r-- | impl/antlr/libantlr3c-3.4/include/antlr3commontree.h | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/impl/antlr/libantlr3c-3.4/include/antlr3commontree.h b/impl/antlr/libantlr3c-3.4/include/antlr3commontree.h deleted file mode 100644 index 1516ecc..0000000 --- a/impl/antlr/libantlr3c-3.4/include/antlr3commontree.h +++ /dev/null @@ -1,167 +0,0 @@ -/** Interface for an ANTLR3 common tree which is what gets - * passed around by the AST producing parser. - */ - -#ifndef _ANTLR3_COMMON_TREE_H -#define _ANTLR3_COMMON_TREE_H - -// [The "BSD licence"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include <antlr3defs.h> -#include <antlr3basetree.h> -#include <antlr3commontoken.h> - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct ANTLR3_COMMON_TREE_struct -{ - - /// Not used by ANTLR, but if a super structure is created above - /// this structure, it can be used to point to the start of the super - /// structure, where additional data and function pointers can be stored. - /// - void * super; - - /// Start token index that encases this tree - /// - ANTLR3_MARKER startIndex; - - /// End token that encases this tree - /// - ANTLR3_MARKER stopIndex; - - /// A single token, this is the payload for the tree - /// - pANTLR3_COMMON_TOKEN token; - - /// Points to the node that has this node as a child. - /// If this is NULL, then this is the root node. - /// - pANTLR3_COMMON_TREE parent; - - /// What index is this particular node in the child list it - /// belongs to? - /// - ANTLR3_INT32 childIndex; - - /// Pointer to the tree factory that manufactured this - /// token. This can be used by duplication methods and so on - /// to manufacture another auto-tracked common tree structure - /// - pANTLR3_ARBORETUM factory; - - /// An encapsulated BASE TREE structure (NOT a pointer) - /// that performs a lot of the dirty work of node management - /// To this we add just a few functions that are specific to the - /// payload. You can further abstract common tree so long - /// as you always have a baseTree pointer in the top structure - /// and copy it from the next one down. - /// So, lets say we have a structure JIMS_TREE. - /// It needs an ANTLR3_BASE_TREE that will support all the - /// general tree duplication stuff. - /// It needs a ANTLR3_COMMON_TREE structure embedded or completely - /// provides the equivalent interface. - /// It provides it's own methods and data. - /// To create a new one of these, the function provided to - /// the tree adaptor (see comments there) should allocate the - /// memory for a new JIMS_TREE structure, then call - /// antlr3InitCommonTree(<addressofembeddedCOMMON_TREE>) - /// antlr3BaseTreeNew(<addressofBASETREE>) - /// The interfaces for BASE_TREE and COMMON_TREE will then - /// be initialized. You then call and you can override them or just init - /// JIMS_TREE (note that the base tree in common tree will be ignored) - /// just the top level base tree is used). Codegen will take care of the rest. - /// - ANTLR3_BASE_TREE baseTree; - -} - ANTLR3_COMMON_TREE; - -/// \brief ANTLR3 Tree factory interface to create lots of trees efficiently -/// rather than creating and freeing lots of little bits of memory. -/// -typedef struct ANTLR3_ARBORETUM_struct -{ - /// Pointers to the array of tokens that this factory has produced so far - /// - pANTLR3_COMMON_TREE *pools; - - /// Current pool tokens we are allocating from - /// - ANTLR3_INT32 thisPool; - - /// The next token to throw out from the pool, will cause a new pool allocation - /// if this exceeds the available tokenCount - /// - ANTLR3_UINT32 nextTree; - - /// Trick to initialize tokens and their API quickly, we set up this token when the - /// factory is created, then just copy the memory it uses into the new token. - /// - ANTLR3_COMMON_TREE unTruc; - - /// Pointer to a vector factory that is used to create child list vectors - /// for any child nodes that need them. This means that we auto track the - /// vectors and auto free them when we close the factory. It also means - /// that all rewriting trees can use the same tree factory and the same - /// vector factory and we do not dup any nodes unless we must do so - /// explicitly because of context such as an empty rewrite stream and - /// ->IMAGINARY[ID] so on. This makes memory tracking much simpler and - /// tempts no errors. - /// - pANTLR3_VECTOR_FACTORY vFactory; - - /// A resuse stack for reclaiming Nil nodes that were used in rewrites - /// and are now dead. The nilNode() method will eat one of these before - /// creating a new node. - /// - pANTLR3_STACK nilStack; - - /// Pointer to a function that returns a new tree - /// - pANTLR3_BASE_TREE (*newTree) (struct ANTLR3_ARBORETUM_struct * factory); - pANTLR3_BASE_TREE (*newFromTree) (struct ANTLR3_ARBORETUM_struct * factory, pANTLR3_COMMON_TREE tree); - pANTLR3_BASE_TREE (*newFromToken) (struct ANTLR3_ARBORETUM_struct * factory, pANTLR3_COMMON_TOKEN token); - - /// Pointer to a function the destroys the factory - /// - void (*close) (struct ANTLR3_ARBORETUM_struct * factory); -} - ANTLR3_ARBORETUM; - -#ifdef __cplusplus -} -#endif - -#endif - - |