summaryrefslogtreecommitdiff
path: root/impl/antlr/libantlr3c-3.4/src/antlr3cyclicdfa.c
diff options
context:
space:
mode:
Diffstat (limited to 'impl/antlr/libantlr3c-3.4/src/antlr3cyclicdfa.c')
-rw-r--r--impl/antlr/libantlr3c-3.4/src/antlr3cyclicdfa.c204
1 files changed, 0 insertions, 204 deletions
diff --git a/impl/antlr/libantlr3c-3.4/src/antlr3cyclicdfa.c b/impl/antlr/libantlr3c-3.4/src/antlr3cyclicdfa.c
deleted file mode 100644
index 82e7222..0000000
--- a/impl/antlr/libantlr3c-3.4/src/antlr3cyclicdfa.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/** Support functions for traversing cyclic DFA states as laid
- * out in static initialized structures by the code generator.
- *
- * A DFA implemented as a set of transition tables.
- *
- * Any state that has a semantic predicate edge is special; those states
- * are generated with if-then-else structures in a ->specialStateTransition()
- * which is generated by cyclicDFA template.
- *
- * There are at most 32767 states (16-bit signed short).
- * Could get away with byte sometimes but would have to generate different
- * types and the simulation code too. For a point of reference, the Java
- * lexer's Tokens rule DFA has 326 states roughly.
- */
-
-// [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 <antlr3cyclicdfa.h>
-
-#ifdef ANTLR3_WINDOWS
-#pragma warning( disable : 4100 )
-#endif
-
-static void
-noViableAlt(pANTLR3_BASE_RECOGNIZER rec, pANTLR3_CYCLIC_DFA cdfa, ANTLR3_UINT32 s)
-{
- // In backtracking mode, we just set the failed flag so that the
- // alt can just exit right now. If we are parsing though, then
- // we want the exception to be raised.
- //
- if (rec->state->backtracking > 0)
- {
- rec->state->failed = ANTLR3_TRUE;
- }
- else
- {
- rec->exConstruct(rec);
- rec->state->exception->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
- rec->state->exception->message = cdfa->description;
- rec->state->exception->decisionNum = cdfa->decisionNumber;
- rec->state->exception->state = s;
- }
-}
-
-/** From the input stream, predict what alternative will succeed
- * using this DFA (representing the covering regular approximation
- * to the underlying CFL). Return an alternative number 1..n. Throw
- * an exception upon error.
- */
-ANTLR3_API ANTLR3_INT32
-antlr3dfapredict (void * ctx, pANTLR3_BASE_RECOGNIZER rec, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA cdfa)
-{
- ANTLR3_MARKER mark;
- ANTLR3_INT32 s;
- ANTLR3_INT32 specialState;
- ANTLR3_INT32 c;
-
- mark = is->mark(is); /* Store where we are right now */
- s = 0; /* Always start with state 0 */
-
- for (;;)
- {
- /* Pick out any special state entry for this state
- */
- specialState = cdfa->special[s];
-
- /* Transition the special state and consume an input token
- */
- if (specialState >= 0)
- {
- s = cdfa->specialStateTransition(ctx, rec, is, cdfa, specialState);
-
- // Error?
- //
- if (s<0)
- {
- // If the predicate/rule raised an exception then we leave it
- // in tact, else we have an NVA.
- //
- if (rec->state->error != ANTLR3_TRUE)
- {
- noViableAlt(rec,cdfa, s);
- }
- is->rewind(is, mark);
- return 0;
- }
- is->consume(is);
- continue;
- }
-
- /* Accept state?
- */
- if (cdfa->accept[s] >= 1)
- {
- is->rewind(is, mark);
- return cdfa->accept[s];
- }
-
- /* Look for a normal transition state based upon the input token element
- */
- c = is->_LA(is, 1);
-
- /* Check against min and max for this state
- */
- if (c>= cdfa->min[s] && c <= cdfa->max[s])
- {
- ANTLR3_INT32 snext;
-
- /* What is the next state?
- */
- snext = cdfa->transition[s][c - cdfa->min[s]];
-
- if (snext < 0)
- {
- /* Was in range but not a normal transition
- * must check EOT, which is like the else clause.
- * eot[s]>=0 indicates that an EOT edge goes to another
- * state.
- */
- if (cdfa->eot[s] >= 0)
- {
- s = cdfa->eot[s];
- is->consume(is);
- continue;
- }
- noViableAlt(rec,cdfa, s);
- is->rewind(is, mark);
- return 0;
- }
-
- /* New current state - move to it
- */
- s = snext;
- is->consume(is);
- continue;
- }
- /* EOT Transition?
- */
- if (cdfa->eot[s] >= 0)
- {
- s = cdfa->eot[s];
- is->consume(is);
- continue;
- }
- /* EOF transition to accept state?
- */
- if ( c == ANTLR3_TOKEN_EOF && cdfa->eof[s] >= 0)
- {
- is->rewind(is, mark);
- return cdfa->accept[cdfa->eof[s]];
- }
-
- /* No alt, so bomb
- */
- noViableAlt(rec, cdfa, s);
- is->rewind(is, mark);
- return 0;
- }
-
-}
-
-/** Default special state implementation
- */
-ANTLR3_API ANTLR3_INT32
-antlr3dfaspecialStateTransition (void * ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s)
-{
- return -1;
-}
-
-/* Default special transition implementation
- */
-ANTLR3_API ANTLR3_INT32
-antlr3dfaspecialTransition (void * ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s)
-{
- return 0;
-}