summaryrefslogtreecommitdiff
path: root/impl/EquationSystemParser.h
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@carlo-laptop>2012-08-06 22:58:29 +1000
committerCarlo Zancanaro <carlo@carlo-laptop>2012-08-06 22:58:29 +1000
commit42e729d20000eb141b2907ad83630af34f4afea3 (patch)
treee231556126d538d6b61fe099c6245176aeb3df15 /impl/EquationSystemParser.h
parent77d26a8f2832791587b19351ee1fde207fdda608 (diff)
New variation on the equation system solver.
Much simpler to understand. Basically have a variable assignment which is dynamic and updates with the strategy changes. Similarly have strategy changes easily invalidate the variable assignment. This makes them strongly inter-dependent, but simplifies the implementation considerably. Proving it should be easier like this, too.
Diffstat (limited to 'impl/EquationSystemParser.h')
-rw-r--r--impl/EquationSystemParser.h324
1 files changed, 324 insertions, 0 deletions
diff --git a/impl/EquationSystemParser.h b/impl/EquationSystemParser.h
new file mode 100644
index 0000000..2efd482
--- /dev/null
+++ b/impl/EquationSystemParser.h
@@ -0,0 +1,324 @@
+/** \file
+ * This C header file was generated by $ANTLR version 3.4
+ *
+ * - From the grammar source file : EquationSystem.g
+ * - On : 2012-07-09 19:58:45
+ * - for the parser : EquationSystemParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The parser
+EquationSystemParser
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pEquationSystemParser, which is returned from a call to EquationSystemParserNew().
+ *
+ * The methods in pEquationSystemParser are as follows:
+ *
+ * -
+ EquationSystemParser_equation_system_return
+ pEquationSystemParser->equation_system(pEquationSystemParser)
+ * -
+ EquationSystemParser_equation_return
+ pEquationSystemParser->equation(pEquationSystemParser)
+ * -
+ EquationSystemParser_maxExpr_return
+ pEquationSystemParser->maxExpr(pEquationSystemParser)
+ * -
+ EquationSystemParser_minExpr_return
+ pEquationSystemParser->minExpr(pEquationSystemParser)
+ * -
+ EquationSystemParser_expr_return
+ pEquationSystemParser->expr(pEquationSystemParser)
+ * -
+ EquationSystemParser_term_return
+ pEquationSystemParser->term(pEquationSystemParser)
+ *
+ *
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// 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.
+
+#ifndef _EquationSystemParser_H
+#define _EquationSystemParser_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct EquationSystemParser_Ctx_struct EquationSystemParser, * pEquationSystemParser;
+
+
+
+#ifdef ANTLR3_WINDOWS
+// Disable: Unreferenced parameter, - Rules with parameters that are not used
+// constant conditional, - ANTLR realizes that a prediction is always true (synpred usually)
+// initialized but unused variable - tree rewrite variables declared but not needed
+// Unreferenced local variable - lexer rule declares but does not always use _type
+// potentially unitialized variable used - retval always returned from a rule
+// unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/* ========================
+ * BACKTRACKING IS ENABLED
+ * ========================
+ */
+
+typedef struct EquationSystemParser_equation_system_return_struct
+{
+ /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees
+ */
+ pANTLR3_COMMON_TOKEN start;
+ pANTLR3_COMMON_TOKEN stop;
+ pANTLR3_BASE_TREE tree;
+
+}
+ EquationSystemParser_equation_system_return;
+
+
+
+typedef struct EquationSystemParser_equation_return_struct
+{
+ /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees
+ */
+ pANTLR3_COMMON_TOKEN start;
+ pANTLR3_COMMON_TOKEN stop;
+ pANTLR3_BASE_TREE tree;
+
+}
+ EquationSystemParser_equation_return;
+
+
+
+typedef struct EquationSystemParser_maxExpr_return_struct
+{
+ /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees
+ */
+ pANTLR3_COMMON_TOKEN start;
+ pANTLR3_COMMON_TOKEN stop;
+ pANTLR3_BASE_TREE tree;
+
+}
+ EquationSystemParser_maxExpr_return;
+
+
+
+typedef struct EquationSystemParser_minExpr_return_struct
+{
+ /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees
+ */
+ pANTLR3_COMMON_TOKEN start;
+ pANTLR3_COMMON_TOKEN stop;
+ pANTLR3_BASE_TREE tree;
+
+}
+ EquationSystemParser_minExpr_return;
+
+
+
+typedef struct EquationSystemParser_expr_return_struct
+{
+ /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees
+ */
+ pANTLR3_COMMON_TOKEN start;
+ pANTLR3_COMMON_TOKEN stop;
+ pANTLR3_BASE_TREE tree;
+
+}
+ EquationSystemParser_expr_return;
+
+
+
+typedef struct EquationSystemParser_term_return_struct
+{
+ /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees
+ */
+ pANTLR3_COMMON_TOKEN start;
+ pANTLR3_COMMON_TOKEN stop;
+ pANTLR3_BASE_TREE tree;
+
+}
+ EquationSystemParser_term_return;
+
+
+
+
+/** Context tracking structure for
+EquationSystemParser
+
+ */
+struct EquationSystemParser_Ctx_struct
+{
+ /** Built in ANTLR3 context tracker contains all the generic elements
+ * required for context tracking.
+ */
+ pANTLR3_PARSER pParser;
+
+ EquationSystemParser_equation_system_return
+ (*equation_system) (struct EquationSystemParser_Ctx_struct * ctx);
+
+ EquationSystemParser_equation_return
+ (*equation) (struct EquationSystemParser_Ctx_struct * ctx);
+
+ EquationSystemParser_maxExpr_return
+ (*maxExpr) (struct EquationSystemParser_Ctx_struct * ctx);
+
+ EquationSystemParser_minExpr_return
+ (*minExpr) (struct EquationSystemParser_Ctx_struct * ctx);
+
+ EquationSystemParser_expr_return
+ (*expr) (struct EquationSystemParser_Ctx_struct * ctx);
+
+ EquationSystemParser_term_return
+ (*term) (struct EquationSystemParser_Ctx_struct * ctx);
+
+ ANTLR3_BOOLEAN
+ (*synpred8_EquationSystem) (struct EquationSystemParser_Ctx_struct * ctx);
+
+ ANTLR3_BOOLEAN
+ (*synpred12_EquationSystem) (struct EquationSystemParser_Ctx_struct * ctx);
+ // Delegated rules
+
+ const char * (*getGrammarFileName)();
+ void (*reset) (struct EquationSystemParser_Ctx_struct * ctx);
+ void (*free) (struct EquationSystemParser_Ctx_struct * ctx);
+/* @headerFile.members() */
+pANTLR3_BASE_TREE_ADAPTOR adaptor;
+pANTLR3_VECTOR_FACTORY vectors;
+/* End @headerFile.members() */
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pEquationSystemParser EquationSystemParserNew (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream);
+ANTLR3_API pEquationSystemParser EquationSystemParserNewSSD (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the
+parser
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef EOF
+#undef EOF
+#endif
+#ifdef Tokens
+#undef Tokens
+#endif
+#define EOF -1
+#define T__19 19
+#define T__20 20
+#define T__21 21
+#define T__22 22
+#define COMMA 4
+#define DIGIT 5
+#define GREATER_EQUAL 6
+#define GUARD 7
+#define LETTER 8
+#define MAXIMUM 9
+#define MINIMUM 10
+#define MULT 11
+#define NEWLINE 12
+#define NUMBER 13
+#define PLUS 14
+#define QUESTION_MARK 15
+#define SUB 16
+#define VARIABLE 17
+#define WHITESPACE 18
+#ifdef EOF
+#undef EOF
+#define EOF ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for EquationSystemParser
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */