Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: third_party/yasm/patched-yasm/modules/parsers/nasm/nasm-parser.h

Issue 6170009: Update our yasm copy to yasm 1.1.0 (Part 1: yasm side)... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* $Id: nasm-parser.h 2167 2009-01-02 08:36:09Z peter $ 1 /* $Id: nasm-parser.h 2277 2010-01-19 07:03:15Z peter $
2 * NASM-compatible parser header file 2 * NASM-compatible parser header file
3 * 3 *
4 * Copyright (C) 2002-2007 Peter Johnson 4 * Copyright (C) 2002-2007 Peter Johnson
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright 11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the 12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution. 13 * documentation and/or other materials provided with the distribution.
14 * 14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS'' 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE. 25 * POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 #ifndef YASM_NASM_PARSER_H 27 #ifndef YASM_NASM_PARSER_H
28 #define YASM_NASM_PARSER_H 28 #define YASM_NASM_PARSER_H
29 29
30 #include "nasm-parser-struct.h"
31
30 #define YYCTYPE unsigned char 32 #define YYCTYPE unsigned char
31 33
32 #define MAX_SAVED_LINE_LEN 80 34 #define MAX_SAVED_LINE_LEN 80
33 35
34 enum tokentype { 36 enum tokentype {
35 INTNUM = 258, 37 INTNUM = 258,
36 FLTNUM, 38 FLTNUM,
37 DIRECTIVE_NAME, 39 DIRECTIVE_NAME,
38 FILENAME, 40 FILENAME,
39 STRING, 41 STRING,
40 SIZE_OVERRIDE, 42 SIZE_OVERRIDE,
41 OFFSET, 43 OFFSET,
42 DECLARE_DATA, 44 DECLARE_DATA,
43 RESERVE_SPACE, 45 RESERVE_SPACE,
44 LABEL, 46 LABEL,
45 INCBIN, 47 INCBIN,
46 EQU, 48 EQU,
47 TIMES, 49 TIMES,
48 DUP, 50 DUP,
49 SEG, 51 SEG,
50 WRT, 52 WRT,
51 ABS, 53 ABS,
52 REL, 54 REL,
53 NOSPLIT, 55 NOSPLIT,
54 STRICT, 56 STRICT,
55 INSN, 57 INSN,
56 PREFIX, 58 PREFIX,
57 REG, 59 REG,
60 REGGROUP,
58 SEGREG, 61 SEGREG,
59 TARGETMOD, 62 TARGETMOD,
60 LEFT_OP, 63 LEFT_OP,
61 RIGHT_OP, 64 RIGHT_OP,
62 LOW, 65 LOW,
63 HIGH, 66 HIGH,
64 SIGNDIV, 67 SIGNDIV,
65 SIGNMOD, 68 SIGNMOD,
66 START_SECTION_ID, 69 START_SECTION_ID,
67 ID, 70 ID,
68 LOCAL_ID, 71 LOCAL_ID,
69 SPECIAL_ID, 72 SPECIAL_ID,
70 NONLOCAL_ID, 73 NONLOCAL_ID,
71 LINE, 74 LINE,
72 NONE /* special token for lookahead */ 75 NONE /* special token for lookahead */
73 }; 76 };
74 77
75 typedef union { 78 enum nasm_parser_state {
76 unsigned int int_info; 79 INITIAL,
77 char *str_val; 80 DIRECTIVE,
78 yasm_intnum *intn; 81 SECTION_DIRECTIVE,
79 yasm_floatnum *flt; 82 DIRECTIVE2,
80 yasm_bytecode *bc; 83 LINECHG,
81 uintptr_t arch_data; 84 LINECHG2,
82 struct { 85 INSTRUCTION
83 char *contents; 86 };
84 size_t len;
85 } str;
86 } yystype;
87 #define YYSTYPE yystype
88 87
89 typedef struct yasm_parser_nasm { 88 #define YYSTYPE nasm_yystype
90 int tasm;
91
92 /*@only@*/ yasm_object *object;
93
94 /* last "base" label for local (.) labels */
95 /*@null@*/ char *locallabel_base;
96 size_t locallabel_base_len;
97
98 /*@dependent@*/ yasm_preproc *preproc;
99 /*@dependent@*/ yasm_errwarns *errwarns;
100
101 /*@dependent@*/ yasm_linemap *linemap;
102
103 /*@null@*/ yasm_bytecode *prev_bc;
104
105 int save_input;
106
107 yasm_scanner s;
108 enum {
109 INITIAL,
110 DIRECTIVE,
111 SECTION_DIRECTIVE,
112 DIRECTIVE2,
113 LINECHG,
114 LINECHG2,
115 INSTRUCTION
116 } state;
117
118 int token; /* enum tokentype or any character */
119 yystype tokval;
120 char tokch; /* first character of token */
121
122 /* one token of lookahead; used sparingly */
123 int peek_token; /* NONE if none */
124 yystype peek_tokval;
125 char peek_tokch;
126
127 /* Starting point of the absolute section. NULL if not in an absolute
128 * section.
129 */
130 /*@null@*/ yasm_expr *absstart;
131
132 /* Current location inside an absolute section (including the start).
133 * NULL if not in an absolute section.
134 */
135 /*@null@*/ yasm_expr *abspos;
136 } yasm_parser_nasm;
137 89
138 /* shorter access names to commonly used parser_nasm fields */ 90 /* shorter access names to commonly used parser_nasm fields */
139 #define p_object (parser_nasm->object) 91 #define p_object (parser_nasm->object)
140 #define p_symtab (parser_nasm->object->symtab) 92 #define p_symtab (parser_nasm->object->symtab)
141 #define cursect (parser_nasm->object->cur_section) 93 #define cursect (parser_nasm->object->cur_section)
142 #define curtok (parser_nasm->token) 94 #define curtok (parser_nasm->token)
143 #define curval (parser_nasm->tokval) 95 #define curval (parser_nasm->tokval)
144 96
145 #define INTNUM_val (curval.intn) 97 #define INTNUM_val (curval.intn)
146 #define FLTNUM_val (curval.flt) 98 #define FLTNUM_val (curval.flt)
147 #define DIRECTIVE_NAME_val (curval.str_val) 99 #define DIRECTIVE_NAME_val (curval.str_val)
148 #define FILENAME_val (curval.str_val) 100 #define FILENAME_val (curval.str_val)
149 #define STRING_val (curval.str) 101 #define STRING_val (curval.str)
150 #define SIZE_OVERRIDE_val (curval.int_info) 102 #define SIZE_OVERRIDE_val (curval.int_info)
151 #define DECLARE_DATA_val (curval.int_info) 103 #define DECLARE_DATA_val (curval.int_info)
152 #define RESERVE_SPACE_val (curval.int_info) 104 #define RESERVE_SPACE_val (curval.int_info)
153 #define INSN_val (curval.bc) 105 #define INSN_val (curval.bc)
154 #define PREFIX_val (curval.arch_data) 106 #define PREFIX_val (curval.arch_data)
155 #define REG_val (curval.arch_data) 107 #define REG_val (curval.arch_data)
108 #define REGGROUP_val (curval.arch_data)
156 #define SEGREG_val (curval.arch_data) 109 #define SEGREG_val (curval.arch_data)
157 #define TARGETMOD_val (curval.arch_data) 110 #define TARGETMOD_val (curval.arch_data)
158 #define ID_val (curval.str_val) 111 #define ID_val (curval.str_val)
159 112
160 #define cur_line (yasm_linemap_get_current(parser_nasm->linemap)) 113 #define cur_line (yasm_linemap_get_current(parser_nasm->linemap))
161 114
162 #define p_expr_new_tree(l,o,r) yasm_expr_create_tree(l,o,r,cur_line) 115 #define p_expr_new_tree(l,o,r) yasm_expr_create_tree(l,o,r,cur_line)
163 #define p_expr_new_branch(o,r) yasm_expr_create_branch(o,r,cur_line) 116 #define p_expr_new_branch(o,r) yasm_expr_create_branch(o,r,cur_line)
164 #define p_expr_new_ident(r) yasm_expr_create_ident(r,cur_line) 117 #define p_expr_new_ident(r) yasm_expr_create_ident(r,cur_line)
165 118
166 void nasm_parser_parse(yasm_parser_nasm *parser_nasm); 119 void nasm_parser_parse(yasm_parser_nasm *parser_nasm);
167 void nasm_parser_cleanup(yasm_parser_nasm *parser_nasm); 120 void nasm_parser_cleanup(yasm_parser_nasm *parser_nasm);
168 int nasm_parser_lex(YYSTYPE *lvalp, yasm_parser_nasm *parser_nasm); 121 int nasm_parser_lex(YYSTYPE *lvalp, yasm_parser_nasm *parser_nasm);
169 122
170 #endif 123 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698