From 3a4f2e256f6f5225a2caab2a97be4ac785033fa8 Mon Sep 17 00:00:00 2001 From: pfaure Date: Sun, 4 Apr 2021 23:48:27 +0200 Subject: [PATCH] Dossiers propres --- .gitignore | 9 + Analyse_Lexicale/a.out | Bin 32656 -> 0 bytes Analyse_Lexicale/al.lex | 44 - Analyse_Lexicale/as.tab.c | 1621 -------------- Analyse_Lexicale/as.tab.h | 101 - Analyse_Lexicale/as.y | 102 - Analyse_Lexicale/comp.sh | 5 - Analyse_Lexicale/grammaire_c_minimaliste | 52 - Analyse_Lexicale/lex.yy.c | 1937 ----------------- Analyse_Lexicale/progC | 17 - Analyse_Lexicale/table_symboles.c | 109 - Analyse_Lexicale/table_symboles.h | 48 - Analyse_Lexicale/test | Bin 8304 -> 0 bytes Analyse_Lexicale/truc | 0 Fichiers_Tests/progC | 16 +- Lex_Yacc/ProgC | 4 - Lex_Yacc/a.exe | Bin 50552 -> 0 bytes Lex_Yacc/as.output | 1367 ------------ Lex_Yacc/as.tab.c | 1853 ---------------- Lex_Yacc/as.tab.h | 105 - Lex_Yacc/as.y | 12 +- Lex_Yacc/comp.sh | 4 - Lex_Yacc/lex.yy.c | 1936 ---------------- Lex_Yacc/lex.yy.o | Bin 27160 -> 0 bytes Lex_Yacc/output.txt | 0 Makefile | 59 + Symboles/tab_instruc.o | Bin 4424 -> 0 bytes Symboles/table_symboles.o | Bin 6352 -> 0 bytes Symboles/test_table_symbole | Bin 12928 -> 0 bytes Symboles/test_table_symbole.o | Bin 4456 -> 0 bytes .../Instructions}/tab_instruc.c | 0 .../Instructions}/tab_instruc.h | 0 .../Symboles}/table_symboles.c | 0 .../Symboles}/table_symboles.h | 0 .../Symboles/test.c | 0 35 files changed, 76 insertions(+), 9325 deletions(-) create mode 100644 .gitignore delete mode 100755 Analyse_Lexicale/a.out delete mode 100644 Analyse_Lexicale/al.lex delete mode 100644 Analyse_Lexicale/as.tab.c delete mode 100644 Analyse_Lexicale/as.tab.h delete mode 100644 Analyse_Lexicale/as.y delete mode 100755 Analyse_Lexicale/comp.sh delete mode 100644 Analyse_Lexicale/grammaire_c_minimaliste delete mode 100644 Analyse_Lexicale/lex.yy.c delete mode 100644 Analyse_Lexicale/progC delete mode 100644 Analyse_Lexicale/table_symboles.c delete mode 100644 Analyse_Lexicale/table_symboles.h delete mode 100755 Analyse_Lexicale/test delete mode 100644 Analyse_Lexicale/truc delete mode 100644 Lex_Yacc/ProgC delete mode 100755 Lex_Yacc/a.exe delete mode 100644 Lex_Yacc/as.output delete mode 100644 Lex_Yacc/as.tab.c delete mode 100644 Lex_Yacc/as.tab.h delete mode 100755 Lex_Yacc/comp.sh delete mode 100644 Lex_Yacc/lex.yy.c delete mode 100644 Lex_Yacc/lex.yy.o delete mode 100644 Lex_Yacc/output.txt create mode 100644 Makefile delete mode 100644 Symboles/tab_instruc.o delete mode 100644 Symboles/table_symboles.o delete mode 100755 Symboles/test_table_symbole delete mode 100644 Symboles/test_table_symbole.o rename {Symboles => Tables/Instructions}/tab_instruc.c (100%) rename {Symboles => Tables/Instructions}/tab_instruc.h (100%) rename {Symboles => Tables/Symboles}/table_symboles.c (100%) rename {Symboles => Tables/Symboles}/table_symboles.h (100%) rename Symboles/test_table_symbole.c => Tables/Symboles/test.c (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c4aa91 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +rondoudou_gcc +output.txt +Tables/Symboles/*.o +Tables/Symboles/test +Tables/Instructions/*.o +Tables/Instructions/test +Lex_Yacc/as.output +Lex_Yacc/as.tab.* +Lex_Yacc/lex.yy.* diff --git a/Analyse_Lexicale/a.out b/Analyse_Lexicale/a.out deleted file mode 100755 index e0a5ab23bee01bd7ddb353a9f138997989c82b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32656 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 diff --git a/Analyse_Lexicale/al.lex b/Analyse_Lexicale/al.lex deleted file mode 100644 index 7c195ce..0000000 --- a/Analyse_Lexicale/al.lex +++ /dev/null @@ -1,44 +0,0 @@ -%{ -#include "as.tab.h" -int yywrap(void){return 1;} -%} - -%% - -"main" { return tMAIN ;} -"{" { return tOBRACKET;} -"}" { return tCBRACKET; } -"(" { return tOBRACE; } -")" { return tCBRACE; } -"const" { return tCONST; } -"int" { return tINT; } -"printf" { return tPRINTF; } //Degeu mais à degager -"if" { return tIF; } -"while" { return tWHILE; } -"<" { return tLT; } -">" { return tGT; } -"==" { return tEQCOND; } -"&&" { return tAND; } -"||" { return tOR; } -"else" { return tELSE;} - - -[0-9]+ { yylval.nombre = atoi(yytext); return tNB; } -[0-9]+e[0-9]+ { yylval.nombre = -1; return tNBEXP; } //Renvoyer le token tNB et pas tNBEXP -"+" { return tADD; } -"-" { return tSUB; } -"*" { return tMUL; } -"/" { return tDIV; } -"=" { return tEQ; } -";" { return tPV; } -" " {} //Ne pas les retourner à Yacc -" " {} //Ne pas les retourner à Yacc -"," { return tCOMA; } -"/*"[^(*/)]*"*/" { printf("commentaire\n");} -"\n" {} //Ne pas les retourner à Yacc -[a-zA-Z][a-zA-Z0-9_]* { strcpy(yylval.id, yytext); return tID; } -. { return tERROR; } - -%% - - diff --git a/Analyse_Lexicale/as.tab.c b/Analyse_Lexicale/as.tab.c deleted file mode 100644 index 4e1070e..0000000 --- a/Analyse_Lexicale/as.tab.c +++ /dev/null @@ -1,1621 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - - 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 3 of the License, 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, see . */ - -/* 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 "3.0.4" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* Copy the first part of user declarations. */ - -#line 67 "as.tab.c" /* yacc.c:339 */ - -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* In a future release of Bison, this section will be replaced - by #include "as.tab.h". */ -#ifndef YY_YY_AS_TAB_H_INCLUDED -# define YY_YY_AS_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - tMAIN = 258, - tOBRACKET = 259, - tCBRACKET = 260, - tOBRACE = 261, - tCBRACE = 262, - tINT = 263, - tCONST = 264, - tPV = 265, - tCOMA = 266, - tMUL = 267, - tDIV = 268, - tADD = 269, - tSUB = 270, - tEQ = 271, - tNB = 272, - tNBEXP = 273, - tID = 274, - tPRINTF = 275, - tERROR = 276, - tIF = 277, - tWHILE = 278, - tELSE = 279, - tLT = 280, - tGT = 281, - tEQCOND = 282, - tAND = 283, - tOR = 284 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE -{ -#line 1 "as.y" /* yacc.c:355 */ - - int nombre; - char id[30]; - -#line 142 "as.tab.c" /* yacc.c:355 */ -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_AS_TAB_H_INCLUDED */ - -/* Copy the second part of user declarations. */ -#line 5 "as.y" /* yacc.c:358 */ - -#include - -#line 162 "as.tab.c" /* yacc.c:358 */ - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#else -typedef signed char 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 - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#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 /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -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_alloc; - YYSTYPE yyvs_alloc; -}; - -/* 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) - -# define YYCOPY_NEEDED 1 - -/* 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_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 4 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 117 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 30 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 19 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 45 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 98 - -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 284 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ -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, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 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, 26, 27, 28, 29 -}; - -#if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint8 yyrline[] = -{ - 0, 28, 28, 30, 31, 32, 33, 34, 36, 39, - 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, - 52, 54, 55, 56, 57, 60, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, - 78, 79, 80, 81, 82, 84 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "tMAIN", "tOBRACKET", "tCBRACKET", - "tOBRACE", "tCBRACE", "tINT", "tCONST", "tPV", "tCOMA", "tMUL", "tDIV", - "tADD", "tSUB", "tEQ", "tNB", "tNBEXP", "tID", "tPRINTF", "tERROR", - "tIF", "tWHILE", "tELSE", "tLT", "tGT", "tEQCOND", "tAND", "tOR", - "$accept", "Main", "Params", "Param", "SuiteParams", "Body", - "Instructions", "Instruction", "If", "Else", "While", "Cond", - "SuiteCond", "Aff", "E", "Decl", "SuiteDecl", "FinDeclaration", - "Invocation", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284 -}; -# endif - -#define YYPACT_NINF -68 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-68))) - -#define YYTABLE_NINF -1 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int8 yypact[] = -{ - 9, 2, 22, 30, -68, 20, 18, 39, 40, -68, - 48, 20, -68, 73, -68, 40, 45, 50, 43, 64, - 69, 70, 72, 73, -68, -68, -68, -68, 81, -68, - 86, 79, 88, 80, 88, 88, -68, -68, -68, 85, - -7, 86, 88, 88, -68, -68, -68, 35, -68, 76, - 102, 28, 103, 86, -68, 88, -68, 95, 0, 75, - -68, 88, 88, 88, 88, 88, 88, 88, -68, 48, - 88, 88, -68, 48, -68, 53, 88, -68, 75, 75, - 75, 75, 75, 75, 75, 89, 28, 28, -68, -68, - 59, -3, -68, -68, -68, -68, -68, -68 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 0, 0, 0, 0, 1, 3, 0, 0, 7, 5, - 0, 0, 4, 10, 2, 7, 0, 0, 0, 0, - 0, 0, 0, 10, 14, 15, 11, 12, 0, 6, - 42, 0, 0, 0, 0, 0, 8, 9, 13, 0, - 0, 42, 0, 0, 26, 27, 28, 0, 33, 0, - 0, 22, 0, 42, 44, 0, 39, 0, 0, 35, - 25, 0, 0, 0, 0, 0, 0, 0, 45, 0, - 0, 0, 21, 0, 41, 0, 0, 34, 30, 32, - 29, 31, 38, 37, 36, 19, 22, 22, 20, 43, - 0, 0, 16, 23, 24, 40, 18, 17 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = -{ - -68, -68, -68, 101, 99, -67, 92, -68, 25, -68, - -68, 82, -66, -68, -32, -68, -37, -68, -5 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = -{ - -1, 2, 7, 8, 12, 14, 22, 23, 24, 92, - 25, 50, 72, 26, 51, 27, 40, 56, 48 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint8 yytable[] = -{ - 47, 13, 85, 54, 57, 3, 88, 77, 28, 55, - 58, 59, 61, 62, 63, 64, 74, 1, 28, 20, - 93, 94, 4, 75, 96, 65, 66, 67, 6, 78, - 79, 80, 81, 82, 83, 84, 5, 9, 86, 87, - 61, 62, 63, 64, 90, 60, 10, 61, 62, 63, - 64, 11, 13, 65, 66, 67, 70, 71, 31, 32, - 65, 66, 67, 89, 30, 61, 62, 63, 64, 95, - 33, 61, 62, 63, 64, 34, 35, 36, 65, 66, - 67, 16, 17, 68, 65, 66, 67, 61, 62, 63, - 64, 38, 18, 19, 42, 20, 21, 39, 41, 49, - 65, 66, 67, 43, 53, 44, 45, 46, 19, 69, - 73, 76, 15, 91, 29, 37, 97, 52 -}; - -static const yytype_uint8 yycheck[] = -{ - 32, 4, 69, 10, 41, 3, 73, 7, 13, 16, - 42, 43, 12, 13, 14, 15, 53, 8, 23, 22, - 86, 87, 0, 55, 91, 25, 26, 27, 8, 61, - 62, 63, 64, 65, 66, 67, 6, 19, 70, 71, - 12, 13, 14, 15, 76, 10, 7, 12, 13, 14, - 15, 11, 4, 25, 26, 27, 28, 29, 8, 16, - 25, 26, 27, 10, 19, 12, 13, 14, 15, 10, - 6, 12, 13, 14, 15, 6, 6, 5, 25, 26, - 27, 8, 9, 7, 25, 26, 27, 12, 13, 14, - 15, 10, 19, 20, 6, 22, 23, 11, 19, 19, - 25, 26, 27, 15, 19, 17, 18, 19, 20, 7, - 7, 16, 11, 24, 15, 23, 91, 35 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 8, 31, 3, 0, 6, 8, 32, 33, 19, - 7, 11, 34, 4, 35, 33, 8, 9, 19, 20, - 22, 23, 36, 37, 38, 40, 43, 45, 48, 34, - 19, 8, 16, 6, 6, 6, 5, 36, 10, 11, - 46, 19, 6, 15, 17, 18, 19, 44, 48, 19, - 41, 44, 41, 19, 10, 16, 47, 46, 44, 44, - 10, 12, 13, 14, 15, 25, 26, 27, 7, 7, - 28, 29, 42, 7, 46, 44, 16, 7, 44, 44, - 44, 44, 44, 44, 44, 35, 44, 44, 35, 10, - 44, 24, 39, 42, 42, 10, 35, 38 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 30, 31, 32, 32, 33, 34, 34, 35, 36, - 36, 37, 37, 37, 37, 37, 38, 39, 39, 39, - 40, 41, 42, 42, 42, 43, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, - 45, 46, 46, 47, 47, 48 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 6, 0, 2, 2, 3, 0, 3, 2, - 0, 1, 1, 2, 1, 1, 6, 2, 2, 0, - 5, 2, 0, 3, 3, 4, 1, 1, 1, 3, - 3, 3, 3, 1, 3, 2, 3, 3, 3, 4, - 7, 3, 0, 3, 1, 4 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - YYUSE (yytype); -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - unsigned long int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 28 "as.y" /* yacc.c:1646 */ - { printf("Main reconnu\n"); } -#line 1301 "as.tab.c" /* yacc.c:1646 */ - break; - - case 3: -#line 30 "as.y" /* yacc.c:1646 */ - { printf("Sans Params\n"); } -#line 1307 "as.tab.c" /* yacc.c:1646 */ - break; - - case 5: -#line 32 "as.y" /* yacc.c:1646 */ - { printf("Prametre : %s\n", (yyvsp[0].id)); } -#line 1313 "as.tab.c" /* yacc.c:1646 */ - break; - - case 8: -#line 36 "as.y" /* yacc.c:1646 */ - { printf("Body reconnu\n"); } -#line 1319 "as.tab.c" /* yacc.c:1646 */ - break; - - case 16: -#line 48 "as.y" /* yacc.c:1646 */ - { printf("If reconnu\n"); } -#line 1325 "as.tab.c" /* yacc.c:1646 */ - break; - - case 17: -#line 49 "as.y" /* yacc.c:1646 */ - { printf("Else if reconnu\n"); } -#line 1331 "as.tab.c" /* yacc.c:1646 */ - break; - - case 18: -#line 50 "as.y" /* yacc.c:1646 */ - { printf("Else reconnu\n"); } -#line 1337 "as.tab.c" /* yacc.c:1646 */ - break; - - case 20: -#line 52 "as.y" /* yacc.c:1646 */ - { printf("While reconnu\n"); } -#line 1343 "as.tab.c" /* yacc.c:1646 */ - break; - - case 25: -#line 60 "as.y" /* yacc.c:1646 */ - { printf("%s prend une valeur\n", (yyvsp[-3].id)); } -#line 1349 "as.tab.c" /* yacc.c:1646 */ - break; - - case 39: -#line 77 "as.y" /* yacc.c:1646 */ - { printf("Declaration de %s\n", (yyvsp[-2].id)); } -#line 1355 "as.tab.c" /* yacc.c:1646 */ - break; - - case 40: -#line 78 "as.y" /* yacc.c:1646 */ - { printf("Declaration de %s (CONSTANTE)\n", (yyvsp[-4].id)); } -#line 1361 "as.tab.c" /* yacc.c:1646 */ - break; - - case 41: -#line 79 "as.y" /* yacc.c:1646 */ - { printf("Declaration de %s\n", (yyvsp[-1].id)); } -#line 1367 "as.tab.c" /* yacc.c:1646 */ - break; - - case 43: -#line 81 "as.y" /* yacc.c:1646 */ - { printf("Declaration avec valeur\n"); } -#line 1373 "as.tab.c" /* yacc.c:1646 */ - break; - - case 44: -#line 82 "as.y" /* yacc.c:1646 */ - { printf("Declaration sans valeur\n"); } -#line 1379 "as.tab.c" /* yacc.c:1646 */ - break; - - case 45: -#line 84 "as.y" /* yacc.c:1646 */ - { printf("Appel de printf sur %s\n", (yyvsp[-1].id)); } -#line 1385 "as.tab.c" /* yacc.c:1646 */ - break; - - -#line 1389 "as.tab.c" /* yacc.c:1646 */ - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} -#line 98 "as.y" /* yacc.c:1906 */ - -#include -void main(void) { - yyparse(); -} diff --git a/Analyse_Lexicale/as.tab.h b/Analyse_Lexicale/as.tab.h deleted file mode 100644 index d154757..0000000 --- a/Analyse_Lexicale/as.tab.h +++ /dev/null @@ -1,101 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - - 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 3 of the License, 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, see . */ - -/* 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. */ - -#ifndef YY_YY_AS_TAB_H_INCLUDED -# define YY_YY_AS_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - tMAIN = 258, - tOBRACKET = 259, - tCBRACKET = 260, - tOBRACE = 261, - tCBRACE = 262, - tINT = 263, - tCONST = 264, - tPV = 265, - tCOMA = 266, - tMUL = 267, - tDIV = 268, - tADD = 269, - tSUB = 270, - tEQ = 271, - tNB = 272, - tNBEXP = 273, - tID = 274, - tPRINTF = 275, - tERROR = 276, - tIF = 277, - tWHILE = 278, - tELSE = 279, - tLT = 280, - tGT = 281, - tEQCOND = 282, - tAND = 283, - tOR = 284 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE -{ -#line 1 "as.y" /* yacc.c:1909 */ - - int nombre; - char id[30]; - -#line 89 "as.tab.h" /* yacc.c:1909 */ -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_AS_TAB_H_INCLUDED */ diff --git a/Analyse_Lexicale/as.y b/Analyse_Lexicale/as.y deleted file mode 100644 index 17ddf16..0000000 --- a/Analyse_Lexicale/as.y +++ /dev/null @@ -1,102 +0,0 @@ -%union { - int nombre; - char id[30]; -} -%{ -#include -%} - -%token tMAIN -%token tOBRACKET tCBRACKET -%token tOBRACE tCBRACE -%token tINT -%token tCONST -%token tPV tCOMA -%token tMUL tDIV tADD tSUB tEQ -%token tNB tNBEXP -%token tID -%token tPRINTF -%token tERROR -%token tIF tWHILE tELSE -%token tLT tGT tEQCOND -%token tAND tOR - -//%type E - -%% - -Main : tINT tMAIN tOBRACE Params tCBRACE Body { printf("Main reconnu\n"); } ; - -Params : { printf("Sans Params\n"); } ; -Params : Param SuiteParams ; -Param : tINT tID { printf("Prametre : %s\n", $2); }; -SuiteParams : tCOMA Param SuiteParams ; -SuiteParams : ; - -Body : tOBRACKET Instructions tCBRACKET { printf("Body reconnu\n"); } ; - - -Instructions : Instruction Instructions ; -Instructions : ; -Instruction : Aff ; -Instruction : Decl ; -Instruction : Invocation tPV ; -Instruction : If; -Instruction : While; - - -If : tIF tOBRACE Cond tCBRACE Body Else { printf("If reconnu\n"); }; -Else : tELSE If { printf("Else if reconnu\n"); }; -Else : tELSE Body { printf("Else reconnu\n"); }; -Else : ; -While : tWHILE tOBRACE Cond tCBRACE Body { printf("While reconnu\n"); }; - -Cond : E SuiteCond ; -SuiteCond : ; -SuiteCond : tAND E SuiteCond; -SuiteCond : tOR E SuiteCond; - - -Aff : tID tEQ E tPV { printf("%s prend une valeur\n", $1); } ; - -E : tNB ; -E : tNBEXP ; -E : tID ; -E : E tADD E ; -E : E tMUL E ; -E : E tSUB E ; -E : E tDIV E ; -E : Invocation ; -E : tOBRACE E tCBRACE ; -E : tSUB E ; -E : E tEQCOND E; -E : E tGT E; -E : E tLT E; - - -Decl : tINT tID SuiteDecl FinDeclaration { printf("Declaration de %s\n", $2); } ; -Decl : tCONST tINT tID SuiteDecl tEQ E tPV { printf("Declaration de %s (CONSTANTE)\n", $3); } ; -SuiteDecl : tCOMA tID SuiteDecl { printf("Declaration de %s\n", $2); } ; -SuiteDecl : ; -FinDeclaration : tEQ E tPV { printf("Declaration avec valeur\n"); }; -FinDeclaration : tPV { printf("Declaration sans valeur\n"); }; - -Invocation : tPRINTF tOBRACE tID tCBRACE { printf("Appel de printf sur %s\n", $3); } ; - -/*S : E tPV - { printf("RES: %d\n", $1); } - S - | { printf("END\n"); } - ; - -E : E tADD E { $$ = $1 + $3; } - | E tSUB E { $$ = $1 - $3; } - | tOB E tCB { $$ = $2; } - | tNB { $$ = $1; } - ;*/ - -%% -#include -void main(void) { - yyparse(); -} diff --git a/Analyse_Lexicale/comp.sh b/Analyse_Lexicale/comp.sh deleted file mode 100755 index a325e4d..0000000 --- a/Analyse_Lexicale/comp.sh +++ /dev/null @@ -1,5 +0,0 @@ -bison -d as.y -flex al.lex -gcc *.c -ly -cat progC | ./a.out - diff --git a/Analyse_Lexicale/grammaire_c_minimaliste b/Analyse_Lexicale/grammaire_c_minimaliste deleted file mode 100644 index 32f0faa..0000000 --- a/Analyse_Lexicale/grammaire_c_minimaliste +++ /dev/null @@ -1,52 +0,0 @@ -les fonctions (avec parametres) -le if -le while -les declarations -les affectations -les operations arith. -le retour de fonction -l'invocation de fonctions - - -C : Fonctions ; -Fonctions : Fonction Fonctions | Fonction ; - -Fonction : tInt tID tPO Params tPF Body ; - -Params : | Param SuiteParams ; -Param : tInt tID ; - -SuiteParams : tVirgule Param SuiteParams | ; - -// Ps : P Ps | ; -// P : tInt tID tVirgule -// Ps =>* tInt tID tVirgule tInt tID tVirgule -// Ps => P Ps => P P Ps ... - -Body : tAO Instructions tAF ; - -Instructions : Instruction Instructions | ; - -Instruction : Aff | If | While | Return | Decl | Invocation tPV ; - -Aff : tID tEQ E tPV ; - -E : tNB | tID | E tADD E | E tMUL E | E tMINUS E | E tDIV E | Invocation | tPO E tPF | tMINUS E ; - -// E : tID tADD tID | ... - -If : tIF tPO Cond tPF Body ; - -Cond : Cond tAND Cond | Cond tOR Cond | E tEQ2 E | E tINF E | tNOT Cond ; - -Invocation : tID tPO Args tPF ; - -Args : .... cf params - -Return : tRET E tPV ; - - - - - - diff --git a/Analyse_Lexicale/lex.yy.c b/Analyse_Lexicale/lex.yy.c deleted file mode 100644 index 751e4c6..0000000 --- a/Analyse_Lexicale/lex.yy.c +++ /dev/null @@ -1,1937 +0,0 @@ - -#line 3 "lex.yy.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 32 -#define YY_END_OF_BUFFER 33 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[66] = - { 0, - 0, 0, 33, 31, 29, 25, 31, 4, 5, 21, - 19, 27, 20, 22, 17, 24, 11, 23, 12, 30, - 30, 30, 30, 30, 30, 30, 2, 31, 3, 0, - 14, 0, 17, 0, 13, 30, 30, 30, 9, 30, - 30, 30, 30, 15, 26, 0, 0, 18, 30, 30, - 7, 30, 30, 30, 28, 30, 16, 1, 30, 30, - 6, 30, 10, 8, 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 4, 1, 1, 1, 5, 1, 6, - 7, 8, 9, 10, 11, 1, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 1, 14, 15, - 16, 17, 1, 1, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 1, 1, 1, 1, 19, 1, 20, 18, 21, 18, - - 22, 23, 18, 24, 25, 18, 18, 26, 27, 28, - 29, 30, 18, 31, 32, 33, 18, 18, 34, 18, - 18, 18, 35, 36, 37, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[38] = - { 0, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 2, 3, 1, 1, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1 - } ; - -static const flex_int16_t yy_base[68] = - { 0, - 0, 0, 78, 79, 79, 74, 71, 79, 79, 79, - 79, 79, 79, 67, 25, 79, 79, 58, 79, 0, - 44, 46, 16, 51, 39, 45, 79, 32, 79, 64, - 79, 58, 27, 52, 79, 0, 36, 31, 0, 29, - 36, 35, 34, 79, 79, 50, 45, 43, 23, 32, - 0, 25, 23, 22, 79, 13, 0, 0, 12, 21, - 0, 19, 0, 0, 79, 38, 49 - } ; - -static const flex_int16_t yy_def[68] = - { 0, - 65, 1, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, - 66, 66, 66, 66, 66, 66, 65, 65, 65, 65, - 65, 67, 65, 65, 65, 66, 66, 66, 66, 66, - 66, 66, 66, 65, 65, 67, 65, 65, 66, 66, - 66, 66, 66, 66, 65, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 0, 65, 65 - } ; - -static const flex_int16_t yy_nxt[117] = - { 0, - 4, 5, 6, 4, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 4, 20, - 21, 22, 20, 20, 23, 20, 24, 20, 20, 25, - 20, 20, 20, 26, 27, 28, 29, 33, 39, 33, - 36, 64, 63, 40, 62, 61, 34, 60, 34, 46, - 59, 46, 58, 57, 56, 48, 55, 47, 54, 53, - 52, 51, 50, 49, 48, 47, 45, 44, 43, 42, - 41, 38, 37, 35, 32, 31, 30, 65, 3, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65 - } ; - -static const flex_int16_t yy_chk[117] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 15, 23, 33, - 66, 62, 60, 23, 59, 56, 15, 54, 33, 67, - 53, 67, 52, 50, 49, 48, 47, 46, 43, 42, - 41, 40, 38, 37, 34, 32, 30, 28, 26, 25, - 24, 22, 21, 18, 14, 7, 6, 3, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "al.lex" -#line 2 "al.lex" -#include "as.tab.h" -int yywrap(void){return 1;} -#line 489 "lex.yy.c" -#line 490 "lex.yy.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { -#line 6 "al.lex" - - -#line 710 "lex.yy.c" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 66 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 79 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 8 "al.lex" -{ return tMAIN ;} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 9 "al.lex" -{ return tOBRACKET;} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 10 "al.lex" -{ return tCBRACKET; } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 11 "al.lex" -{ return tOBRACE; } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 12 "al.lex" -{ return tCBRACE; } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 13 "al.lex" -{ return tCONST; } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 14 "al.lex" -{ return tINT; } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 15 "al.lex" -{ return tPRINTF; } //Degeu mais à degager - YY_BREAK -case 9: -YY_RULE_SETUP -#line 16 "al.lex" -{ return tIF; } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 17 "al.lex" -{ return tWHILE; } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 18 "al.lex" -{ return tLT; } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 19 "al.lex" -{ return tGT; } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 20 "al.lex" -{ return tEQCOND; } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 21 "al.lex" -{ return tAND; } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 22 "al.lex" -{ return tOR; } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 23 "al.lex" -{ return tELSE;} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 26 "al.lex" -{ yylval.nombre = atoi(yytext); return tNB; } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 27 "al.lex" -{ yylval.nombre = -1; return tNBEXP; } //Renvoyer le token tNB et pas tNBEXP - YY_BREAK -case 19: -YY_RULE_SETUP -#line 28 "al.lex" -{ return tADD; } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 29 "al.lex" -{ return tSUB; } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 30 "al.lex" -{ return tMUL; } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 31 "al.lex" -{ return tDIV; } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 32 "al.lex" -{ return tEQ; } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 33 "al.lex" -{ return tPV; } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 34 "al.lex" -{} //Ne pas les retourner à Yacc - YY_BREAK -case 26: -YY_RULE_SETUP -#line 35 "al.lex" -{} //Ne pas les retourner à Yacc - YY_BREAK -case 27: -YY_RULE_SETUP -#line 36 "al.lex" -{ return tCOMA; } - YY_BREAK -case 28: -/* rule 28 can match eol */ -YY_RULE_SETUP -#line 37 "al.lex" -{ printf("commentaire\n");} - YY_BREAK -case 29: -/* rule 29 can match eol */ -YY_RULE_SETUP -#line 38 "al.lex" -{} //Ne pas les retourner à Yacc - YY_BREAK -case 30: -YY_RULE_SETUP -#line 39 "al.lex" -{ strcpy(yylval.id, yytext); return tID; } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 40 "al.lex" -{ return tERROR; } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 42 "al.lex" -ECHO; - YY_BREAK -#line 929 "lex.yy.c" -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 66 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - char *yy_cp = (yy_c_buf_p); - - YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 66 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 65); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 42 "al.lex" - - - - diff --git a/Analyse_Lexicale/progC b/Analyse_Lexicale/progC deleted file mode 100644 index a0b99f0..0000000 --- a/Analyse_Lexicale/progC +++ /dev/null @@ -1,17 +0,0 @@ -int main(int x, int i){ - const int a = 4; - const int a, b, c = 2 + a - 5 * (7 / 8); - printf(coucou); - int y = 7e8; - int res_2 = x + y; - - if ( (a == 2) && b || c > (7*8)) { - } - else if (a) { - int x = 90; - } else { - int a = b; - } -/* SAlut Elies */ - printf(i); -} diff --git a/Analyse_Lexicale/table_symboles.c b/Analyse_Lexicale/table_symboles.c deleted file mode 100644 index c257109..0000000 --- a/Analyse_Lexicale/table_symboles.c +++ /dev/null @@ -1,109 +0,0 @@ -/* TABLE DES SYMBOLE DU COMPILATEUR (PILE) - ------------------------------------------------------ -| symbole | adresse | type | initialisé | ------------------------------------------------------ -| | | | | -| | | | | -| | | | | -| i | 0x777756b8 | int | false | -| size | 0x777756b8 | int | true | ------------------------------------------------------ - -Types pour l'implémentation : - - enum type_t : [int] - - struct symbole : { - char nom[30]; - uintptr_t adresse; - enum type_t type; - char initialized; - } - -Opérations possible : - - init -> pile * -> void - - push -> symbole -> pile * -> void - - pop -> pile * -> symbole - - exist -> pile * -> symbole -> char - - initialized -> pile * -> symbole -> char */ - -#include "table_symboles.h" -#include -#include -#include - -struct element_t { - struct symbole_t symbole; - struct element_t * suivant; -}; - -struct pile_t { - int taille; - struct element_t * first; -}; - -char * type_to_string(enum type_t type) { - if (type == INT) { - return "int"; - } else { - return "unknown"; - } -} - -void init(struct pile_t * pile) { - pile->first = NULL; - pile->taille = 0; -} - -void push(struct symbole_t symbole, struct pile_t * pile) { - struct element_t * aux = malloc(sizeof(struct element_t)); - aux->symbole = symbole; - aux->suivant = pile->first; - pile->first = aux; - pile->taille++; -} - -struct symbole_t pop(struct pile_t * pile) { - struct symbole_t retour = {"", 0, UNKNOWN, -1}; - struct element_t * aux; - if (pile->taille > 0) { - aux = pile->first; - pile->first = pile->first->suivant; - retour = aux->symbole; - free(aux); - pile->taille--; - } - return retour; -} - -char status(char * nom, struct pile_t pile) { - char retour = 0; - struct element_t * aux = pile.first; - int i; - for (i=0; i < pile.taille; i++) { - if (!strcmp(nom, aux->symbole.nom)) { - if (aux->symbole.initialized) { - retour = 1; - } else { - retour = 2; - } - break; - } else { - aux = aux->suivant; - } - } - return retour; -} - -void print(struct pile_t pile) { - printf("Affichage de la Table des Symboles\n\tSize : %d\n\tContenu : \n", pile.taille); - struct element_t * aux = pile.first; - int i; - for (i=0; i < pile.taille; i++) { - if (aux->symbole.initialized) { - printf("\t\t{nom:%s, adresse:%p, type:%s, initialized:OUI}\n", aux->symbole.nom, (void *)(aux->symbole.adresse), type_to_string(aux->symbole.type)); - } else { - printf("\t\t{nom:%s, adresse:%p, type:%s, initialized:NON}\n", aux->symbole.nom, (void *)(aux->symbole.adresse), type_to_string(aux->symbole.type)); - } - aux = aux->suivant; - } -} diff --git a/Analyse_Lexicale/table_symboles.h b/Analyse_Lexicale/table_symboles.h deleted file mode 100644 index 579078b..0000000 --- a/Analyse_Lexicale/table_symboles.h +++ /dev/null @@ -1,48 +0,0 @@ -/* TABLE DES SYMBOLE DU COMPILATEUR (PILE) - ------------------------------------------------------ -| symbole | adresse | type | initialisé | ------------------------------------------------------ -| | | | | -| | | | | -| | | | | -| i | 0x777756b8 | int | false | -| size | 0x777756b8 | int | true | ------------------------------------------------------ - -Types pour l'implémentation : - - enum type_t : [int] - - struct symbole : { - char nom[30]; - uintptr_t adresse; - enum type_t type; - char initialized; - } - -Opérations possible : - - init -> pile * -> void - - push -> symbole -> pile * -> void - - pop -> pile * -> symbole - - status -> nom -> pile -> char */ - -#include - -enum type_t {UNKNOWN, INT}; - -struct symbole_t { - char nom[30]; - uintptr_t adresse; - enum type_t type; - char initialized; -}; - -struct pile_t; - - - -void init(struct pile_t * pile); -void push(struct symbole_t symbole, struct pile_t * pile); -struct symbole_t pop(struct pile_t * pile); -// renvoi 0 si nom n'existe pas, 2 si nom existe sans etre initialisée, 1 sinon -char status(char * nom, struct pile_t pile); -void print(struct pile_t pile); diff --git a/Analyse_Lexicale/test b/Analyse_Lexicale/test deleted file mode 100755 index 3d465c80db22298e31d19f1335fbf94a6cc1bdf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8304 zcmeHMYiv}<6`u9lczJleI6xdo%O-^iTKQt$riqK!_L^&IAR%^2#N)E|uI)|NyVmaA z#71pHWk6ZEq*Toh`lAn}f7&RjXntA!kwP3%B2_I>RW(vtiL`kb1g)zi$bI1LIrpA# zeed-E(Z zJC8nW!wM97kCGny`AJJi1P@Ao3(boz{)5VJ)uvRkcgMC(sdz&wna+8CH66~(Li*lU4FZn8>o`-{|6T>ldNtzFwfHRcDo?fSJMmG!R@-+#`QR%-LD&cYkV z^uk~Cv3I5)>FzpP^&$;ZKU=faBF*oSU~%PBr1N3z+IDVf{ys51`q`@Q64iIj=!JL9 z`^cre%#uqrM~m0`wc53(tS*jDvKMna=|91OXSW};%xs(`ef`p`UoTASm!@{>zRUU> zvt~URTrLKevB8DxoorrAVk*B$A8USpG1Yq5pJn=Z^9|yrYG}k$I{mp^^)~T7cIPBJ z_Q52Xr17x$(d+#r!8MxQaN!#_3;C(>=!b>N(jEWQCNim? zzGa3tzXkoS!oRu-x7!PUj}%w@Ngtc^>AU`%zrkyK_-N!v*Gt5Z;k&U-eWnYX6_V=&l0Vt?sz;Kh#n%kg+_ga=m<{|(J7*h66CzUaq*ov zsC*+K-m z9-kvz(EibEF~j_M+3b;%9hYQ|&rL29(!RuI)hVG%h1LsQDHH@b;e_OII8z{x^HPSR z?iIy1WxT-ag@@l4MUIkPtH9o8g@@d~i}v_vJ}rojHEX;x;uszE7LWO!7XBS+|EKU6 zhnWA=2=1R=gP+GjcpE;3N4~zNt?f(U4L!a2w3!d@)V6Dl4O{aTxA~i!o3zGl8*TJs z%vsHT%J`eGa1I4O-M&5bWpp)%{@S2e1!EFLVqzqswxmcCy%9#SC$yraRdmY3cS95Bst zojO!j{+`mih+BSz!am@}SJJyk*a=y6zgng6-8vin{FTZ*(T&%uP+1(i)SNVbZT@qSmKf@;_^pFzPdc<=`V$Np(sQEDeud}_`geBT`wK7SsD#7=2H7DJnd%c{(epTAjl=C5xh z4WN$ZUrAiyGhRV>7)Bj5W#RMVf$vWtiW6@<1PQNG^W%S~g*yyO^(zbDPl|nS96n8W zc)l5RhVbPT_m)t4C>P9@AlT-&*0S5tW*ehW()v1~Rr zY9!KTc2xCeV?zleo*x<-B^3u}kfiAn9nNM3+Q=uv=r|bJ7d4{$+YNdPa|_0m(f-8# z$iB`tcZ>DtMi4zh8c|&==6ciV+_X9aen{nJU~+MWZKB*5;Vj)?|7Do z@6F}JjPz>VX9+a0=$_jPJQHCpz9zg z)T`f4_-)E<(f@g=fWm(qx87rGKk0Ms5B&+Lfc{ka2)89s0-zLFoju3jBv0=+~%~?*ibFH-d(3bt|oK`Y*6LK^2};=p(-by(og{ z-#dODAM3Y@9P&_5%oFRcqMuj)Il|a4IX+7HD)Ls`qe#Rm+?TTyh;iy8uLTV|g{hAJ zFMvMp(QlN2g2G>z0T22Ek3P;#&{sVRj(%b9Cmwy=he2^KguHkBKNEedAI^VJ__>h& zFFg9*|MNWzMWNpQ?L2NSevrq520Y{U`tv&359`SJGY=8^xMxhTQ&e=Dl>R~=^aiy!^-Fo6 zbbx+f0D9o3slpigN4^yjMX$VPIn+m_%UC1*oCW$Dogmer@1%%5r)Z1xKPBH2pEI0G m!XNAl9N+NWslS0Y3o2C}{S@*Fe( diff --git a/Analyse_Lexicale/truc b/Analyse_Lexicale/truc deleted file mode 100644 index e69de29..0000000 diff --git a/Fichiers_Tests/progC b/Fichiers_Tests/progC index 60f1c97..13e5e72 100644 --- a/Fichiers_Tests/progC +++ b/Fichiers_Tests/progC @@ -1,15 +1,3 @@ -int main(int x, int i){ - const int a = 4; - const int a, b, c = 2 + a - 5 * (7 / 8) + 5; - printf(coucou); - int y = 7e8; - int res_2 = x + y; - if ( (a == 2) && b || c > (7*8)) { - } - else if (a) { - int x = 90; - } else { - int a = b; - } - printf(i); +int main(){ + int a = 4; } diff --git a/Lex_Yacc/ProgC b/Lex_Yacc/ProgC deleted file mode 100644 index 3b4e2e8..0000000 --- a/Lex_Yacc/ProgC +++ /dev/null @@ -1,4 +0,0 @@ -int main(int a, int b) -{ - int c; -} diff --git a/Lex_Yacc/a.exe b/Lex_Yacc/a.exe deleted file mode 100755 index 88f7a0d2ec58d622725396b9873e3623a8bfd4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50552 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 yCEG9U+tXI4%D)=F`vFsV7aHQ%EpM (263) 1 39 - tCONST (264) 41 - tPV (265) 12 24 44 47 - tCOMA (266) 5 45 48 - tMUL (267) 28 - tDIV (268) 29 - tADD (269) 31 - tSUB (270) 30 34 - tEQ (271) 24 43 46 - tNB (272) 25 - tNBEXP (273) 26 - tID (274) 4 24 27 42 43 46 49 - tPRINTF (275) 49 - tERROR (276) - tIF (277) 15 - tWHILE (278) 19 - tELSE (279) 16 17 - tLT (280) 37 - tGT (281) 36 - tEQCOND (282) 35 - tAND (283) 22 - tOR (284) 23 - tNOT (285) 38 - - -Non-terminaux, suivis des règles où ils apparaissent - - $accept (31) - à gauche: 0 - Main (32) - à gauche: 1 - à droite: 0 - Params (33) - à gauche: 2 3 - à droite: 1 - Param (34) - à gauche: 4 - à droite: 3 5 - SuiteParams (35) - à gauche: 5 6 - à droite: 3 5 - Body (36) - à gauche: 7 - à droite: 1 15 17 19 - Instructions (37) - à gauche: 8 9 - à droite: 7 8 - Instruction (38) - à gauche: 10 11 12 13 14 - à droite: 8 - If (39) - à gauche: 15 - à droite: 13 16 - Else (40) - à gauche: 16 17 18 - à droite: 15 - While (41) - à gauche: 19 - à droite: 14 - Cond (42) - à gauche: 20 - à droite: 15 19 - SuiteCond (43) - à gauche: 21 22 23 - à droite: 20 22 23 - Aff (44) - à gauche: 24 - à droite: 10 - E (45) - à gauche: 25 26 27 28 29 30 31 32 33 34 35 36 37 38 - à droite: 20 22 23 24 28 29 30 31 33 34 35 36 37 38 43 46 - DeclType (46) - à gauche: 39 - à droite: 4 40 41 - Decl (47) - à gauche: 40 41 - à droite: 11 - SuiteDecl (48) - à gauche: 42 43 - à droite: 40 45 - FinDecl (49) - à gauche: 44 45 - à droite: 40 45 - SuiteDeclConst (50) - à gauche: 46 - à droite: 41 48 - FinDeclConst (51) - à gauche: 47 48 - à droite: 41 48 - Invocation (52) - à gauche: 49 - à droite: 12 32 - - -État 0 - - 0 $accept: . Main $end - - tINT décalage et aller à l'état 1 - - Main aller à l'état 2 - - -État 1 - - 1 Main: tINT . tMAIN tOBRACE Params tCBRACE Body - - tMAIN décalage et aller à l'état 3 - - -État 2 - - 0 $accept: Main . $end - - $end décalage et aller à l'état 4 - - -État 3 - - 1 Main: tINT tMAIN . tOBRACE Params tCBRACE Body - - tOBRACE décalage et aller à l'état 5 - - -État 4 - - 0 $accept: Main $end . - - $défaut accepter - - -État 5 - - 1 Main: tINT tMAIN tOBRACE . Params tCBRACE Body - - tINT décalage et aller à l'état 6 - - $défaut réduction par utilisation de la règle 2 (Params) - - Params aller à l'état 7 - Param aller à l'état 8 - DeclType aller à l'état 9 - - -État 6 - - 39 DeclType: tINT . - - $défaut réduction par utilisation de la règle 39 (DeclType) - - -État 7 - - 1 Main: tINT tMAIN tOBRACE Params . tCBRACE Body - - tCBRACE décalage et aller à l'état 10 - - -État 8 - - 3 Params: Param . SuiteParams - - tCOMA décalage et aller à l'état 11 - - $défaut réduction par utilisation de la règle 6 (SuiteParams) - - SuiteParams aller à l'état 12 - - -État 9 - - 4 Param: DeclType . tID - - tID décalage et aller à l'état 13 - - -État 10 - - 1 Main: tINT tMAIN tOBRACE Params tCBRACE . Body - - tOBRACKET décalage et aller à l'état 14 - - Body aller à l'état 15 - - -État 11 - - 5 SuiteParams: tCOMA . Param SuiteParams - - tINT décalage et aller à l'état 6 - - Param aller à l'état 16 - DeclType aller à l'état 9 - - -État 12 - - 3 Params: Param SuiteParams . - - $défaut réduction par utilisation de la règle 3 (Params) - - -État 13 - - 4 Param: DeclType tID . - - $défaut réduction par utilisation de la règle 4 (Param) - - -État 14 - - 7 Body: tOBRACKET . Instructions tCBRACKET - - tINT décalage et aller à l'état 6 - tCONST décalage et aller à l'état 17 - tID décalage et aller à l'état 18 - tPRINTF décalage et aller à l'état 19 - tIF décalage et aller à l'état 20 - tWHILE décalage et aller à l'état 21 - - $défaut réduction par utilisation de la règle 9 (Instructions) - - Instructions aller à l'état 22 - Instruction aller à l'état 23 - If aller à l'état 24 - While aller à l'état 25 - Aff aller à l'état 26 - DeclType aller à l'état 27 - Decl aller à l'état 28 - Invocation aller à l'état 29 - - -État 15 - - 1 Main: tINT tMAIN tOBRACE Params tCBRACE Body . - - $défaut réduction par utilisation de la règle 1 (Main) - - -État 16 - - 5 SuiteParams: tCOMA Param . SuiteParams - - tCOMA décalage et aller à l'état 11 - - $défaut réduction par utilisation de la règle 6 (SuiteParams) - - SuiteParams aller à l'état 30 - - -État 17 - - 41 Decl: tCONST . DeclType SuiteDeclConst FinDeclConst - - tINT décalage et aller à l'état 6 - - DeclType aller à l'état 31 - - -État 18 - - 24 Aff: tID . tEQ E tPV - - tEQ décalage et aller à l'état 32 - - -État 19 - - 49 Invocation: tPRINTF . tOBRACE tID tCBRACE - - tOBRACE décalage et aller à l'état 33 - - -État 20 - - 15 If: tIF . tOBRACE Cond tCBRACE Body Else - - tOBRACE décalage et aller à l'état 34 - - -État 21 - - 19 While: tWHILE . tOBRACE Cond tCBRACE Body - - tOBRACE décalage et aller à l'état 35 - - -État 22 - - 7 Body: tOBRACKET Instructions . tCBRACKET - - tCBRACKET décalage et aller à l'état 36 - - -État 23 - - 8 Instructions: Instruction . Instructions - - tINT décalage et aller à l'état 6 - tCONST décalage et aller à l'état 17 - tID décalage et aller à l'état 18 - tPRINTF décalage et aller à l'état 19 - tIF décalage et aller à l'état 20 - tWHILE décalage et aller à l'état 21 - - $défaut réduction par utilisation de la règle 9 (Instructions) - - Instructions aller à l'état 37 - Instruction aller à l'état 23 - If aller à l'état 24 - While aller à l'état 25 - Aff aller à l'état 26 - DeclType aller à l'état 27 - Decl aller à l'état 28 - Invocation aller à l'état 29 - - -État 24 - - 13 Instruction: If . - - $défaut réduction par utilisation de la règle 13 (Instruction) - - -État 25 - - 14 Instruction: While . - - $défaut réduction par utilisation de la règle 14 (Instruction) - - -État 26 - - 10 Instruction: Aff . - - $défaut réduction par utilisation de la règle 10 (Instruction) - - -État 27 - - 40 Decl: DeclType . SuiteDecl FinDecl - - tID décalage et aller à l'état 38 - - SuiteDecl aller à l'état 39 - - -État 28 - - 11 Instruction: Decl . - - $défaut réduction par utilisation de la règle 11 (Instruction) - - -État 29 - - 12 Instruction: Invocation . tPV - - tPV décalage et aller à l'état 40 - - -État 30 - - 5 SuiteParams: tCOMA Param SuiteParams . - - $défaut réduction par utilisation de la règle 5 (SuiteParams) - - -État 31 - - 41 Decl: tCONST DeclType . SuiteDeclConst FinDeclConst - - tID décalage et aller à l'état 41 - - SuiteDeclConst aller à l'état 42 - - -État 32 - - 24 Aff: tID tEQ . E tPV - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 49 - Invocation aller à l'état 50 - - -État 33 - - 49 Invocation: tPRINTF tOBRACE . tID tCBRACE - - tID décalage et aller à l'état 51 - - -État 34 - - 15 If: tIF tOBRACE . Cond tCBRACE Body Else - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - Cond aller à l'état 52 - E aller à l'état 53 - Invocation aller à l'état 50 - - -État 35 - - 19 While: tWHILE tOBRACE . Cond tCBRACE Body - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - Cond aller à l'état 54 - E aller à l'état 53 - Invocation aller à l'état 50 - - -État 36 - - 7 Body: tOBRACKET Instructions tCBRACKET . - - $défaut réduction par utilisation de la règle 7 (Body) - - -État 37 - - 8 Instructions: Instruction Instructions . - - $défaut réduction par utilisation de la règle 8 (Instructions) - - -État 38 - - 42 SuiteDecl: tID . - 43 | tID . tEQ E - - tEQ décalage et aller à l'état 55 - - $défaut réduction par utilisation de la règle 42 (SuiteDecl) - - -État 39 - - 40 Decl: DeclType SuiteDecl . FinDecl - - tPV décalage et aller à l'état 56 - tCOMA décalage et aller à l'état 57 - - FinDecl aller à l'état 58 - - -État 40 - - 12 Instruction: Invocation tPV . - - $défaut réduction par utilisation de la règle 12 (Instruction) - - -État 41 - - 46 SuiteDeclConst: tID . tEQ E - - tEQ décalage et aller à l'état 59 - - -État 42 - - 41 Decl: tCONST DeclType SuiteDeclConst . FinDeclConst - - tPV décalage et aller à l'état 60 - tCOMA décalage et aller à l'état 61 - - FinDeclConst aller à l'état 62 - - -État 43 - - 33 E: tOBRACE . E tCBRACE - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 63 - Invocation aller à l'état 50 - - -État 44 - - 34 E: tSUB . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 64 - Invocation aller à l'état 50 - - -État 45 - - 25 E: tNB . - - $défaut réduction par utilisation de la règle 25 (E) - - -État 46 - - 26 E: tNBEXP . - - $défaut réduction par utilisation de la règle 26 (E) - - -État 47 - - 27 E: tID . - - $défaut réduction par utilisation de la règle 27 (E) - - -État 48 - - 38 E: tNOT . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 65 - Invocation aller à l'état 50 - - -État 49 - - 24 Aff: tID tEQ E . tPV - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tPV décalage et aller à l'état 66 - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - - -État 50 - - 32 E: Invocation . - - $défaut réduction par utilisation de la règle 32 (E) - - -État 51 - - 49 Invocation: tPRINTF tOBRACE tID . tCBRACE - - tCBRACE décalage et aller à l'état 74 - - -État 52 - - 15 If: tIF tOBRACE Cond . tCBRACE Body Else - - tCBRACE décalage et aller à l'état 75 - - -État 53 - - 20 Cond: E . SuiteCond - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - tAND décalage et aller à l'état 76 - tOR décalage et aller à l'état 77 - - $défaut réduction par utilisation de la règle 21 (SuiteCond) - - SuiteCond aller à l'état 78 - - -État 54 - - 19 While: tWHILE tOBRACE Cond . tCBRACE Body - - tCBRACE décalage et aller à l'état 79 - - -État 55 - - 43 SuiteDecl: tID tEQ . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 80 - Invocation aller à l'état 50 - - -État 56 - - 44 FinDecl: tPV . - - $défaut réduction par utilisation de la règle 44 (FinDecl) - - -État 57 - - 45 FinDecl: tCOMA . SuiteDecl FinDecl - - tID décalage et aller à l'état 38 - - SuiteDecl aller à l'état 81 - - -État 58 - - 40 Decl: DeclType SuiteDecl FinDecl . - - $défaut réduction par utilisation de la règle 40 (Decl) - - -État 59 - - 46 SuiteDeclConst: tID tEQ . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 82 - Invocation aller à l'état 50 - - -État 60 - - 47 FinDeclConst: tPV . - - $défaut réduction par utilisation de la règle 47 (FinDeclConst) - - -État 61 - - 48 FinDeclConst: tCOMA . SuiteDeclConst FinDeclConst - - tID décalage et aller à l'état 41 - - SuiteDeclConst aller à l'état 83 - - -État 62 - - 41 Decl: tCONST DeclType SuiteDeclConst FinDeclConst . - - $défaut réduction par utilisation de la règle 41 (Decl) - - -État 63 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 33 | tOBRACE E . tCBRACE - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tCBRACE décalage et aller à l'état 84 - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - - -État 64 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 34 | tSUB E . - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - - $défaut réduction par utilisation de la règle 34 (E) - - -État 65 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - 38 | tNOT E . - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - - $défaut réduction par utilisation de la règle 38 (E) - - -État 66 - - 24 Aff: tID tEQ E tPV . - - $défaut réduction par utilisation de la règle 24 (Aff) - - -État 67 - - 28 E: E tMUL . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 85 - Invocation aller à l'état 50 - - -État 68 - - 29 E: E tDIV . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 86 - Invocation aller à l'état 50 - - -État 69 - - 31 E: E tADD . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 87 - Invocation aller à l'état 50 - - -État 70 - - 30 E: E tSUB . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 88 - Invocation aller à l'état 50 - - -État 71 - - 37 E: E tLT . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 89 - Invocation aller à l'état 50 - - -État 72 - - 36 E: E tGT . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 90 - Invocation aller à l'état 50 - - -État 73 - - 35 E: E tEQCOND . E - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 91 - Invocation aller à l'état 50 - - -État 74 - - 49 Invocation: tPRINTF tOBRACE tID tCBRACE . - - $défaut réduction par utilisation de la règle 49 (Invocation) - - -État 75 - - 15 If: tIF tOBRACE Cond tCBRACE . Body Else - - tOBRACKET décalage et aller à l'état 14 - - Body aller à l'état 92 - - -État 76 - - 22 SuiteCond: tAND . E SuiteCond - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 93 - Invocation aller à l'état 50 - - -État 77 - - 23 SuiteCond: tOR . E SuiteCond - - tOBRACE décalage et aller à l'état 43 - tSUB décalage et aller à l'état 44 - tNB décalage et aller à l'état 45 - tNBEXP décalage et aller à l'état 46 - tID décalage et aller à l'état 47 - tPRINTF décalage et aller à l'état 19 - tNOT décalage et aller à l'état 48 - - E aller à l'état 94 - Invocation aller à l'état 50 - - -État 78 - - 20 Cond: E SuiteCond . - - $défaut réduction par utilisation de la règle 20 (Cond) - - -État 79 - - 19 While: tWHILE tOBRACE Cond tCBRACE . Body - - tOBRACKET décalage et aller à l'état 14 - - Body aller à l'état 95 - - -État 80 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - 43 SuiteDecl: tID tEQ E . - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - - $défaut réduction par utilisation de la règle 43 (SuiteDecl) - - -État 81 - - 45 FinDecl: tCOMA SuiteDecl . FinDecl - - tPV décalage et aller à l'état 56 - tCOMA décalage et aller à l'état 57 - - FinDecl aller à l'état 96 - - -État 82 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - 46 SuiteDeclConst: tID tEQ E . - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - - $défaut réduction par utilisation de la règle 46 (SuiteDeclConst) - - -État 83 - - 48 FinDeclConst: tCOMA SuiteDeclConst . FinDeclConst - - tPV décalage et aller à l'état 60 - tCOMA décalage et aller à l'état 61 - - FinDeclConst aller à l'état 97 - - -État 84 - - 33 E: tOBRACE E tCBRACE . - - $défaut réduction par utilisation de la règle 33 (E) - - -État 85 - - 28 E: E . tMUL E - 28 | E tMUL E . - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - $défaut réduction par utilisation de la règle 28 (E) - - -État 86 - - 28 E: E . tMUL E - 29 | E . tDIV E - 29 | E tDIV E . - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - $défaut réduction par utilisation de la règle 29 (E) - - -État 87 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 31 | E tADD E . - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - - $défaut réduction par utilisation de la règle 31 (E) - - -État 88 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 30 | E tSUB E . - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - - $défaut réduction par utilisation de la règle 30 (E) - - -État 89 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - 37 | E tLT E . - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tEQCOND décalage et aller à l'état 73 - - $défaut réduction par utilisation de la règle 37 (E) - - -État 90 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 36 | E tGT E . - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tEQCOND décalage et aller à l'état 73 - - $défaut réduction par utilisation de la règle 36 (E) - - -État 91 - - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 35 | E tEQCOND E . - 36 | E . tGT E - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - - $défaut réduction par utilisation de la règle 35 (E) - - -État 92 - - 15 If: tIF tOBRACE Cond tCBRACE Body . Else - - tELSE décalage et aller à l'état 98 - - $défaut réduction par utilisation de la règle 18 (Else) - - Else aller à l'état 99 - - -État 93 - - 22 SuiteCond: tAND E . SuiteCond - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - tAND décalage et aller à l'état 76 - tOR décalage et aller à l'état 77 - - $défaut réduction par utilisation de la règle 21 (SuiteCond) - - SuiteCond aller à l'état 100 - - -État 94 - - 23 SuiteCond: tOR E . SuiteCond - 28 E: E . tMUL E - 29 | E . tDIV E - 30 | E . tSUB E - 31 | E . tADD E - 35 | E . tEQCOND E - 36 | E . tGT E - 37 | E . tLT E - - tMUL décalage et aller à l'état 67 - tDIV décalage et aller à l'état 68 - tADD décalage et aller à l'état 69 - tSUB décalage et aller à l'état 70 - tLT décalage et aller à l'état 71 - tGT décalage et aller à l'état 72 - tEQCOND décalage et aller à l'état 73 - tAND décalage et aller à l'état 76 - tOR décalage et aller à l'état 77 - - $défaut réduction par utilisation de la règle 21 (SuiteCond) - - SuiteCond aller à l'état 101 - - -État 95 - - 19 While: tWHILE tOBRACE Cond tCBRACE Body . - - $défaut réduction par utilisation de la règle 19 (While) - - -État 96 - - 45 FinDecl: tCOMA SuiteDecl FinDecl . - - $défaut réduction par utilisation de la règle 45 (FinDecl) - - -État 97 - - 48 FinDeclConst: tCOMA SuiteDeclConst FinDeclConst . - - $défaut réduction par utilisation de la règle 48 (FinDeclConst) - - -État 98 - - 16 Else: tELSE . If - 17 | tELSE . Body - - tOBRACKET décalage et aller à l'état 14 - tIF décalage et aller à l'état 20 - - Body aller à l'état 102 - If aller à l'état 103 - - -État 99 - - 15 If: tIF tOBRACE Cond tCBRACE Body Else . - - $défaut réduction par utilisation de la règle 15 (If) - - -État 100 - - 22 SuiteCond: tAND E SuiteCond . - - $défaut réduction par utilisation de la règle 22 (SuiteCond) - - -État 101 - - 23 SuiteCond: tOR E SuiteCond . - - $défaut réduction par utilisation de la règle 23 (SuiteCond) - - -État 102 - - 17 Else: tELSE Body . - - $défaut réduction par utilisation de la règle 17 (Else) - - -État 103 - - 16 Else: tELSE If . - - $défaut réduction par utilisation de la règle 16 (Else) diff --git a/Lex_Yacc/as.tab.c b/Lex_Yacc/as.tab.c deleted file mode 100644 index 400db37..0000000 --- a/Lex_Yacc/as.tab.c +++ /dev/null @@ -1,1853 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. - - 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 3 of the License, 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, see . */ - -/* 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. */ - -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.5.1" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - - -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_AS_TAB_H_INCLUDED -# define YY_YY_AS_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - tMAIN = 258, - tOBRACKET = 259, - tCBRACKET = 260, - tOBRACE = 261, - tCBRACE = 262, - tINT = 263, - tCONST = 264, - tPV = 265, - tCOMA = 266, - tMUL = 267, - tDIV = 268, - tADD = 269, - tSUB = 270, - tEQ = 271, - tNB = 272, - tNBEXP = 273, - tID = 274, - tPRINTF = 275, - tERROR = 276, - tIF = 277, - tWHILE = 278, - tELSE = 279, - tLT = 280, - tGT = 281, - tEQCOND = 282, - tAND = 283, - tOR = 284, - tNOT = 285 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 1 "as.y" - - int nombre; - char id[30]; - -#line 156 "as.tab.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_AS_TAB_H_INCLUDED */ - -/* Second part of user prologue. */ -#line 5 "as.y" - -#include "../Symboles/table_symboles.h" -#include -#include -#include -#include "../Symboles/tab_instruc.h" -#define TAILLE 1024 - -enum type_t type_courant; - - -#line 184 "as.tab.c" - - -#ifdef short -# undef short -#endif - -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif -#endif - -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; -#else -typedef short yytype_int16; -#endif - -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned -# endif -#endif - -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - -/* Stored state numbers (used for stacks). */ -typedef yytype_int8 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) -# else -# define YY_ATTRIBUTE_PURE -# endif -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - - -#define YY_ASSERT(E) ((void) (0 && (E))) - -#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 /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -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 -{ - yy_state_t yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* 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_alloc, Stack) \ - do \ - { \ - YYPTRDIFF_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYPTRDIFF_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 4 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 119 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 31 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 22 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 50 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 104 - -#define YYUNDEFTOK 2 -#define YYMAXUTOK 285 - - -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_int8 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, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 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, 26, 27, 28, 29, 30 -}; - -#if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint8 yyrline[] = -{ - 0, 49, 49, 51, 52, 53, 54, 55, 57, 60, - 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, - 73, 75, 76, 77, 78, 81, 83, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 102, 104, 105, 107, 108, 109, 110, 112, 113, 114, - 133 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "tMAIN", "tOBRACKET", "tCBRACKET", - "tOBRACE", "tCBRACE", "tINT", "tCONST", "tPV", "tCOMA", "tMUL", "tDIV", - "tADD", "tSUB", "tEQ", "tNB", "tNBEXP", "tID", "tPRINTF", "tERROR", - "tIF", "tWHILE", "tELSE", "tLT", "tGT", "tEQCOND", "tAND", "tOR", "tNOT", - "$accept", "Main", "Params", "Param", "SuiteParams", "Body", - "Instructions", "Instruction", "If", "Else", "While", "Cond", - "SuiteCond", "Aff", "E", "DeclType", "Decl", "SuiteDecl", "FinDecl", - "SuiteDeclConst", "FinDeclConst", "Invocation", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285 -}; -# endif - -#define YYPACT_NINF (-75) - -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) - -#define YYTABLE_NINF (-1) - -#define yytable_value_is_error(Yyn) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int8 yypact[] = -{ - -6, 23, 14, 27, -75, 38, -75, 22, 32, 40, - 66, 38, -75, -75, 72, -75, 32, 38, 47, 73, - 81, 87, 95, 72, -75, -75, -75, 82, -75, 92, - -75, 84, 0, 85, 0, 0, -75, -75, 89, 21, - -75, 90, 86, 0, 0, -75, -75, -75, 0, 59, - -75, 100, 101, 39, 102, 0, -75, 82, -75, 0, - -75, 84, -75, 35, 70, 63, -75, 0, 0, 0, - 0, 0, 0, 0, -75, 66, 0, 0, -75, 66, - 63, 21, 63, 86, -75, -75, -75, 70, 70, -5, - -5, 43, 88, 39, 39, -75, -75, -75, -1, -75, - -75, -75, -75, -75 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_int8 yydefact[] = -{ - 0, 0, 0, 0, 1, 3, 40, 0, 7, 0, - 0, 0, 4, 5, 10, 2, 7, 0, 0, 0, - 0, 0, 0, 10, 14, 15, 11, 0, 12, 0, - 6, 0, 0, 0, 0, 0, 8, 9, 43, 0, - 13, 0, 0, 0, 0, 26, 27, 28, 0, 0, - 33, 0, 0, 22, 0, 0, 45, 0, 41, 0, - 48, 0, 42, 0, 35, 39, 25, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 21, 0, - 44, 0, 47, 0, 34, 29, 30, 32, 31, 38, - 37, 36, 19, 22, 22, 20, 46, 49, 0, 16, - 23, 24, 18, 17 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = -{ - -75, -75, -75, 99, 97, -74, 91, -75, 13, -75, - -75, 80, 5, -75, -32, 11, -75, 60, 37, 55, - 36, -10 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = -{ - -1, 2, 7, 8, 12, 15, 22, 23, 24, 99, - 25, 52, 78, 26, 53, 9, 28, 39, 58, 42, - 62, 50 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int8 yytable[] = -{ - 49, 92, 1, 14, 29, 95, 43, 67, 68, 69, - 70, 63, 64, 29, 4, 44, 65, 45, 46, 47, - 19, 20, 73, 80, 102, 27, 3, 82, 31, 10, - 48, 56, 57, 5, 27, 85, 86, 87, 88, 89, - 90, 91, 84, 11, 93, 94, 6, 67, 68, 69, - 70, 67, 68, 69, 70, 67, 68, 69, 70, 13, - 71, 72, 73, 32, 71, 72, 73, 76, 77, 66, - 14, 67, 68, 69, 70, 67, 68, 69, 70, 33, - 6, 17, 67, 68, 71, 72, 73, 34, 71, 72, - 73, 18, 19, 35, 20, 21, 60, 61, 100, 101, - 36, 38, 40, 41, 51, 55, 59, 74, 75, 79, - 16, 103, 98, 30, 37, 54, 83, 81, 96, 97 -}; - -static const yytype_int8 yycheck[] = -{ - 32, 75, 8, 4, 14, 79, 6, 12, 13, 14, - 15, 43, 44, 23, 0, 15, 48, 17, 18, 19, - 20, 22, 27, 55, 98, 14, 3, 59, 17, 7, - 30, 10, 11, 6, 23, 67, 68, 69, 70, 71, - 72, 73, 7, 11, 76, 77, 8, 12, 13, 14, - 15, 12, 13, 14, 15, 12, 13, 14, 15, 19, - 25, 26, 27, 16, 25, 26, 27, 28, 29, 10, - 4, 12, 13, 14, 15, 12, 13, 14, 15, 6, - 8, 9, 12, 13, 25, 26, 27, 6, 25, 26, - 27, 19, 20, 6, 22, 23, 10, 11, 93, 94, - 5, 19, 10, 19, 19, 16, 16, 7, 7, 7, - 11, 98, 24, 16, 23, 35, 61, 57, 81, 83 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_int8 yystos[] = -{ - 0, 8, 32, 3, 0, 6, 8, 33, 34, 46, - 7, 11, 35, 19, 4, 36, 34, 9, 19, 20, - 22, 23, 37, 38, 39, 41, 44, 46, 47, 52, - 35, 46, 16, 6, 6, 6, 5, 37, 19, 48, - 10, 19, 50, 6, 15, 17, 18, 19, 30, 45, - 52, 19, 42, 45, 42, 16, 10, 11, 49, 16, - 10, 11, 51, 45, 45, 45, 10, 12, 13, 14, - 15, 25, 26, 27, 7, 7, 28, 29, 43, 7, - 45, 48, 45, 50, 7, 45, 45, 45, 45, 45, - 45, 45, 36, 45, 45, 36, 49, 51, 24, 40, - 43, 43, 36, 39 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int8 yyr1[] = -{ - 0, 31, 32, 33, 33, 34, 35, 35, 36, 37, - 37, 38, 38, 38, 38, 38, 39, 40, 40, 40, - 41, 42, 43, 43, 43, 44, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 46, 47, 47, 48, 48, 49, 49, 50, 51, 51, - 52 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = -{ - 0, 2, 6, 0, 2, 2, 3, 0, 3, 2, - 0, 1, 1, 2, 1, 1, 6, 2, 2, 0, - 5, 2, 0, 3, 3, 4, 1, 1, 1, 3, - 3, 3, 3, 1, 3, 2, 3, 3, 3, 2, - 1, 3, 4, 1, 3, 1, 3, 3, 1, 3, - 4 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyoutput = yyo; - YYUSE (yyoutput); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); -# endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ - -static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) -# else -/* Return the length of YYSTR. */ -static YYPTRDIFF_T -yystrlen (const char *yystr) -{ - YYPTRDIFF_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYPTRDIFF_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYPTRDIFF_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else - return yystrlen (yystr); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) -{ - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ - int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - ++yyp; - ++yyformat; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - yy_state_fast_t yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYPTRDIFF_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - - -/*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | -`------------------------------------------------------------*/ -yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - -/*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END - - if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else - { - /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; - -# if defined yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - yy_state_t *yyss1 = yyss; - YYSTYPE *yyvs1 = yyvs; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; - } -# else /* defined YYSTACK_RELOCATE */ - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yy_state_t *yyss1 = yyss; - union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 49 "as.y" - { print(); create_asm();} -#line 1415 "as.tab.c" - break; - - case 3: -#line 51 "as.y" - { printf("Sans Params\n"); } -#line 1421 "as.tab.c" - break; - - case 5: -#line 53 "as.y" - { printf("Prametre : %s\n", (yyvsp[0].id)); } -#line 1427 "as.tab.c" - break; - - case 8: -#line 57 "as.y" - { } -#line 1433 "as.tab.c" - break; - - case 11: -#line 62 "as.y" - {reset_temp_vars();} -#line 1439 "as.tab.c" - break; - - case 12: -#line 63 "as.y" - {reset_temp_vars();} -#line 1445 "as.tab.c" - break; - - case 13: -#line 64 "as.y" - {reset_temp_vars();} -#line 1451 "as.tab.c" - break; - - case 14: -#line 65 "as.y" - {reset_temp_vars();} -#line 1457 "as.tab.c" - break; - - case 15: -#line 66 "as.y" - {reset_temp_vars();} -#line 1463 "as.tab.c" - break; - - case 16: -#line 69 "as.y" - { printf("If reconnu\n"); } -#line 1469 "as.tab.c" - break; - - case 17: -#line 70 "as.y" - { printf("Else if reconnu\n"); } -#line 1475 "as.tab.c" - break; - - case 18: -#line 71 "as.y" - { printf("Else reconnu\n"); } -#line 1481 "as.tab.c" - break; - - case 20: -#line 73 "as.y" - { printf("While reconnu\n"); } -#line 1487 "as.tab.c" - break; - - case 25: -#line 81 "as.y" - { printf("%s prend une valeur\n", (yyvsp[-3].id));} -#line 1493 "as.tab.c" - break; - - case 26: -#line 83 "as.y" - { int addr = allocate_mem_temp_var(INT); add_operation(AFC, addr,(yyvsp[0].nombre),0); (yyval.nombre) = addr;} -#line 1499 "as.tab.c" - break; - - case 27: -#line 85 "as.y" - { printf("Nombre exp\n"); int addr = allocate_mem_temp_var(INT); add_operation(AFC, addr,(yyvsp[0].nombre),0); (yyval.nombre) = addr;} -#line 1505 "as.tab.c" - break; - - case 28: -#line 86 "as.y" - { printf("Id\n"); /*Faire un get_address sur la pile*/} -#line 1511 "as.tab.c" - break; - - case 29: -#line 87 "as.y" - { printf("Mul\n"); int addr = allocate_mem_temp_var(INT); add_operation(MUL, addr,(yyvsp[-2].nombre),(yyvsp[-1].nombre)); (yyval.nombre) = addr;} -#line 1517 "as.tab.c" - break; - - case 30: -#line 88 "as.y" - { printf("Div\n"); int addr = allocate_mem_temp_var(INT); add_operation(DIV, addr,(yyvsp[-2].nombre),(yyvsp[-1].nombre)); (yyval.nombre) = addr;} -#line 1523 "as.tab.c" - break; - - case 31: -#line 89 "as.y" - { printf("Sub\n"); int addr = allocate_mem_temp_var(INT); add_operation(SOU, addr,(yyvsp[-2].nombre),(yyvsp[-1].nombre)); (yyval.nombre) = addr;} -#line 1529 "as.tab.c" - break; - - case 32: -#line 90 "as.y" - { printf("Add\n"); int addr = allocate_mem_temp_var(INT); add_operation(ADD, addr,(yyvsp[-2].nombre),(yyvsp[-1].nombre)); (yyval.nombre) = addr;} -#line 1535 "as.tab.c" - break; - - case 33: -#line 91 "as.y" - { printf("Invoc\n"); int addr = allocate_mem_temp_var(INT); add_operation(AFC, addr,(yyvsp[0].nombre),0); (yyval.nombre) = addr;} -#line 1541 "as.tab.c" - break; - - case 34: -#line 92 "as.y" - { printf("Parentheses\n"); (yyval.nombre)=(yyvsp[-1].nombre);} -#line 1547 "as.tab.c" - break; - - case 35: -#line 93 "as.y" - { printf("Moins\n"); int addr = allocate_mem_temp_var(INT); add_operation(SOU, 0,addr,0); (yyval.nombre) = addr;} -#line 1553 "as.tab.c" - break; - - case 36: -#line 94 "as.y" - { printf("==\n"); int addr = allocate_mem_temp_var(INT); add_operation(EQU, addr,(yyvsp[-2].nombre),(yyvsp[0].nombre)); (yyval.nombre) = addr;} -#line 1559 "as.tab.c" - break; - - case 37: -#line 95 "as.y" - { printf(">\n"); int addr = allocate_mem_temp_var(INT); add_operation(SUP, addr,(yyvsp[-2].nombre),(yyvsp[0].nombre)); (yyval.nombre) = addr;} -#line 1565 "as.tab.c" - break; - - case 38: -#line 96 "as.y" - { printf("<\n"); int addr = allocate_mem_temp_var(INT); add_operation(INF, addr,(yyvsp[-2].nombre),(yyvsp[0].nombre)); (yyval.nombre) = addr;} -#line 1571 "as.tab.c" - break; - - case 39: -#line 97 "as.y" - { printf("!\n"); } -#line 1577 "as.tab.c" - break; - - case 40: -#line 102 "as.y" - {type_courant = INT; printf("Type int\n");} -#line 1583 "as.tab.c" - break; - - case 43: -#line 107 "as.y" - {push((yyvsp[0].id), 0, type_courant); printf("Suite Decl\n");} -#line 1589 "as.tab.c" - break; - - case 44: -#line 108 "as.y" - {int addr = push((yyvsp[-2].id),1, type_courant); add_operation(AFC, addr,(yyvsp[0].nombre),0);} -#line 1595 "as.tab.c" - break; - - case 45: -#line 109 "as.y" - { printf("Fin Decl\n");} -#line 1601 "as.tab.c" - break; - - case 47: -#line 112 "as.y" - {int addr = push((yyvsp[-2].id),1, type_courant); add_operation(AFC, addr,(yyvsp[0].nombre),0);} -#line 1607 "as.tab.c" - break; - - case 50: -#line 133 "as.y" - { printf("Appel de printf sur %s\n", (yyvsp[-1].id)); } -#line 1613 "as.tab.c" - break; - - -#line 1617 "as.tab.c" - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} -#line 147 "as.y" - -void main(void) { - init(); - yyparse(); -} diff --git a/Lex_Yacc/as.tab.h b/Lex_Yacc/as.tab.h deleted file mode 100644 index 5fbf8d4..0000000 --- a/Lex_Yacc/as.tab.h +++ /dev/null @@ -1,105 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ - -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. - - 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 3 of the License, 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, see . */ - -/* 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. */ - -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -#ifndef YY_YY_AS_TAB_H_INCLUDED -# define YY_YY_AS_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - tMAIN = 258, - tOBRACKET = 259, - tCBRACKET = 260, - tOBRACE = 261, - tCBRACE = 262, - tINT = 263, - tCONST = 264, - tPV = 265, - tCOMA = 266, - tMUL = 267, - tDIV = 268, - tADD = 269, - tSUB = 270, - tEQ = 271, - tNB = 272, - tNBEXP = 273, - tID = 274, - tPRINTF = 275, - tERROR = 276, - tIF = 277, - tWHILE = 278, - tELSE = 279, - tLT = 280, - tGT = 281, - tEQCOND = 282, - tAND = 283, - tOR = 284, - tNOT = 285 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 1 "as.y" - - int nombre; - char id[30]; - -#line 93 "as.tab.h" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_AS_TAB_H_INCLUDED */ diff --git a/Lex_Yacc/as.y b/Lex_Yacc/as.y index 0af178c..0bcf040 100644 --- a/Lex_Yacc/as.y +++ b/Lex_Yacc/as.y @@ -3,11 +3,11 @@ char id[30]; } %{ -#include "../Symboles/table_symboles.h" +#include "../Tables/Symboles/table_symboles.h" #include #include #include -#include "../Symboles/tab_instruc.h" +#include "../Tables/Instructions/tab_instruc.h" #define TAILLE 1024 enum type_t type_courant; @@ -84,10 +84,10 @@ E : tNB { int addr = allocate_mem_temp_var(INT); add_operation(AFC, addr,$1,0); E : tNBEXP { printf("Nombre exp\n"); int addr = allocate_mem_temp_var(INT); add_operation(AFC, addr,$1,0); $$ = addr;}; E : tID { printf("Id\n"); /*Faire un get_address sur la pile*/}; -E : E tMUL E { printf("Mul\n"); int addr = allocate_mem_temp_var(INT); add_operation(MUL, addr,$1,$2); $$ = addr;}; -E : E tDIV E { printf("Div\n"); int addr = allocate_mem_temp_var(INT); add_operation(DIV, addr,$1,$2); $$ = addr;}; -E : E tSUB E { printf("Sub\n"); int addr = allocate_mem_temp_var(INT); add_operation(SOU, addr,$1,$2); $$ = addr;}; -E : E tADD E { printf("Add\n"); int addr = allocate_mem_temp_var(INT); add_operation(ADD, addr,$1,$2); $$ = addr;}; +E : E tMUL E { printf("Mul\n"); int addr = allocate_mem_temp_var(INT); add_operation(MUL, addr,$1,$3); $$ = addr;}; +E : E tDIV E { printf("Div\n"); int addr = allocate_mem_temp_var(INT); add_operation(DIV, addr,$1,$3); $$ = addr;}; +E : E tSUB E { printf("Sub\n"); int addr = allocate_mem_temp_var(INT); add_operation(SOU, addr,$1,$3); $$ = addr;}; +E : E tADD E { printf("Add\n"); int addr = allocate_mem_temp_var(INT); add_operation(ADD, addr,$1,$3); $$ = addr;}; E : Invocation { printf("Invoc\n"); int addr = allocate_mem_temp_var(INT); add_operation(AFC, addr,$1,0); $$ = addr;}; E : tOBRACE E tCBRACE { printf("Parentheses\n"); $$=$2;}; E : tSUB E { printf("Moins\n"); int addr = allocate_mem_temp_var(INT); add_operation(SOU, 0,addr,0); $$ = addr;}; diff --git a/Lex_Yacc/comp.sh b/Lex_Yacc/comp.sh deleted file mode 100755 index ab84a81..0000000 --- a/Lex_Yacc/comp.sh +++ /dev/null @@ -1,4 +0,0 @@ -bison -d -t as.y -v -flex al.lex -gcc as.tab.c lex.yy.c ../Symboles/tab_instruc.c ../Symboles/table_symboles.c -ll -o a.exe -cat ./ProgC | ./a.exe diff --git a/Lex_Yacc/lex.yy.c b/Lex_Yacc/lex.yy.c deleted file mode 100644 index 8089a6b..0000000 --- a/Lex_Yacc/lex.yy.c +++ /dev/null @@ -1,1936 +0,0 @@ - -#line 3 "lex.yy.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 31 -#define YY_END_OF_BUFFER 32 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[62] = - { 0, - 0, 0, 32, 30, 28, 25, 30, 4, 5, 21, - 19, 27, 20, 22, 17, 24, 11, 23, 12, 29, - 29, 29, 29, 29, 29, 29, 2, 30, 3, 0, - 14, 17, 0, 13, 29, 29, 29, 9, 29, 29, - 29, 29, 15, 26, 18, 29, 29, 7, 29, 29, - 29, 29, 16, 1, 29, 29, 6, 29, 10, 8, - 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 1, 1, 1, 1, 4, 1, 5, - 6, 7, 8, 9, 10, 1, 11, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 1, 13, 14, - 15, 16, 1, 1, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 1, 1, 1, 1, 18, 1, 19, 17, 20, 17, - - 21, 22, 17, 23, 24, 17, 17, 25, 26, 27, - 28, 29, 17, 30, 31, 32, 17, 17, 33, 17, - 17, 17, 34, 35, 36, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[37] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 1, 1 - } ; - -static const flex_int16_t yy_base[63] = - { 0, - 0, 0, 71, 72, 72, 67, 65, 72, 72, 72, - 72, 72, 72, 72, 25, 72, 72, 53, 72, 0, - 39, 41, 16, 46, 34, 40, 72, 27, 72, 58, - 72, 27, 48, 72, 0, 32, 27, 0, 25, 32, - 31, 30, 72, 72, 41, 21, 30, 0, 23, 22, - 22, 13, 0, 0, 12, 21, 0, 19, 0, 0, - 72, 38 - } ; - -static const flex_int16_t yy_def[63] = - { 0, - 61, 1, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, - 62, 62, 62, 62, 62, 62, 61, 61, 61, 61, - 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, - 62, 62, 61, 61, 61, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 0, 61 - } ; - -static const flex_int16_t yy_nxt[109] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 4, 20, 21, - 22, 20, 20, 23, 20, 24, 20, 20, 25, 20, - 20, 20, 26, 27, 28, 29, 32, 38, 32, 35, - 60, 59, 39, 58, 57, 33, 56, 33, 55, 54, - 53, 52, 45, 51, 50, 49, 48, 47, 46, 45, - 44, 43, 42, 41, 40, 37, 36, 34, 31, 30, - 61, 3, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - - 61, 61, 61, 61, 61, 61, 61, 61 - } ; - -static const flex_int16_t yy_chk[109] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 15, 23, 32, 62, - 58, 56, 23, 55, 52, 15, 51, 32, 50, 49, - 47, 46, 45, 42, 41, 40, 39, 37, 36, 33, - 30, 28, 26, 25, 24, 22, 21, 18, 7, 6, - 3, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - - 61, 61, 61, 61, 61, 61, 61, 61 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "al.lex" -#line 2 "al.lex" -#include "as.tab.h" -int yywrap(void){return 1;} -void -yyerror (char const *s) -{ - - fprintf (stderr, "%s\n", s); -} - -#line 494 "lex.yy.c" -#line 495 "lex.yy.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { -#line 13 "al.lex" - - -#line 715 "lex.yy.c" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 62 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 72 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 15 "al.lex" -{ return tMAIN ;} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 16 "al.lex" -{ return tOBRACKET;} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 17 "al.lex" -{ return tCBRACKET; } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 18 "al.lex" -{ return tOBRACE; } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 19 "al.lex" -{ return tCBRACE; } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 20 "al.lex" -{ return tCONST; } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 21 "al.lex" -{ return tINT; } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 22 "al.lex" -{ return tPRINTF; } //Degeu mais à degager - YY_BREAK -case 9: -YY_RULE_SETUP -#line 23 "al.lex" -{ return tIF; } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 24 "al.lex" -{ return tWHILE; } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 25 "al.lex" -{ return tLT; } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 26 "al.lex" -{ return tGT; } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 27 "al.lex" -{ return tEQCOND; } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 28 "al.lex" -{ return tAND; } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 29 "al.lex" -{ return tOR; } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 30 "al.lex" -{ return tELSE;} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 33 "al.lex" -{ yylval.nombre = atoi(yytext); return tNB; } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 34 "al.lex" -{ yylval.nombre = -1; return tNBEXP; } //Renvoyer le token tNB et pas tNBEXP - YY_BREAK -case 19: -YY_RULE_SETUP -#line 35 "al.lex" -{ return tADD; } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 36 "al.lex" -{ return tSUB; } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 37 "al.lex" -{ return tMUL; } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 38 "al.lex" -{ return tDIV; } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 39 "al.lex" -{ return tEQ; } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 40 "al.lex" -{ return tPV; } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 41 "al.lex" -{} //Ne pas les retourner à Yacc - YY_BREAK -case 26: -YY_RULE_SETUP -#line 42 "al.lex" -{} //Ne pas les retourner à Yacc - YY_BREAK -case 27: -YY_RULE_SETUP -#line 43 "al.lex" -{ return tCOMA; } - YY_BREAK -case 28: -/* rule 28 can match eol */ -YY_RULE_SETUP -#line 44 "al.lex" -{} //Ne pas les retourner à Yacc - YY_BREAK -case 29: -YY_RULE_SETUP -#line 45 "al.lex" -{ strcpy(yylval.id, yytext); return tID; } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 46 "al.lex" -{ return tERROR; } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 48 "al.lex" -ECHO; - YY_BREAK -#line 928 "lex.yy.c" -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 62 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - char *yy_cp = (yy_c_buf_p); - - YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 62 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 61); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 48 "al.lex" - - - - diff --git a/Lex_Yacc/lex.yy.o b/Lex_Yacc/lex.yy.o deleted file mode 100644 index 77f1f6179ea9e945fecff7797eff298baa425661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27160 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 Th#>!J`6q-Bqds4(s{Vfi+fm&9 diff --git a/Symboles/table_symboles.o b/Symboles/table_symboles.o deleted file mode 100644 index ef7d85a7461de157f09a3fdb07209325bf18541b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6352 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 nu;|QgmTIylYzdr|43F(C;W+g8u&jMy3Z= diff --git a/Symboles/test_table_symbole b/Symboles/test_table_symbole deleted file mode 100755 index 7e9f45231733c9b60dd40732e3b7ac523b476e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12928 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 G{r>^tY3OAD diff --git a/Symboles/tab_instruc.c b/Tables/Instructions/tab_instruc.c similarity index 100% rename from Symboles/tab_instruc.c rename to Tables/Instructions/tab_instruc.c diff --git a/Symboles/tab_instruc.h b/Tables/Instructions/tab_instruc.h similarity index 100% rename from Symboles/tab_instruc.h rename to Tables/Instructions/tab_instruc.h diff --git a/Symboles/table_symboles.c b/Tables/Symboles/table_symboles.c similarity index 100% rename from Symboles/table_symboles.c rename to Tables/Symboles/table_symboles.c diff --git a/Symboles/table_symboles.h b/Tables/Symboles/table_symboles.h similarity index 100% rename from Symboles/table_symboles.h rename to Tables/Symboles/table_symboles.h diff --git a/Symboles/test_table_symbole.c b/Tables/Symboles/test.c similarity index 100% rename from Symboles/test_table_symbole.c rename to Tables/Symboles/test.c