diff options
author | Tanya Lattner <tonic@nondot.org> | 2007-09-18 06:22:01 +0000 |
---|---|---|
committer | Tanya Lattner <tonic@nondot.org> | 2007-09-18 06:22:01 +0000 |
commit | 1480e2557d5dfe84e8bd76c820226bae376589db (patch) | |
tree | f4f2d611b0c650008240afad00bf7f4f00a6ca4d | |
parent | fc9f915baa78e3b5ac379012f4844ccc9486beb3 (diff) |
Merge from mainline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_21@42085 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/TableGen/FileLexer.cpp.cvs | 82 | ||||
-rw-r--r-- | utils/TableGen/FileParser.cpp.cvs | 3643 | ||||
-rw-r--r-- | utils/TableGen/FileParser.h.cvs | 134 |
3 files changed, 1511 insertions, 2348 deletions
diff --git a/utils/TableGen/FileLexer.cpp.cvs b/utils/TableGen/FileLexer.cpp.cvs index f36921b8bd..a4361405a5 100644 --- a/utils/TableGen/FileLexer.cpp.cvs +++ b/utils/TableGen/FileLexer.cpp.cvs @@ -21,7 +21,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header$ + * $Header: /cvs/root/flex/flex/skel.c,v 1.2 2004/05/07 00:28:17 jkh Exp $ */ #define FLEX_SCANNER @@ -502,7 +502,7 @@ goto find_rule; \ #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 1 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" #define INITIAL 0 /*===-- FileLexer.l - Scanner for TableGen Files ----------------*- C++ -*-===// // @@ -520,7 +520,7 @@ char *yytext; #define YY_NEVER_INTERACTIVE 1 #define comment 1 -#line 30 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 30 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" #include "llvm/Config/config.h" #include "llvm/Support/Streams.h" #include "Record.h" @@ -817,7 +817,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 185 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 185 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" #line 824 "Lexer.cpp" @@ -913,185 +913,185 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 187 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 187 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { /* Ignore comments */ } YY_BREAK case 2: YY_RULE_SETUP -#line 189 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 189 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { HandleInclude(yytext); } YY_BREAK case 3: YY_RULE_SETUP -#line 190 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 190 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+2, yytext+yyleng-2); return CODEFRAGMENT; } YY_BREAK case 4: YY_RULE_SETUP -#line 193 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 193 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return INT; } YY_BREAK case 5: YY_RULE_SETUP -#line 194 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 194 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return BIT; } YY_BREAK case 6: YY_RULE_SETUP -#line 195 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 195 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return BITS; } YY_BREAK case 7: YY_RULE_SETUP -#line 196 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 196 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return STRING; } YY_BREAK case 8: YY_RULE_SETUP -#line 197 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 197 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return LIST; } YY_BREAK case 9: YY_RULE_SETUP -#line 198 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 198 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return CODE; } YY_BREAK case 10: YY_RULE_SETUP -#line 199 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 199 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return DAG; } YY_BREAK case 11: YY_RULE_SETUP -#line 201 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 201 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return CLASS; } YY_BREAK case 12: YY_RULE_SETUP -#line 202 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 202 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return DEF; } YY_BREAK case 13: YY_RULE_SETUP -#line 203 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 203 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return DEFM; } YY_BREAK case 14: YY_RULE_SETUP -#line 204 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 204 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return MULTICLASS; } YY_BREAK case 15: YY_RULE_SETUP -#line 205 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 205 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return FIELD; } YY_BREAK case 16: YY_RULE_SETUP -#line 206 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 206 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return LET; } YY_BREAK case 17: YY_RULE_SETUP -#line 207 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 207 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return IN; } YY_BREAK case 18: YY_RULE_SETUP -#line 209 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 209 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return CONCATTOK; } YY_BREAK case 19: YY_RULE_SETUP -#line 210 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 210 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return SRATOK; } YY_BREAK case 20: YY_RULE_SETUP -#line 211 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 211 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return SRLTOK; } YY_BREAK case 21: YY_RULE_SETUP -#line 212 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 212 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return SHLTOK; } YY_BREAK case 22: YY_RULE_SETUP -#line 213 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 213 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return STRCONCATTOK; } YY_BREAK case 23: YY_RULE_SETUP -#line 216 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 216 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext, yytext+yyleng); return ID; } YY_BREAK case 24: YY_RULE_SETUP -#line 218 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 218 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng); return VARNAME; } YY_BREAK case 25: YY_RULE_SETUP -#line 221 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 221 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng-1); return STRVAL; } YY_BREAK case 26: YY_RULE_SETUP -#line 224 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 224 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.IntVal = ParseInt(Filetext); return INTVAL; } YY_BREAK case 27: YY_RULE_SETUP -#line 226 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 226 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { /* Ignore whitespace */ } YY_BREAK case 28: YY_RULE_SETUP -#line 229 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 229 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { BEGIN(comment); CommentDepth++; } YY_BREAK case 29: YY_RULE_SETUP -#line 230 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 230 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" {} /* eat anything that's not a '*' or '/' */ YY_BREAK case 30: YY_RULE_SETUP -#line 231 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 231 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" {} /* eat up '*'s not followed by '/'s */ YY_BREAK case 31: YY_RULE_SETUP -#line 232 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 232 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { ++CommentDepth; } YY_BREAK case 32: YY_RULE_SETUP -#line 233 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 233 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" {} /* eat up /'s not followed by *'s */ YY_BREAK case 33: YY_RULE_SETUP -#line 234 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 234 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { if (!--CommentDepth) { BEGIN(INITIAL); } } YY_BREAK case YY_STATE_EOF(comment): -#line 235 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 235 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { err() << "Unterminated comment!\n"; exit(1); } YY_BREAK case 34: YY_RULE_SETUP -#line 237 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 237 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return Filetext[0]; } YY_BREAK case 35: YY_RULE_SETUP -#line 239 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 239 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 1098 "Lexer.cpp" @@ -1978,6 +1978,6 @@ int main() return 0; } #endif -#line 239 "/Volumes/Wildlings/echeng/llvm/utils/TableGen/FileLexer.l" +#line 239 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" diff --git a/utils/TableGen/FileParser.cpp.cvs b/utils/TableGen/FileParser.cpp.cvs index 6cfc3dde27..a49846ffa0 100644 --- a/utils/TableGen/FileParser.cpp.cvs +++ b/utils/TableGen/FileParser.cpp.cvs @@ -1,134 +1,42 @@ -/* A Bison parser, made by GNU Bison 2.3. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* A Bison parser, made from /Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y + by GNU Bison version 1.28 */ - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. +#define YYBISON 1 /* Identify Bison output. */ - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "2.3" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - -/* Substitute the variable and function names. */ #define yyparse Fileparse -#define yylex Filelex +#define yylex Filelex #define yyerror Fileerror -#define yylval Filelval -#define yychar Filechar +#define yylval Filelval +#define yychar Filechar #define yydebug Filedebug #define yynerrs Filenerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - INT = 258, - BIT = 259, - STRING = 260, - BITS = 261, - LIST = 262, - CODE = 263, - DAG = 264, - CLASS = 265, - DEF = 266, - MULTICLASS = 267, - DEFM = 268, - FIELD = 269, - LET = 270, - IN = 271, - SHLTOK = 272, - SRATOK = 273, - SRLTOK = 274, - STRCONCATTOK = 275, - INTVAL = 276, - ID = 277, - VARNAME = 278, - STRVAL = 279, - CODEFRAGMENT = 280 - }; -#endif -/* Tokens. */ -#define INT 258 -#define BIT 259 -#define STRING 260 -#define BITS 261 -#define LIST 262 -#define CODE 263 -#define DAG 264 -#define CLASS 265 -#define DEF 266 -#define MULTICLASS 267 -#define DEFM 268 -#define FIELD 269 -#define LET 270 -#define IN 271 -#define SHLTOK 272 -#define SRATOK 273 -#define SRLTOK 274 -#define STRCONCATTOK 275 -#define INTVAL 276 -#define ID 277 -#define VARNAME 278 -#define STRVAL 279 -#define CODEFRAGMENT 280 - - - - -/* Copy the first part of user declarations. */ -#line 14 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" +#define INT 257 +#define BIT 258 +#define STRING 259 +#define BITS 260 +#define LIST 261 +#define CODE 262 +#define DAG 263 +#define CLASS 264 +#define DEF 265 +#define MULTICLASS 266 +#define DEFM 267 +#define FIELD 268 +#define LET 269 +#define IN 270 +#define CONCATTOK 271 +#define SHLTOK 272 +#define SRATOK 273 +#define SRLTOK 274 +#define STRCONCATTOK 275 +#define INTVAL 276 +#define ID 277 +#define VARNAME 278 +#define STRVAL 279 +#define CODEFRAGMENT 280 + +#line 14 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" #include "Record.h" #include "llvm/ADT/StringExtras.h" @@ -324,29 +232,8 @@ static void addSubClass(Record *SC, const std::vector<Init*> &TemplateArgs) { using namespace llvm; - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 210 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" -{ +#line 210 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" +typedef union { std::string* StrVal; int IntVal; llvm::RecTy* Ty; @@ -358,1195 +245,575 @@ typedef union YYSTYPE SubClassRefTy* SubClassRef; std::vector<SubClassRefTy>* SubClassList; std::vector<std::pair<llvm::Init*, std::string> >* DagValueList; -} -/* Line 193 of yacc.c. */ -#line 364 "FileParser.tab.c" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 216 of yacc.c. */ -#line 377 "FileParser.tab.c" +} YYSTYPE; +#include <stdio.h> -#ifdef short -# undef short +#ifndef __cplusplus +#ifndef __STDC__ +#define const #endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; -#else -typedef short int yytype_int8; -#endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif +#define YYFINAL 194 +#define YYFLAG -32768 +#define YYNTBASE 42 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 280 ? yytranslate[x] : 91) + +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, + 37, 2, 2, 38, 40, 35, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 39, 41, 27, + 29, 28, 30, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 33, 2, 34, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 31, 2, 32, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 +}; -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif +#if YYDEBUG != 0 +static const short yyprhs[] = { 0, + 0, 2, 4, 6, 11, 13, 18, 20, 22, 24, + 25, 27, 28, 31, 33, 35, 37, 39, 41, 43, + 47, 52, 57, 61, 65, 70, 75, 82, 89, 96, + 103, 110, 111, 114, 117, 122, 123, 125, 127, 131, + 134, 138, 144, 149, 151, 152, 156, 157, 159, 161, + 165, 170, 173, 180, 181, 184, 186, 190, 192, 197, + 199, 203, 204, 207, 209, 213, 217, 218, 220, 222, + 223, 225, 227, 229, 230, 234, 235, 236, 243, 247, + 249, 251, 254, 256, 257, 258, 267, 268, 275, 277, + 279, 281, 283, 288, 290, 294, 295, 300, 305, 308, + 310, 313 +}; -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if YYENABLE_NLS -# if ENABLE_NLS -# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YY_ -# define YY_(msgid) msgid -# endif -#endif +static const short yyrhs[] = { 23, + 0, 5, 0, 4, 0, 6, 27, 22, 28, 0, + 3, 0, 7, 27, 43, 28, 0, 8, 0, 9, + 0, 42, 0, 0, 14, 0, 0, 29, 47, 0, + 23, 0, 46, 0, 22, 0, 25, 0, 26, 0, + 30, 0, 31, 54, 32, 0, 23, 27, 55, 28, + 0, 47, 31, 52, 32, 0, 33, 54, 34, 0, + 47, 35, 23, 0, 36, 46, 50, 37, 0, 47, + 33, 52, 34, 0, 17, 36, 47, 38, 47, 37, + 0, 18, 36, 47, 38, 47, 37, 0, 19, 36, + 47, 38, 47, 37, 0, 20, 36, 47, 38, 47, + 37, 0, 21, 36, 47, 38, 47, 37, 0, 0, + 39, 24, 0, 47, 48, 0, 49, 38, 47, 48, + 0, 0, 49, 0, 22, 0, 22, 40, 22, 0, + 22, 22, 0, 51, 38, 22, 0, 51, 38, 22, + 40, 22, 0, 51, 38, 22, 22, 0, 51, 0, + 0, 31, 52, 32, 0, 0, 55, 0, 47, 0, + 55, 38, 47, 0, 44, 43, 23, 45, 0, 56, + 41, 0, 15, 23, 53, 29, 47, 41, 0, 0, + 58, 57, 0, 41, 0, 31, 58, 32, 0, 42, + 0, 42, 27, 55, 28, 0, 60, 0, 61, 38, + 60, 0, 0, 39, 61, 0, 56, 0, 63, 38, + 56, 0, 27, 63, 28, 0, 0, 64, 0, 23, + 0, 0, 66, 0, 67, 0, 67, 0, 0, 62, + 71, 59, 0, 0, 0, 10, 68, 73, 65, 74, + 70, 0, 11, 69, 70, 0, 75, 0, 76, 0, + 77, 76, 0, 23, 0, 0, 0, 12, 78, 80, + 65, 81, 31, 77, 32, 0, 0, 13, 23, 83, + 39, 60, 41, 0, 72, 0, 75, 0, 79, 0, + 82, 0, 23, 53, 29, 47, 0, 85, 0, 86, + 38, 85, 0, 0, 15, 88, 86, 16, 0, 87, + 31, 89, 32, 0, 87, 84, 0, 84, 0, 89, + 84, 0, 89, 0 +}; -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) -#else -# define YYUSE(e) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; -#endif -{ - return i; -} +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 246, 268, 270, 272, 274, 276, 278, 280, 282, 286, + 286, 288, 288, 290, 313, 315, 317, 320, 323, 325, + 338, 366, 373, 376, 383, 386, 394, 396, 398, 400, + 402, 406, 409, 413, 418, 424, 427, 430, 433, 446, + 460, 462, 475, 491, 493, 493, 497, 499, 503, 506, + 510, 527, 529, 535, 535, 536, 536, 538, 540, 544, + 549, 554, 557, 561, 564, 569, 570, 570, 572, 572, + 574, 581, 599, 624, 638, 643, 645, 647, 651, 661, + 675, 678, 682, 693, 695, 697, 702, 702, 776, 776, + 777, 777, 779, 784, 784, 787, 787, 790, 793, 797, + 797, 799 +}; #endif -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined _STDLIB_H \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","INT","BIT", +"STRING","BITS","LIST","CODE","DAG","CLASS","DEF","MULTICLASS","DEFM","FIELD", +"LET","IN","CONCATTOK","SHLTOK","SRATOK","SRLTOK","STRCONCATTOK","INTVAL","ID", +"VARNAME","STRVAL","CODEFRAGMENT","'<'","'>'","'='","'?'","'{'","'}'","'['", +"']'","'.'","'('","')'","','","':'","'-'","';'","ClassID","Type","OptPrefix", +"OptValue","IDValue","Value","OptVarName","DagArgListNE","DagArgList","RBitList", +"BitList","OptBitList","ValueList","ValueListNE","Declaration","BodyItem","BodyList", +"Body","SubClassRef","ClassListNE","ClassList","DeclListNE","TemplateArgList", +"OptTemplateArgList","OptID","ObjectName","ClassName","DefName","ObjectBody", +"@1","ClassInst","@2","@3","DefInst","MultiClassDef","MultiClassBody","MultiClassName", +"MultiClassInst","@4","@5","DefMInst","@6","Object","LETItem","LETList","LETCommand", +"@7","ObjectList","File", NULL +}; #endif -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 27 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 204 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 41 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 50 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 102 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 188 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 280 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 35, 36, 2, 2, 37, 39, 34, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 38, 40, - 26, 28, 27, 29, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 32, 2, 33, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 30, 2, 31, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25 +static const short yyr1[] = { 0, + 42, 43, 43, 43, 43, 43, 43, 43, 43, 44, + 44, 45, 45, 46, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 48, 48, 49, 49, 50, 50, 51, 51, 51, + 51, 51, 51, 52, 53, 53, 54, 54, 55, 55, + 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, + 61, 62, 62, 63, 63, 64, 65, 65, 66, 66, + 67, 68, 69, 71, 70, 73, 74, 72, 75, 76, + 77, 77, 78, 80, 81, 79, 83, 82, 84, 84, + 84, 84, 85, 86, 86, 88, 87, 84, 84, 89, + 89, 90 }; -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 5, 7, 9, 14, 16, 21, 23, - 25, 27, 28, 30, 31, 34, 36, 38, 40, 42, - 44, 46, 50, 55, 60, 64, 68, 73, 78, 85, - 92, 99, 106, 107, 110, 113, 118, 119, 121, 123, - 127, 130, 134, 140, 145, 147, 148, 152, 153, 155, - 157, 161, 166, 169, 176, 177, 180, 182, 186, 188, - 193, 195, 199, 200, 203, 205, 209, 213, 214, 216, - 218, 219, 221, 223, 225, 226, 230, 231, 232, 239, - 243, 245, 247, 250, 252, 253, 254, 263, 264, 271, - 273, 275, 277, 279, 284, 286, 290, 291, 296, 301, - 304, 306, 309 +static const short yyr2[] = { 0, + 1, 1, 1, 4, 1, 4, 1, 1, 1, 0, + 1, 0, 2, 1, 1, 1, 1, 1, 1, 3, + 4, 4, 3, 3, 4, 4, 6, 6, 6, 6, + 6, 0, 2, 2, 4, 0, 1, 1, 3, 2, + 3, 5, 4, 1, 0, 3, 0, 1, 1, 3, + 4, 2, 6, 0, 2, 1, 3, 1, 4, 1, + 3, 0, 2, 1, 3, 3, 0, 1, 1, 0, + 1, 1, 1, 0, 3, 0, 0, 6, 3, 1, + 1, 2, 1, 0, 0, 8, 0, 6, 1, 1, + 1, 1, 4, 1, 3, 0, 4, 4, 2, 1, + 2, 1 }; -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 90, 0, -1, 22, -1, 5, -1, 4, -1, 6, - 26, 21, 27, -1, 3, -1, 7, 26, 43, 27, - -1, 8, -1, 9, -1, 42, -1, -1, 14, -1, - -1, 28, 47, -1, 22, -1, 46, -1, 21, -1, - 24, -1, 25, -1, 29, -1, 30, 54, 31, -1, - 22, 26, 55, 27, -1, 47, 30, 52, 31, -1, - 32, 54, 33, -1, 47, 34, 22, -1, 35, 46, - 50, 36, -1, 47, 32, 52, 33, -1, 17, 35, - 47, 37, 47, 36, -1, 18, 35, 47, 37, 47, - 36, -1, 19, 35, 47, 37, 47, 36, -1, 20, - 35, 47, 37, 47, 36, -1, -1, 38, 23, -1, - 47, 48, -1, 49, 37, 47, 48, -1, -1, 49, - -1, 21, -1, 21, 39, 21, -1, 21, 21, -1, - 51, 37, 21, -1, 51, 37, 21, 39, 21, -1, - 51, 37, 21, 21, -1, 51, -1, -1, 30, 52, - 31, -1, -1, 55, -1, 47, -1, 55, 37, 47, - -1, 44, 43, 22, 45, -1, 56, 40, -1, 15, - 22, 53, 28, 47, 40, -1, -1, 58, 57, -1, - 40, -1, 30, 58, 31, -1, 42, -1, 42, 26, - 55, 27, -1, 60, -1, 61, 37, 60, -1, -1, - 38, 61, -1, 56, -1, 63, 37, 56, -1, 26, - 63, 27, -1, -1, 64, -1, 22, |