1 /* Automatically generated by Kelbt from "rlparse.kh". 2 * 3 * Parts of this file are copied from Kelbt source covered by the GNU 4 * GPL. As a special exception, you may use the parts of this file copied 5 * from Kelbt source without restriction. The remainder is derived from 6 * "rlparse.kh" and inherits the copyright status of that file. 7 */ 8 9 #line 1 "rlparse.kh" 10 /* 11 * Copyright 2001-2007 Adrian Thurston <thurston@complang.org> 12 */ 13 14 /* This file is part of Ragel. 15 * 16 * Ragel is free software; you can redistribute it and/or modify 17 * it under the terms of the GNU General Public License as published by 18 * the Free Software Foundation; either version 2 of the License, or 19 * (at your option) any later version. 20 * 21 * Ragel is distributed in the hope that it will be useful, 22 * but WITHOUT ANY WARRANTY; without even the implied warranty of 23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 24 * GNU General Public License for more details. 25 * 26 * You should have received a copy of the GNU General Public License 27 * along with Ragel; if not, write to the Free Software 28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 29 */ 30 31 #ifndef _RLPARSE_H 32 #define _RLPARSE_H 33 34 #include <iostream> 35 #include "avltree.h" 36 #include "parsedata.h" 37 38 39 /* Import scanner tokens. */ 40 #define IMP_Word 128 41 #define IMP_Literal 129 42 #define IMP_UInt 130 43 #define IMP_Define 131 44 45 /* This is used for tracking the include files/machine pairs. */ 46 struct IncludeHistoryItem 47 { IncludeHistoryItemIncludeHistoryItem48 IncludeHistoryItem( const char *fileName, const char *sectionName ) 49 : fileName(fileName), sectionName(sectionName) {} 50 51 const char *fileName; 52 const char *sectionName; 53 }; 54 55 typedef Vector<IncludeHistoryItem> IncludeHistory; 56 57 struct Parser 58 { 59 #line 102 "rlparse.kh" 60 61 62 #line 63 "rlparse.h" 63 struct Parser_Block *block; 64 struct Parser_LangEl *freshEl; 65 int freshPos; 66 struct Parser_LangEl *pool; 67 int numRetry; 68 int numNodes; 69 struct Parser_LangEl *stackTop; 70 struct Parser_LangEl *lastFinal; 71 int errCount; 72 int curs; 73 #line 105 "rlparse.kh" 74 75 void init(); 76 int parseLangEl( int type, const Token *token ); 77 ParserParser78 Parser( const char *fileName, char *sectionName, InputLoc §ionLoc ) 79 : sectionName(sectionName) 80 { 81 pd = new ParseData( fileName, sectionName, sectionLoc ); 82 exportContext.append( false ); 83 includeHistory.append( IncludeHistoryItem( 84 fileName, sectionName ) ); 85 } 86 87 int token( InputLoc &loc, int tokId, char *tokstart, int toklen ); 88 void tryMachineDef( InputLoc &loc, char *name, 89 MachineDef *machineDef, bool isInstance ); 90 91 /* Report an error encountered by the parser. */ 92 ostream &parse_error( int tokId, Token &token ); 93 94 ParseData *pd; 95 96 /* The name of the root section, this does not change during an include. */ 97 char *sectionName; 98 99 NameRef nameRef; 100 NameRefList nameRefList; 101 102 Vector<bool> exportContext; 103 IncludeHistory includeHistory; 104 105 Parser *prev, *next; 106 }; 107 108 #line 109 "rlparse.h" 109 #define TK_Word 128 110 #define TK_Literal 129 111 #define TK_Number 130 112 #define TK_EndSection 131 113 #define TK_UInt 132 114 #define TK_Hex 133 115 #define TK_DotDot 134 116 #define TK_ColonGt 135 117 #define TK_ColonGtGt 136 118 #define TK_LtColon 137 119 #define TK_Arrow 138 120 #define TK_DoubleArrow 139 121 #define TK_StarStar 140 122 #define TK_ColonEquals 141 123 #define TK_NameSep 142 124 #define TK_BarStar 143 125 #define TK_DashDash 144 126 #define TK_StartCond 145 127 #define TK_AllCond 146 128 #define TK_LeavingCond 147 129 #define TK_Middle 148 130 #define TK_StartGblError 149 131 #define TK_AllGblError 150 132 #define TK_FinalGblError 151 133 #define TK_NotFinalGblError 152 134 #define TK_NotStartGblError 153 135 #define TK_MiddleGblError 154 136 #define TK_StartLocalError 155 137 #define TK_AllLocalError 156 138 #define TK_FinalLocalError 157 139 #define TK_NotFinalLocalError 158 140 #define TK_NotStartLocalError 159 141 #define TK_MiddleLocalError 160 142 #define TK_StartEOF 161 143 #define TK_AllEOF 162 144 #define TK_FinalEOF 163 145 #define TK_NotFinalEOF 164 146 #define TK_NotStartEOF 165 147 #define TK_MiddleEOF 166 148 #define TK_StartToState 167 149 #define TK_AllToState 168 150 #define TK_FinalToState 169 151 #define TK_NotFinalToState 170 152 #define TK_NotStartToState 171 153 #define TK_MiddleToState 172 154 #define TK_StartFromState 173 155 #define TK_AllFromState 174 156 #define TK_FinalFromState 175 157 #define TK_NotFinalFromState 176 158 #define TK_NotStartFromState 177 159 #define TK_MiddleFromState 178 160 #define RE_Slash 179 161 #define RE_SqOpen 180 162 #define RE_SqOpenNeg 181 163 #define RE_SqClose 182 164 #define RE_Dot 183 165 #define RE_Star 184 166 #define RE_Dash 185 167 #define RE_Char 186 168 #define IL_WhiteSpace 187 169 #define IL_Comment 188 170 #define IL_Literal 189 171 #define IL_Symbol 190 172 #define KW_Machine 191 173 #define KW_Include 192 174 #define KW_Import 193 175 #define KW_Write 194 176 #define KW_Action 195 177 #define KW_AlphType 196 178 #define KW_Range 197 179 #define KW_GetKey 198 180 #define KW_InWhen 199 181 #define KW_When 200 182 #define KW_OutWhen 201 183 #define KW_Eof 202 184 #define KW_Err 203 185 #define KW_Lerr 204 186 #define KW_To 205 187 #define KW_From 206 188 #define KW_Export 207 189 #define KW_PrePush 208 190 #define KW_PostPop 209 191 #define KW_Length 210 192 #define KW_Break 211 193 #define KW_Exec 212 194 #define KW_Hold 213 195 #define KW_PChar 214 196 #define KW_Char 215 197 #define KW_Goto 216 198 #define KW_Call 217 199 #define KW_Ret 218 200 #define KW_CurState 219 201 #define KW_TargState 220 202 #define KW_Entry 221 203 #define KW_Next 222 204 #define KW_Variable 223 205 #define KW_Access 224 206 #define Parser_tk_eof 225 207 208 #line 140 "rlparse.kh" 209 210 #endif 211