]> granicus.if.org Git - yasm/commitdiff
Split yasm_parser_nasm structure out to separate header.
authorPeter Johnson <peter@tortall.net>
Tue, 19 Jan 2010 06:56:08 +0000 (06:56 -0000)
committerPeter Johnson <peter@tortall.net>
Tue, 19 Jan 2010 06:56:08 +0000 (06:56 -0000)
This is needed so that other parsers can get access to this structure without
naming conflicts.

Contributed by: Alexei Svitkine

svn path=/trunk/yasm/; revision=2276

modules/parsers/nasm/nasm-parser-struct.h [new file with mode: 0644]
modules/parsers/nasm/nasm-parser.h

diff --git a/modules/parsers/nasm/nasm-parser-struct.h b/modules/parsers/nasm/nasm-parser-struct.h
new file mode 100644 (file)
index 0000000..506f02c
--- /dev/null
@@ -0,0 +1,84 @@
+/* $Id$
+ * NASM-compatible parser struct header file
+ *
+ *  Copyright (C) 2002-2007  Peter Johnson
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``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 OR OTHER CONTRIBUTORS 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 YASM_NASM_PARSER_STRUCT_H
+#define YASM_NASM_PARSER_STRUCT_H
+
+typedef union {
+    unsigned int int_info;
+    char *str_val;
+    yasm_intnum *intn;
+    yasm_floatnum *flt;
+    yasm_bytecode *bc;
+    uintptr_t arch_data;
+    struct {
+        char *contents;
+        size_t len;
+    } str;
+} nasm_yystype;
+
+typedef struct yasm_parser_nasm {
+    int tasm;
+
+    /*@only@*/ yasm_object *object;
+
+    /* last "base" label for local (.) labels */
+    /*@null@*/ char *locallabel_base;
+    size_t locallabel_base_len;
+
+    /*@dependent@*/ yasm_preproc *preproc;
+    /*@dependent@*/ yasm_errwarns *errwarns;
+
+    /*@dependent@*/ yasm_linemap *linemap;
+
+    /*@null@*/ yasm_bytecode *prev_bc;
+
+    int save_input;
+
+    yasm_scanner s;
+    int state;
+
+    int token;          /* enum tokentype or any character */
+    nasm_yystype tokval;
+    char tokch;         /* first character of token */
+
+    /* one token of lookahead; used sparingly */
+    int peek_token;     /* NONE if none */
+    nasm_yystype peek_tokval;
+    char peek_tokch;
+
+    /* Starting point of the absolute section.  NULL if not in an absolute
+     * section.
+     */
+    /*@null@*/ yasm_expr *absstart;
+
+    /* Current location inside an absolute section (including the start).
+     * NULL if not in an absolute section.
+     */
+    /*@null@*/ yasm_expr *abspos;
+} yasm_parser_nasm;
+
+#endif
index e0607a7b424722c946813b6120a0bb57c0f392d4..b213edcc976c8bac990cced833a80da65007c0c5 100644 (file)
@@ -27,6 +27,8 @@
 #ifndef YASM_NASM_PARSER_H
 #define YASM_NASM_PARSER_H
 
+#include "nasm-parser-struct.h"
+
 #define YYCTYPE         unsigned char
 
 #define MAX_SAVED_LINE_LEN  80
@@ -72,68 +74,17 @@ enum tokentype {
     NONE                /* special token for lookahead */
 };
 
-typedef union {
-    unsigned int int_info;
-    char *str_val;
-    yasm_intnum *intn;
-    yasm_floatnum *flt;
-    yasm_bytecode *bc;
-    uintptr_t arch_data;
-    struct {
-        char *contents;
-        size_t len;
-    } str;
-} yystype;
-#define YYSTYPE yystype
-
-typedef struct yasm_parser_nasm {
-    int tasm;
-
-    /*@only@*/ yasm_object *object;
-
-    /* last "base" label for local (.) labels */
-    /*@null@*/ char *locallabel_base;
-    size_t locallabel_base_len;
-
-    /*@dependent@*/ yasm_preproc *preproc;
-    /*@dependent@*/ yasm_errwarns *errwarns;
-
-    /*@dependent@*/ yasm_linemap *linemap;
-
-    /*@null@*/ yasm_bytecode *prev_bc;
-
-    int save_input;
-
-    yasm_scanner s;
-    enum {
-        INITIAL,
-        DIRECTIVE,
-        SECTION_DIRECTIVE,
-        DIRECTIVE2,
-        LINECHG,
-        LINECHG2,
-        INSTRUCTION
-    } state;
-
-    int token;          /* enum tokentype or any character */
-    yystype tokval;
-    char tokch;         /* first character of token */
-
-    /* one token of lookahead; used sparingly */
-    int peek_token;     /* NONE if none */
-    yystype peek_tokval;
-    char peek_tokch;
-
-    /* Starting point of the absolute section.  NULL if not in an absolute
-     * section.
-     */
-    /*@null@*/ yasm_expr *absstart;
+enum nasm_parser_state {
+    INITIAL,
+    DIRECTIVE,
+    SECTION_DIRECTIVE,
+    DIRECTIVE2,
+    LINECHG,
+    LINECHG2,
+    INSTRUCTION
+};
 
-    /* Current location inside an absolute section (including the start).
-     * NULL if not in an absolute section.
-     */
-    /*@null@*/ yasm_expr *abspos;
-} yasm_parser_nasm;
+#define YYSTYPE nasm_yystype
 
 /* shorter access names to commonly used parser_nasm fields */
 #define p_object        (parser_nasm->object)