diff options
Diffstat (limited to 'impl/antlr/libantlr3c-3.4/src/antlr3parser.c')
-rw-r--r-- | impl/antlr/libantlr3c-3.4/src/antlr3parser.c | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/impl/antlr/libantlr3c-3.4/src/antlr3parser.c b/impl/antlr/libantlr3c-3.4/src/antlr3parser.c deleted file mode 100644 index 2b7e0e3..0000000 --- a/impl/antlr/libantlr3c-3.4/src/antlr3parser.c +++ /dev/null @@ -1,193 +0,0 @@ -/** \file - * Implementation of the base functionality for an ANTLR3 parser. - */ - -// [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 <antlr3parser.h> - -/* Parser API - */ -static void setDebugListener (pANTLR3_PARSER parser, pANTLR3_DEBUG_EVENT_LISTENER dbg); -static void setTokenStream (pANTLR3_PARSER parser, pANTLR3_TOKEN_STREAM); -static pANTLR3_TOKEN_STREAM getTokenStream (pANTLR3_PARSER parser); -static void freeParser (pANTLR3_PARSER parser); - -ANTLR3_API pANTLR3_PARSER -antlr3ParserNewStreamDbg (ANTLR3_UINT32 sizeHint, pANTLR3_TOKEN_STREAM tstream, pANTLR3_DEBUG_EVENT_LISTENER dbg, pANTLR3_RECOGNIZER_SHARED_STATE state) -{ - pANTLR3_PARSER parser; - - parser = antlr3ParserNewStream(sizeHint, tstream, state); - - if (parser == NULL) - { - return NULL; - } - - parser->setDebugListener(parser, dbg); - - return parser; -} - -ANTLR3_API pANTLR3_PARSER -antlr3ParserNew (ANTLR3_UINT32 sizeHint, pANTLR3_RECOGNIZER_SHARED_STATE state) -{ - pANTLR3_PARSER parser; - - /* Allocate memory - */ - parser = (pANTLR3_PARSER) ANTLR3_MALLOC(sizeof(ANTLR3_PARSER)); - - if (parser == NULL) - { - return NULL; - } - - /* Install a base parser - */ - parser->rec = antlr3BaseRecognizerNew(ANTLR3_TYPE_PARSER, sizeHint, state); - - if (parser->rec == NULL) - { - parser->free(parser); - return NULL; - } - - parser->rec->super = parser; - - /* Parser overrides - */ - parser->rec->exConstruct = antlr3MTExceptionNew; - - /* Install the API - */ - parser->setDebugListener = setDebugListener; - parser->setTokenStream = setTokenStream; - parser->getTokenStream = getTokenStream; - - parser->free = freeParser; - - return parser; -} - -ANTLR3_API pANTLR3_PARSER -antlr3ParserNewStream (ANTLR3_UINT32 sizeHint, pANTLR3_TOKEN_STREAM tstream, pANTLR3_RECOGNIZER_SHARED_STATE state) -{ - pANTLR3_PARSER parser; - - parser = antlr3ParserNew(sizeHint, state); - - if (parser == NULL) - { - return NULL; - } - - /* Everything seems to be hunky dory so we can install the - * token stream. - */ - parser->setTokenStream(parser, tstream); - - return parser; -} - -static void -freeParser (pANTLR3_PARSER parser) -{ - if (parser->rec != NULL) - { - // This may have ben a delegate or delegator parser, in which case the - // state may already have been freed (and set to NULL therefore) - // so we ignore the state if we don't have it. - // - if (parser->rec->state != NULL) - { - if (parser->rec->state->following != NULL) - { - parser->rec->state->following->free(parser->rec->state->following); - parser->rec->state->following = NULL; - } - } - parser->rec->free(parser->rec); - parser->rec = NULL; - - } - ANTLR3_FREE(parser); -} - -static void -setDebugListener (pANTLR3_PARSER parser, pANTLR3_DEBUG_EVENT_LISTENER dbg) -{ - // Set the debug listener. There are no methods to override - // because currently the only ones that notify the debugger - // are error reporting and recovery. Hence we can afford to - // check and see if the debugger interface is null or not - // there. If there is ever an occasion for a performance - // sensitive function to use the debugger interface, then - // a replacement function for debug mode should be supplied - // and installed here. - // - parser->rec->debugger = dbg; - - // If there was a tokenstream installed already - // then we need to tell it about the debug interface - // - if (parser->tstream != NULL) - { - parser->tstream->setDebugListener(parser->tstream, dbg); - } -} - -static void -setTokenStream (pANTLR3_PARSER parser, pANTLR3_TOKEN_STREAM tstream) -{ - parser->tstream = tstream; - parser->rec->reset(parser->rec); -} - -static pANTLR3_TOKEN_STREAM -getTokenStream (pANTLR3_PARSER parser) -{ - return parser->tstream; -} - - - - - - - - - - - - - - |