From b040304beb71bd9840afa40bd84d3c90229464b2 Mon Sep 17 00:00:00 2001
From: viniciusmioto <vsmioto@gmail.com>
Date: Tue, 3 Dec 2024 17:17:04 -0300
Subject: [PATCH] inicia avalia trabs

---
 ALTERADO/compilador.o             |  Bin 0 -> 1736 bytes
 ALTERADO/compilador.tab.c         | 2465 +++++++++++++++++++++++++++++
 ALTERADO/compilador.tab.h         |  137 ++
 ALTERADO/lex.yy.c                 | 2197 +++++++++++++++++++++++++
 ALTERADO/stack/stack.o            |  Bin 0 -> 2056 bytes
 ALTERADO/ts/ts.o                  |  Bin 0 -> 11248 bytes
 AvaliaTrabs/Exemplo7.02/pgma.pas  |    2 +-
 AvaliaTrabs/Exemplo7.03/pgma.pas  |    4 +-
 AvaliaTrabs/Exemplo7.04/pgma.pas  |    8 +-
 AvaliaTrabs/Exemplo7.05/pgma.pas  |    8 +-
 AvaliaTrabs/Exemplo8.05/pgma.pas  |    4 +-
 AvaliaTrabs/Exemplo8.06/pgma.pas  |    4 +-
 AvaliaTrabs/Exemplo8.07/pgma.pas  |    6 +-
 AvaliaTrabs/Exemplo8.08/pgma.pas  |    6 +-
 AvaliaTrabs/Exemplo8.09/pgma.pas  |    4 +-
 AvaliaTrabs/Exemplo8.10/pgma.pas  |    6 +-
 AvaliaTrabs/ExemploErro1/pgma.pas |    2 +-
 AvaliaTrabs/ExemploErro2/pgma.pas |    2 +-
 AvaliaTrabs/MEPA                  |   43 +-
 AvaliaTrabs/compilador            |  Bin 54640 -> 88872 bytes
 AvaliaTrabs/pgma.pas              |    2 +-
 AvaliaTrabs/res                   |   69 +
 22 files changed, 4936 insertions(+), 33 deletions(-)
 create mode 100644 ALTERADO/compilador.o
 create mode 100644 ALTERADO/compilador.tab.c
 create mode 100644 ALTERADO/compilador.tab.h
 create mode 100644 ALTERADO/lex.yy.c
 create mode 100644 ALTERADO/stack/stack.o
 create mode 100644 ALTERADO/ts/ts.o

diff --git a/ALTERADO/compilador.o b/ALTERADO/compilador.o
new file mode 100644
index 0000000000000000000000000000000000000000..1de430514a29f2c3cac0f71bd10f5c6e8454f918
GIT binary patch
literal 1736
zcmX^A>+L@t1_nk31_;5zz`(%4#K6Fy01{zfkYr$B=m5(?_~_&csGJ5!4+8_k0w|xI
zfq?;pLFR$<#K)JUR+NBP5F8&L;u;YGVIz||Q2ikDKt`TmW?+y9DPUn}08ua;AD^6`
zo1349;JY}6IKp@ccW@wt7?_dRP;1~K@$t#UB}JKe=}-}L_rcs{0F@6xHjIIR0pwPw
z6qo|LuOKnGB)&ASJTosPKHkR#ECD4Fpbl_=@;jIr!0tQ10yhiANFxRY1_@{!F);8m
zFfj6ib%GRu#4oTgFo=Spjg5g}1p@;EHv<Dh09XYB11AFngPhC*WkaQirv5WCUi@3l
zyz=j1hKUQB<$o+>mjA)Qz%YS>(cvctBg4lR?DM5O7#YkN85l$u7#JonFfdGHWMG(}
z$iOg>fq`KPNG$^+!%vX>istwqFg-7zdO-3o_!)jOFgpBP!5shNB{RcB4TyTU887%9
z!15sT1Q-}Zz<RhLdR8^Z|A6V!Vr2NK!3wqup_dz>7vzS&)y^ybGc!&+z#M<=|6zuU
zf2)~R{%wZ%4P-9JUm&-@*c^-wJ6|z#tOB_m<Th+}FfcR-f!yZn8sNxK&Y%DSs>NIk
zs>N0cs>KRi46a2*`3iZ73OSj18Hoz2DGIs@AbI3SxC7z9vJHgCz`y_%hs7y|yapo!
z11|%Et^y+ig8&1At_&js11kfAj|7Ca{lmb(AjrUw^8-T1eqdl=;9+3Mc>|$iPcSer
z@G&sx9)Y9}pFIo^b9OK=Ft9K%_-ujDwsWBJQy{c$4^&?Vgzp2&q#*li7{KY-rvgIT
zW<cc=AhazgGjK96_<+(sCj*164Ffn;>smnal8*_5wgu%kMg|5S9Z1@@1*LV6K2Rb9
z=>rv0j0_BHpnw9=3qkII<}HvIs0`v`W?+Ej-x(lzW(EdBsG3eF-x$iTg7R&k{A?)S
z70RCk;xi%2mu3(j$$U@|$H&6J0L$N?@{=D)y)nq2P_sbplZEnO@yiGCCrAp6K}taw
z%wb?)h(eS1K;tK&@x##g_7FZ3ECFeu@%<ruP#S_*8J}8_S;CMLuUA}B#1J1JUtE%s
zT2xfP5T91S5TBV_P?VXQ3QE@u@x__BN%=YX4DsoyMTyS&DVgc{4Dm&&If==M`3&)C
z`30$Y4DluT*&r$}hao;KEvK|N17uK9W?o4e)DArphMbbz0%I807|b<-agD%SLm1Z(
J%r#(O007xl=tlqm

literal 0
HcmV?d00001

diff --git a/ALTERADO/compilador.tab.c b/ALTERADO/compilador.tab.c
new file mode 100644
index 0000000..98a160e
--- /dev/null
+++ b/ALTERADO/compilador.tab.c
@@ -0,0 +1,2465 @@
+/* A Bison parser, made by GNU Bison 2.3.  */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   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 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+   simplifying the original so-called "semantic" parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.3"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     PROGRAM = 258,
+     ABRE_PARENTESES = 259,
+     FECHA_PARENTESES = 260,
+     VIRGULA = 261,
+     PONTO_E_VIRGULA = 262,
+     DOIS_PONTOS = 263,
+     PONTO = 264,
+     T_BEGIN = 265,
+     T_END = 266,
+     VAR = 267,
+     IDENT = 268,
+     ATRIBUICAO = 269,
+     LABEL = 270,
+     TYPE = 271,
+     ARRAY = 272,
+     PROCEDURE = 273,
+     FUNCTION = 274,
+     GOTO = 275,
+     IF = 276,
+     THEN = 277,
+     ELSE = 278,
+     WHILE = 279,
+     DO = 280,
+     OR = 281,
+     DIV = 282,
+     AND = 283,
+     NOT = 284,
+     IGUAL = 285,
+     DIFERENTE = 286,
+     MENOR_IGUAL = 287,
+     MAIOR_IGUAL = 288,
+     MENOR = 289,
+     MAIOR = 290,
+     MAIS = 291,
+     MENOS = 292,
+     ASTERISCO = 293,
+     NUMERO = 294,
+     READ = 295,
+     WRITE = 296,
+     LOWER_THAN_ELSE = 297
+   };
+#endif
+/* Tokens.  */
+#define PROGRAM 258
+#define ABRE_PARENTESES 259
+#define FECHA_PARENTESES 260
+#define VIRGULA 261
+#define PONTO_E_VIRGULA 262
+#define DOIS_PONTOS 263
+#define PONTO 264
+#define T_BEGIN 265
+#define T_END 266
+#define VAR 267
+#define IDENT 268
+#define ATRIBUICAO 269
+#define LABEL 270
+#define TYPE 271
+#define ARRAY 272
+#define PROCEDURE 273
+#define FUNCTION 274
+#define GOTO 275
+#define IF 276
+#define THEN 277
+#define ELSE 278
+#define WHILE 279
+#define DO 280
+#define OR 281
+#define DIV 282
+#define AND 283
+#define NOT 284
+#define IGUAL 285
+#define DIFERENTE 286
+#define MENOR_IGUAL 287
+#define MAIOR_IGUAL 288
+#define MENOR 289
+#define MAIOR 290
+#define MAIS 291
+#define MENOS 292
+#define ASTERISCO 293
+#define NUMERO 294
+#define READ 295
+#define WRITE 296
+#define LOWER_THAN_ELSE 297
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 6 "compilador.y"
+
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include "compilador.h"
+#include "ts/ts.h"
+#include "stack/stack.h"
+
+int num_vars;
+int num_param;
+ts_t *ts;
+int nivel_lexico;
+int desloc;
+int destino_nivel;
+int destino_desloc;
+simb_t *l_elem;
+int rot_id;
+custom_stack_t *rot;
+custom_stack_t *proc;
+
+int val_ou_ref;
+int atr_indireto;
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 216 of yacc.c.  */
+#line 216 "compilador.tab.c"
+
+#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;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+#  define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+#  define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# else
+#  define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+    int i;
+#endif
+{
+  return i;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   elif defined __BUILTIN_VA_ARG_INCR
+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+#   elif defined _AIX
+#    define YYSTACK_ALLOC __alloca
+#   elif defined _MSC_VER
+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+#    define alloca _alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     ifndef _STDLIB_H
+#      define _STDLIB_H 1
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+#  endif
+#  if (defined __cplusplus && ! defined _STDLIB_H \
+       && ! ((defined YYMALLOC || defined malloc) \
+	     && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
+#   endif
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  yytype_int16 yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state.  */
+#define YYFINAL  3
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   140
+
+/* YYNTOKENS -- Number of terminals.  */
+#define YYNTOKENS  43
+/* YYNNTS -- Number of nonterminals.  */
+#define YYNNTS  67
+/* YYNRULES -- Number of rules.  */
+#define YYNRULES  104
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  176
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   297
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const yytype_uint8 yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     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,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     4,    14,    15,    16,    23,    26,    27,
+      29,    30,    34,    35,    38,    40,    41,    42,    49,    51,
+      55,    57,    61,    63,    66,    68,    69,    70,    71,    80,
+      81,    82,    83,    95,    96,    97,   103,   104,   106,   110,
+     111,   117,   118,   123,   127,   129,   131,   135,   139,   142,
+     143,   147,   149,   151,   153,   155,   157,   159,   161,   162,
+     166,   168,   170,   171,   175,   176,   179,   183,   184,   185,
+     190,   191,   194,   199,   203,   205,   207,   212,   216,   218,
+     222,   226,   230,   234,   238,   242,   244,   248,   252,   254,
+     258,   262,   264,   265,   269,   271,   275,   277,   278,   279,
+     286,   289,   292,   293,   294
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int8 yyrhs[] =
+{
+      44,     0,    -1,    -1,    45,     3,    13,     4,    59,     5,
+       7,    46,     9,    -1,    -1,    -1,    49,    50,    47,    60,
+      48,    77,    -1,    15,     6,    -1,    -1,    51,    -1,    -1,
+      52,    12,    53,    -1,    -1,    53,    54,    -1,    54,    -1,
+      -1,    -1,    55,    58,     8,    57,    56,     7,    -1,    13,
+      -1,    58,     6,    13,    -1,    13,    -1,    59,     6,    13,
+      -1,    13,    -1,    60,    61,    -1,    64,    -1,    -1,    -1,
+      -1,    18,    13,    62,    68,     7,    46,    63,     7,    -1,
+      -1,    -1,    -1,    19,    13,    65,    68,     8,    66,    57,
+       7,    46,    67,     7,    -1,    -1,    -1,     4,    69,    71,
+      70,     5,    -1,    -1,    72,    -1,    71,     7,    72,    -1,
+      -1,    12,    73,    75,     8,    57,    -1,    -1,    74,    75,
+       8,    57,    -1,    76,     6,    75,    -1,    76,    -1,    13,
+      -1,    10,    78,    11,    -1,    79,     7,    78,    -1,    79,
+       7,    -1,    -1,   102,     8,    80,    -1,    80,    -1,    81,
+      -1,    77,    -1,   106,    -1,   103,    -1,    92,    -1,    95,
+      -1,    -1,    13,    82,    83,    -1,    84,    -1,    86,    -1,
+      -1,    85,    14,    98,    -1,    -1,    87,    88,    -1,     4,
+      89,     5,    -1,    -1,    -1,    89,     6,    90,    98,    -1,
+      -1,    91,    98,    -1,    40,     4,    93,     5,    -1,    93,
+       6,    94,    -1,    94,    -1,    13,    -1,    41,     4,    96,
+       5,    -1,    96,     6,    98,    -1,    98,    -1,    97,    30,
+      98,    -1,    97,    31,    98,    -1,    97,    34,    98,    -1,
+      97,    32,    98,    -1,    97,    35,    98,    -1,    97,    33,
+      98,    -1,    98,    -1,    98,    36,    99,    -1,    98,    37,
+      99,    -1,    99,    -1,    99,    38,   100,    -1,    99,    27,
+     100,    -1,   100,    -1,    -1,    13,   101,    86,    -1,    39,
+      -1,     4,    97,     5,    -1,    39,    -1,    -1,    -1,   104,
+      24,    97,    25,   105,    80,    -1,   108,   107,    -1,    23,
+      80,    -1,    -1,    -1,    21,    97,   109,    22,    80,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const yytype_uint16 yyrline[] =
+{
+       0,    47,    47,    47,    63,    74,    60,    93,    94,    97,
+     101,   101,   102,   105,   106,   110,   113,   110,   121,   134,
+     143,   154,   155,   159,   161,   162,   167,   191,   167,   205,
+     229,   233,   205,   246,   247,   245,   255,   258,   259,   263,
+     262,   272,   272,   280,   281,   284,   294,   297,   298,   299,
+     302,   303,   306,   307,   308,   309,   310,   311,   314,   314,
+     318,   319,   322,   322,   353,   353,   395,   398,   402,   401,
+     414,   414,   428,   431,   432,   435,   444,   447,   450,   455,
+     458,   461,   464,   467,   470,   473,   476,   482,   488,   491,
+     494,   497,   500,   500,   542,   552,   555,   557,   564,   557,
+     590,   597,   599,   602,   602
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* 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", "PROGRAM", "ABRE_PARENTESES",
+  "FECHA_PARENTESES", "VIRGULA", "PONTO_E_VIRGULA", "DOIS_PONTOS", "PONTO",
+  "T_BEGIN", "T_END", "VAR", "IDENT", "ATRIBUICAO", "LABEL", "TYPE",
+  "ARRAY", "PROCEDURE", "FUNCTION", "GOTO", "IF", "THEN", "ELSE", "WHILE",
+  "DO", "OR", "DIV", "AND", "NOT", "IGUAL", "DIFERENTE", "MENOR_IGUAL",
+  "MAIOR_IGUAL", "MENOR", "MAIOR", "MAIS", "MENOS", "ASTERISCO", "NUMERO",
+  "READ", "WRITE", "LOWER_THAN_ELSE", "$accept", "programa", "@1", "bloco",
+  "@2", "@3", "parte_declara_rotulos", "parte_declara_vars", "var", "@4",
+  "declara_vars", "declara_var", "@5", "@6", "tipo", "lista_id_var",
+  "lista_idents", "parte_declara_subrotinas", "declaracao_procedimento",
+  "@7", "@8", "declaracao_funcao", "@9", "@10", "@11",
+  "parametros_ou_nada", "@12", "@13", "paramentros_formais", "secao_pfs",
+  "@14", "@15", "lista_id_pf", "parametro", "comando_composto", "comandos",
+  "comando", "comando_sem_rotulo", "atribuicao_ou_procedimento", "@16",
+  "atribuicao_ou_procedimento_token", "atribuicao", "@17",
+  "chamada_procedimento", "@18", "lista_parametros",
+  "lista_parametros_parenteses", "@19", "@20", "leitura", "lista_leituras",
+  "simb_leitura", "escrita", "lista_escritas", "expressao",
+  "expressao_simples", "termo", "fator", "@21", "numero",
+  "comando_repetitivo", "@22", "@23", "comando_condicional", "cond_else",
+  "if_then", "@24", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+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,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,    43,    45,    44,    47,    48,    46,    49,    49,    50,
+      52,    51,    51,    53,    53,    55,    56,    54,    57,    58,
+      58,    59,    59,    60,    60,    60,    62,    63,    61,    65,
+      66,    67,    64,    69,    70,    68,    68,    71,    71,    73,
+      72,    74,    72,    75,    75,    76,    77,    78,    78,    78,
+      79,    79,    80,    80,    80,    80,    80,    80,    82,    81,
+      83,    83,    85,    84,    87,    86,    88,    88,    90,    89,
+      91,    89,    92,    93,    93,    94,    95,    96,    96,    97,
+      97,    97,    97,    97,    97,    97,    98,    98,    98,    99,
+      99,    99,   101,   100,   100,   100,   102,   104,   105,   103,
+     106,   107,   107,   109,   108
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     0,     9,     0,     0,     6,     2,     0,     1,
+       0,     3,     0,     2,     1,     0,     0,     6,     1,     3,
+       1,     3,     1,     2,     1,     0,     0,     0,     8,     0,
+       0,     0,    11,     0,     0,     5,     0,     1,     3,     0,
+       5,     0,     4,     3,     1,     1,     3,     3,     2,     0,
+       3,     1,     1,     1,     1,     1,     1,     1,     0,     3,
+       1,     1,     0,     3,     0,     2,     3,     0,     0,     4,
+       0,     2,     4,     3,     1,     1,     4,     3,     1,     3,
+       3,     3,     3,     3,     3,     1,     3,     3,     1,     3,
+       3,     1,     0,     3,     1,     3,     1,     0,     0,     6,
+       2,     2,     0,     0,     5
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const yytype_uint8 yydefact[] =
+{
+       2,     0,     0,     1,     0,     0,     0,    22,     0,     0,
+       0,     8,    21,     0,     0,    12,     7,     3,     4,     9,
+       0,    25,    15,     0,     5,    24,    11,    14,     0,    29,
+       0,     0,    23,    13,    20,     0,    36,    26,    49,     6,
+       0,     0,    33,     0,    36,    58,     0,    96,     0,     0,
+      53,     0,     0,    51,    52,    56,    57,     0,    55,     0,
+      54,   102,    19,    18,    16,    41,    30,     0,    64,     0,
+      92,    94,   103,    85,    88,    91,     0,     0,    46,    48,
+      97,     0,    97,   100,     0,    39,    34,    37,     0,     0,
+       8,    59,    60,     0,    61,    67,     0,    64,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    75,
+       0,    74,     0,    78,    47,    50,     0,   101,    17,     0,
+      41,     0,    45,     0,    44,     0,    27,     0,    70,    65,
+      95,    93,    79,    80,    82,    84,    81,    83,    97,    86,
+      87,    90,    89,    72,     0,    76,     0,    98,     0,    38,
+      35,     0,     0,     8,     0,    63,     0,     0,   104,    73,
+      77,    97,     0,    42,    43,    31,    28,    66,    68,    71,
+      99,    40,     0,     0,    32,    69
+};
+
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,     1,     2,    14,    21,    31,    15,    18,    19,    20,
+      26,    27,    28,    84,    64,    35,     8,    24,    32,    44,
+     154,    25,    36,    89,   172,    43,    65,   121,    86,    87,
+     119,    88,   123,   124,    50,    51,    52,    53,    54,    68,
+      91,    92,    93,    94,    95,   129,   156,   173,   157,    55,
+     110,   111,    56,   112,    72,    73,    74,    75,    97,    57,
+      58,    59,   161,    60,    83,    61,   104
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -114
+static const yytype_int8 yypact[] =
+{
+    -114,    15,    14,  -114,    16,    32,    28,  -114,     7,    55,
+      50,    51,  -114,    62,    56,    58,  -114,  -114,  -114,  -114,
+      60,    52,  -114,    61,    63,  -114,    64,  -114,    66,  -114,
+      82,    87,  -114,  -114,  -114,     3,    69,  -114,     6,  -114,
+      85,    86,  -114,    68,    69,  -114,     1,  -114,    96,    97,
+    -114,    91,    98,  -114,  -114,  -114,  -114,    95,  -114,    80,
+    -114,    83,  -114,  -114,  -114,    99,  -114,   100,    94,     1,
+    -114,  -114,    59,    -4,     4,  -114,   101,     1,  -114,     6,
+      -3,     1,    -3,  -114,   102,  -114,   103,  -114,   104,    86,
+      51,  -114,  -114,   105,  -114,   108,    23,  -114,     1,     1,
+       1,     1,     1,     1,    93,     1,     1,     1,     1,  -114,
+      29,  -114,    38,    -4,  -114,  -114,    53,  -114,  -114,   104,
+      99,   111,  -114,   110,   107,   113,  -114,     1,  -114,  -114,
+    -114,  -114,    -4,    -4,    -4,    -4,    -4,    -4,    -3,     4,
+       4,  -114,  -114,  -114,   101,  -114,     1,  -114,   114,  -114,
+    -114,    86,   104,    51,   116,    -4,    43,     1,  -114,  -114,
+      -4,    -3,    86,  -114,  -114,  -114,  -114,  -114,  -114,    -4,
+    -114,  -114,   117,     1,  -114,    -4
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int8 yypgoto[] =
+{
+    -114,  -114,  -114,   -86,  -114,  -114,  -114,  -114,  -114,  -114,
+    -114,   106,  -114,  -114,   -87,  -114,  -114,  -114,  -114,  -114,
+    -114,  -114,  -114,  -114,  -114,    77,  -114,  -114,  -114,     5,
+    -114,  -114,  -113,  -114,   109,    47,  -114,   -79,  -114,  -114,
+    -114,  -114,  -114,    30,  -114,  -114,  -114,  -114,  -114,  -114,
+    -114,   -16,  -114,  -114,   -61,   -77,   -54,   -47,  -114,  -114,
+    -114,  -114,  -114,  -114,  -114,  -114,  -114
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -98
+static const yytype_int16 yytable[] =
+{
+     113,   115,   125,   117,   126,    69,   148,    38,    96,    40,
+      45,    41,     9,    10,    70,     3,    38,     4,    46,    45,
+     116,   132,   133,   134,   135,   136,   137,    46,   130,     5,
+     -97,   107,   105,   106,   143,   144,     6,    48,    49,   164,
+      71,     7,   108,   145,   146,    47,    48,    49,   167,   168,
+     155,   139,   140,    98,    99,   100,   101,   102,   103,   158,
+     141,   142,    11,    12,   163,    17,    13,   165,    16,   160,
+     -10,    23,    22,    42,    29,   171,    66,   -15,   147,    34,
+     169,    30,   170,    98,    99,   100,   101,   102,   103,    98,
+      99,   100,   101,   102,   103,    37,   175,    38,    62,    63,
+      76,    77,    78,    80,    81,    79,    82,    90,   -62,   118,
+     120,    85,   128,   152,   109,   138,   150,   122,   151,   127,
+     153,    67,   162,   166,   174,   149,   114,   131,   159,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
+      39
+};
+
+static const yytype_int16 yycheck[] =
+{
+      77,    80,    89,    82,    90,     4,   119,    10,    69,     6,
+      13,     8,     5,     6,    13,     0,    10,     3,    21,    13,
+      81,    98,    99,   100,   101,   102,   103,    21,     5,    13,
+      24,    27,    36,    37,     5,     6,     4,    40,    41,   152,
+      39,    13,    38,     5,     6,    39,    40,    41,     5,     6,
+     127,   105,   106,    30,    31,    32,    33,    34,    35,   138,
+     107,   108,     7,    13,   151,     9,    15,   153,     6,   146,
+      12,    19,    12,     4,    13,   162,     8,    13,    25,    13,
+     157,    18,   161,    30,    31,    32,    33,    34,    35,    30,
+      31,    32,    33,    34,    35,    13,   173,    10,    13,    13,
+       4,     4,    11,     8,    24,     7,    23,     7,    14,     7,
+       7,    12,     4,     6,    13,    22,     5,    13,     8,    14,
+       7,    44,     8,     7,     7,   120,    79,    97,   144,    -1,
+      -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      31
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const yytype_uint8 yystos[] =
+{
+       0,    44,    45,     0,     3,    13,     4,    13,    59,     5,
+       6,     7,    13,    15,    46,    49,     6,     9,    50,    51,
+      52,    47,    12,    19,    60,    64,    53,    54,    55,    13,
+      18,    48,    61,    54,    13,    58,    65,    13,    10,    77,
+       6,     8,     4,    68,    62,    13,    21,    39,    40,    41,
+      77,    78,    79,    80,    81,    92,    95,   102,   103,   104,
+     106,   108,    13,    13,    57,    69,     8,    68,    82,     4,
+      13,    39,    97,    98,    99,   100,     4,     4,    11,     7,
+       8,    24,    23,   107,    56,    12,    71,    72,    74,    66,
+       7,    83,    84,    85,    86,    87,    97,   101,    30,    31,
+      32,    33,    34,    35,   109,    36,    37,    27,    38,    13,
+      93,    94,    96,    98,    78,    80,    97,    80,     7,    73,
+       7,    70,    13,    75,    76,    57,    46,    14,     4,    88,
+       5,    86,    98,    98,    98,    98,    98,    98,    22,    99,
+      99,   100,   100,     5,     6,     5,     6,    25,    75,    72,
+       5,     8,     6,     7,    63,    98,    89,    91,    80,    94,
+      98,   105,     8,    57,    75,    46,     7,     5,     6,    98,
+      80,    57,    67,    90,     7,    98
+};
+
+#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
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK (1);						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (YYID (0))
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (YYID (N))                                                    \
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (YYID (0))
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+	      (Loc).first_line, (Loc).first_column,	\
+	      (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (YYID (0))
+
+# 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 (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (!yyvaluep)
+    return;
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
+# endif
+  switch (yytype)
+    {
+      default:
+	break;
+    }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", 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).                                                   |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    int yyrule;
+#endif
+{
+  int yynrhs = yyr2[yyrule];
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+	     yyrule - 1, yylno);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      fprintf (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       		       );
+      fprintf (stderr, "\n");
+    }
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (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.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
+{
+  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.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
+{
+  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 YYRESULT an error message about the unexpected token
+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
+   including the terminating null byte.  If YYRESULT is null, do not
+   copy anything; just return the number of bytes that would be
+   copied.  As a special case, return 0 if an ordinary "syntax error"
+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
+   size calculation.  */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+  int yyn = yypact[yystate];
+
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+    return 0;
+  else
+    {
+      int yytype = YYTRANSLATE (yychar);
+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+      YYSIZE_T yysize = yysize0;
+      YYSIZE_T yysize1;
+      int yysize_overflow = 0;
+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+      int yyx;
+
+# if 0
+      /* This is so xgettext sees the translatable formats that are
+	 constructed on the fly.  */
+      YY_("syntax error, unexpected %s");
+      YY_("syntax error, unexpected %s, expecting %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+      char *yyfmt;
+      char const *yyf;
+      static char const yyunexpected[] = "syntax error, unexpected %s";
+      static char const yyexpecting[] = ", expecting %s";
+      static char const yyor[] = " or %s";
+      char yyformat[sizeof yyunexpected
+		    + sizeof yyexpecting - 1
+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+		       * (sizeof yyor - 1))];
+      char const *yyprefix = yyexpecting;
+
+      /* Start YYX at -YYN if negative to avoid negative indexes in
+	 YYCHECK.  */
+      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 yycount = 1;
+
+      yyarg[0] = yytname[yytype];
+      yyfmt = yystpcpy (yyformat, yyunexpected);
+
+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	  {
+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+	      {
+		yycount = 1;
+		yysize = yysize0;
+		yyformat[sizeof yyunexpected - 1] = '\0';
+		break;
+	      }
+	    yyarg[yycount++] = yytname[yyx];
+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+	    yysize_overflow |= (yysize1 < yysize);
+	    yysize = yysize1;
+	    yyfmt = yystpcpy (yyfmt, yyprefix);
+	    yyprefix = yyor;
+	  }
+
+      yyf = YY_(yyformat);
+      yysize1 = yysize + yystrlen (yyf);
+      yysize_overflow |= (yysize1 < yysize);
+      yysize = yysize1;
+
+      if (yysize_overflow)
+	return YYSIZE_MAXIMUM;
+
+      if (yyresult)
+	{
+	  /* 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 = yyresult;
+	  int yyi = 0;
+	  while ((*yyp = *yyf) != '\0')
+	    {
+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		{
+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
+		  yyf += 2;
+		}
+	      else
+		{
+		  yyp++;
+		  yyf++;
+		}
+	    }
+	}
+      return yysize;
+    }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  YYUSE (yyvaluep);
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+	break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* The number of symbols on the RHS of the reduced rule.
+     Keep to zero when no symbol should be popped.  */
+  int yylen = 0;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  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);
+	YYSTACK_RELOCATE (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));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+  /* Do appropriate processing given the current state.  Read a
+     look-ahead token if we need one and don't already have one.  */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead 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 (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the shifted token unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  yystate = yyn;
+  *++yyvsp = yylval;
+
+  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 47 "compilador.y"
+    {
+             geraCodigo (NULL, "INPP");
+             ;}
+    break;
+
+  case 3:
+#line 53 "compilador.y"
+    {
+               geraCodigo (NULL, "PARA");
+             ;}
+    break;
+
+  case 4:
+#line 63 "compilador.y"
+    {
+            char r_main[4];
+            sprintf(r_main, "R%02d", rot_id);
+            empilha(r_main, rot);
+            rot_id += 1;
+            char buffer[50];
+            strcpy(buffer,"DSVS ");
+            strcat(buffer,r_main);
+            geraCodigo(NULL,buffer);
+         ;}
+    break;
+
+  case 5:
+#line 74 "compilador.y"
+    {
+            char r_main[4];
+            desempilha(r_main,rot);
+            geraCodigo(r_main,"NADA");
+         ;}
+    break;
+
+  case 6:
+#line 80 "compilador.y"
+    {
+            char buffer[50];
+            sprintf(buffer,"DMEM %d",desloc);
+            desloc = retira_pr_fun(ts);
+            desloc = retira_vs_pf(ts);
+            geraCodigo(NULL,buffer);
+            if (nivel_lexico > 0)
+               nivel_lexico -= 1;
+            mostra_ts(ts);
+         ;}
+    break;
+
+  case 10:
+#line 101 "compilador.y"
+    { ;}
+    break;
+
+  case 15:
+#line 110 "compilador.y"
+    { num_vars = 0; ;}
+    break;
+
+  case 16:
+#line 113 "compilador.y"
+    { 
+               char buffer[50];
+               sprintf(buffer, "AMEM %d", num_vars);
+               geraCodigo(NULL, buffer);
+              ;}
+    break;
+
+  case 18:
+#line 122 "compilador.y"
+    {
+                if (strcmp(token, "integer") == 0) {
+                    atualiza_tipo(num_vars, INTEIRO, ts);
+                } else if (strcmp(token, "boolean") == 0) {
+                    atualiza_tipo(num_vars, BOOLEAN, ts);
+                } else {
+                    yyerror("ERRO: Tipo não reconhecido. Somente 'integer' ou 'boolean' são permitidos.");
+                }
+                mostra_ts(ts); // Mostra a tabela após a inserção
+               ;}
+    break;
+
+  case 19:
+#line 135 "compilador.y"
+    { /* insere �ltima vars na tabela de s�mbolos */ 
+               num_vars += 1;
+               info_t info;
+               info.vs.tipo = NSEI;
+               info.vs.desloc = desloc;
+               insere_ts(token,VS,nivel_lexico,info,ts);
+               desloc += 1;
+              ;}
+    break;
+
+  case 20:
+#line 143 "compilador.y"
+    { 
+               num_vars += 1;
+               info_t info;
+               info.vs.tipo = NSEI;
+               info.vs.desloc = desloc;
+               insere_ts(token,VS,nivel_lexico,info,ts);
+               desloc += 1;
+               /* insere vars na tabela de s�mbolos */
+            ;}
+    break;
+
+  case 26:
+#line 167 "compilador.y"
+    {
+               // Insere o procedimento na tabela de símbolos
+               info_t info;
+               char r_proc[4];
+               sprintf(r_proc, "R%02d", rot_id);
+               rot_id += 1;
+               strcpy(info.pr.rot,r_proc);
+               info.pr.quant = 0;
+               info.pr.param = NULL;
+
+               // Incrementa o nível léxico
+               nivel_lexico += 1;
+               desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível
+
+               insere_ts(token, PR, nivel_lexico, info, ts);
+               empilha(token,proc);
+
+               char buffer[50];
+               sprintf(buffer,"ENPR %d",nivel_lexico);
+               geraCodigo(r_proc,buffer);
+               mostra_ts(ts);
+            ;}
+    break;
+
+  case 27:
+#line 191 "compilador.y"
+    {
+               char buffer[50];
+               desempilha(buffer,proc);
+               l_elem = busca(buffer,ts);
+               sprintf(buffer,"RTPR %d, %d",l_elem->nivel,l_elem->info.pr.quant);
+               geraCodigo(NULL,buffer);
+               desloc = retira_vs_pf(ts);
+               mostra_ts(ts);
+            ;}
+    break;
+
+  case 29:
+#line 205 "compilador.y"
+    {
+             // Insere o funcao na tabela de símbolos
+            info_t info;
+            char r_func[4];
+            sprintf(r_func, "R%02d", rot_id);
+            rot_id += 1;
+            strcpy(info.fun.rot,r_func);
+            info.fun.quant = 0;
+            info.fun.param = NULL;
+            info.fun.tipo = NSEI;
+
+            // Incrementa o nível léxico
+            nivel_lexico += 1;
+            desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível
+
+            insere_ts(token, FUN, nivel_lexico, info, ts);
+            empilha(token,proc);
+
+            char buffer[50];
+            sprintf(buffer,"ENPR %d",nivel_lexico);
+            geraCodigo(r_func,buffer);
+            mostra_ts(ts);
+            ;}
+    break;
+
+  case 30:
+#line 229 "compilador.y"
+    {
+               num_vars = 1;
+            ;}
+    break;
+
+  case 31:
+#line 233 "compilador.y"
+    { 
+               char buffer[50];
+               desempilha(buffer,proc);
+               l_elem = busca(buffer,ts);
+               sprintf(buffer,"RTPR %d, %d",l_elem->nivel,l_elem->info.fun.quant);
+               geraCodigo(NULL,buffer);
+               desloc = retira_vs_pf(ts);
+               mostra_ts(ts); 
+            ;}
+    break;
+
+  case 33:
+#line 246 "compilador.y"
+    {num_param = 0;;}
+    break;
+
+  case 34:
+#line 247 "compilador.y"
+    {
+               char proc_ident[50];
+               desempilha(proc_ident,proc);
+               adiciona_param(proc_ident,num_param,ts);
+               empilha(proc_ident,proc);
+               mostra_ts(ts);
+            ;}
+    break;
+
+  case 39:
+#line 263 "compilador.y"
+    {
+               num_vars = 0; 
+               val_ou_ref = REF;
+            ;}
+    break;
+
+  case 40:
+#line 268 "compilador.y"
+    { 
+               num_param += num_vars;
+               val_ou_ref = VLR;
+            ;}
+    break;
+
+  case 41:
+#line 272 "compilador.y"
+    {
+               num_vars = 0;
+               val_ou_ref = VLR;
+            ;}
+    break;
+
+  case 42:
+#line 277 "compilador.y"
+    {num_param += num_vars;;}
+    break;
+
+  case 45:
+#line 284 "compilador.y"
+    {
+               num_vars += 1;
+               info_t info;
+               info.pf.tipo = NSEI;
+               info.pf.desloc = NSEI;
+               info.pf.passagem = val_ou_ref;
+               insere_ts(token,PF,nivel_lexico,info,ts);
+            ;}
+    break;
+
+  case 58:
+#line 314 "compilador.y"
+    {l_elem = busca(token, ts);;}
+    break;
+
+  case 62:
+#line 322 "compilador.y"
+    {
+    if (l_elem == NULL) {
+        yyerror("ERRO: Variável de destino não declarada");
+    } else {
+         if (l_elem->categ == PF && l_elem->info.pf.passagem == REF)
+            atr_indireto = REF;
+         else atr_indireto = VLR; 
+         destino_nivel = l_elem->nivel;
+         if(l_elem->categ == VS)
+            destino_desloc = l_elem->info.vs.desloc;
+         else if(l_elem->categ == PF)
+            destino_desloc = l_elem->info.pf.desloc;
+         else if(l_elem->categ == FUN)
+            destino_desloc = l_elem->info.fun.desloc;
+         else
+            yyerror("ERRO: Tentativa de atribuir em procedimento");
+
+    }
+;}
+    break;
+
+  case 63:
+#line 340 "compilador.y"
+    {
+    // Gera código ARMZ para armazenar valor
+    char buffer[50];
+    if (atr_indireto == REF) {
+      sprintf(buffer, "ARMI %d, %d", destino_nivel, destino_desloc);
+    } else {
+      sprintf(buffer, "ARMZ %d, %d", destino_nivel, destino_desloc);
+    }
+    geraCodigo(NULL, buffer);
+;}
+    break;
+
+  case 64:
+#line 353 "compilador.y"
+    {
+               if (l_elem == NULL){
+                  yyerror("ERRO: Procedimento não declarado");
+               } else{
+                  // Gera código para chamar o procedimento
+                  empilha(l_elem->ident, proc);
+               }
+               if (l_elem->categ == FUN)
+                  geraCodigo(NULL, "AMEM 1");
+               if (l_elem->categ == PR || l_elem->categ == FUN)
+                  num_param = 0; // Reinicia a contagem de parâmetros reais   
+            ;}
+    break;
+
+  case 65:
+#line 368 "compilador.y"
+    { 
+               char buffer[50];
+               mostra_ts(ts);
+               desempilha(buffer, proc);
+               l_elem = busca(buffer, ts);
+
+               if (l_elem->categ == PR || l_elem->categ ==FUN) {
+                  // Verifica se o número de parâmetros reais bate com os formais
+                  char error_msg[100];
+                  if (l_elem->categ == PR && num_param != l_elem->info.pr.quant) {
+                     sprintf(error_msg, "ERRO: número de parâmetros incorreto. Esperado: %d, recebido: %d.",
+                              l_elem->info.pr.quant, num_param);
+                     yyerror(error_msg);
+                  } else if(l_elem->categ == FUN && num_param != l_elem->info.fun.quant){
+                     sprintf(error_msg, "ERRO: número de parâmetros incorreto. Esperado: %d, recebido: %d.",
+                              l_elem->info.fun.quant, num_param);
+                     yyerror(error_msg);
+                  }
+
+                  // Gera o código de chamada do procedimento
+                  
+                  sprintf(buffer, "CHPR %s, %d", l_elem->info.pr.rot, nivel_lexico);
+                  geraCodigo(NULL, buffer);
+               }
+            ;}
+    break;
+
+  case 68:
+#line 402 "compilador.y"
+    {
+                  char buffer[50];
+                  desempilha(buffer,proc);
+                  l_elem = busca(buffer,ts);
+                  val_ou_ref = l_elem->info.pr.param[num_param][1];
+                  empilha(buffer,proc);
+               ;}
+    break;
+
+  case 69:
+#line 410 "compilador.y"
+    {
+                  num_param++; // Incrementa para cada parâmetro real
+                  val_ou_ref = VLR;
+               ;}
+    break;
+
+  case 70:
+#line 414 "compilador.y"
+    {
+                  char buffer[50];
+                  desempilha(buffer,proc);
+                  l_elem = busca(buffer,ts);
+                  val_ou_ref = l_elem->info.pr.param[num_param][1];
+                  empilha(buffer,proc);
+               ;}
+    break;
+
+  case 71:
+#line 422 "compilador.y"
+    {
+                  num_param++; // Conta o primeiro parâmetro real
+                  val_ou_ref = VLR;
+               ;}
+    break;
+
+  case 75:
+#line 435 "compilador.y"
+    {
+               geraCodigo(NULL, "LEIT");
+               l_elem = busca(token,ts);
+               char buffer[50];
+               sprintf(buffer,"ARMZ %d, %d",l_elem->nivel,l_elem->info.vs.desloc);
+               geraCodigo(NULL,buffer);
+            ;}
+    break;
+
+  case 77:
+#line 447 "compilador.y"
+    {
+               geraCodigo(NULL,"IMPR");
+            ;}
+    break;
+
+  case 78:
+#line 450 "compilador.y"
+    {
+               geraCodigo(NULL,"IMPR");
+            ;}
+    break;
+
+  case 79:
+#line 455 "compilador.y"
+    {
+            geraCodigo(NULL, "CMIG"); // Adiciona operação de cmig
+         ;}
+    break;
+
+  case 80:
+#line 458 "compilador.y"
+    {
+            geraCodigo(NULL, "CMDG"); // Adiciona operação de cmdg
+         ;}
+    break;
+
+  case 81:
+#line 461 "compilador.y"
+    {
+            geraCodigo(NULL, "CMME"); // Adiciona operação de cmme
+         ;}
+    break;
+
+  case 82:
+#line 464 "compilador.y"
+    {
+            geraCodigo(NULL, "CMEG"); // Adiciona operação de cmeg
+         ;}
+    break;
+
+  case 83:
+#line 467 "compilador.y"
+    {
+            geraCodigo(NULL, "CMMA"); // Adiciona operação de cmma
+         ;}
+    break;
+
+  case 84:
+#line 470 "compilador.y"
+    {
+            geraCodigo(NULL, "CMAG"); // Adiciona operação de cmag
+         ;}
+    break;
+
+  case 86:
+#line 476 "compilador.y"
+    {
+               if (val_ou_ref == REF)
+                  yyerror("ERRO: tentativa de EXPRESSAO em passagem por REFERENCIA\n");
+               else
+                  geraCodigo(NULL, "SOMA"); // Adiciona operação de soma
+            ;}
+    break;
+
+  case 87:
+#line 482 "compilador.y"
+    {
+               if (val_ou_ref == REF)
+                  yyerror("ERRO: tentativa de EXPRESSAO em passagem por REFERENCIA\n");
+               else
+                  geraCodigo(NULL, "SUBT"); // Adiciona operação de subt
+            ;}
+    break;
+
+  case 89:
+#line 491 "compilador.y"
+    {
+               geraCodigo(NULL, "MULT"); // Adiciona operação de mult
+            ;}
+    break;
+
+  case 90:
+#line 494 "compilador.y"
+    {
+               geraCodigo(NULL, "DIVI"); // Adiciona operação de divi
+            ;}
+    break;
+
+  case 92:
+#line 500 "compilador.y"
+    {
+    // Carrega variável
+    l_elem = busca(token, ts);
+    empilha(token, proc);
+   ;}
+    break;
+
+  case 93:
+#line 506 "compilador.y"
+    {
+      char buffer[50];
+      desempilha(buffer, proc);
+      l_elem = busca(buffer, ts);
+      if (l_elem == NULL) {
+         yyerror("ERRO: Variável não declarada");
+      } else {
+         if (val_ou_ref == REF) {
+               if (l_elem->categ == VS){
+                  sprintf(buffer, "CREN %d, %d", l_elem->nivel, l_elem->info.vs.desloc);
+                  geraCodigo(NULL, buffer);
+               }
+               else if (l_elem->categ == PF){
+                  sprintf(buffer, "CREN %d, %d", l_elem->nivel, l_elem->info.pf.desloc);
+                  geraCodigo(NULL, buffer);
+               }
+               else
+                  yyerror("ERRO: Tentativa de passagem de referencia de procedimento ou funcao");
+               
+         } 
+         else if (l_elem->categ == PF && l_elem->info.pf.passagem == REF) {
+               sprintf(buffer, "CRVI %d, %d", l_elem->nivel, l_elem->info.pf.desloc);
+               geraCodigo(NULL, buffer);
+         }        
+         else {
+               if (l_elem->categ == VS) {
+                  sprintf(buffer, "CRVL %d, %d", l_elem->nivel, l_elem->info.vs.desloc);
+                  geraCodigo(NULL, buffer);
+               }
+               else if (l_elem->categ == PF){
+                  sprintf(buffer, "CRVL %d, %d", l_elem->nivel, l_elem->info.pf.desloc);
+                  geraCodigo(NULL, buffer);
+               }
+         }
+      }
+   ;}
+    break;
+
+  case 94:
+#line 542 "compilador.y"
+    {
+    // Empilha constante
+    char buffer[50];
+    if (val_ou_ref == VLR)
+      sprintf(buffer, "CRCT %s", token);
+    else {
+      yyerror("ERRO: passagem de constante por REFERENCIA.\n");
+    }
+    geraCodigo(NULL, buffer);
+;}
+    break;
+
+  case 97:
+#line 557 "compilador.y"
+    {
+               char r_ini[4];
+               sprintf(r_ini, "R%02d", rot_id);
+               empilha(r_ini, rot);
+               rot_id += 1;
+               geraCodigo(r_ini,"NADA");
+            ;}
+    break;
+
+  case 98:
+#line 564 "compilador.y"
+    {
+               char r_fim[4];
+               sprintf(r_fim, "R%02d", rot_id);
+               empilha(r_fim, rot);
+               rot_id += 1;
+               char buffer[50];
+               strcpy(buffer, "DSVF ");
+               strcat(buffer,r_fim);
+               geraCodigo(NULL,buffer);
+            ;}
+    break;
+
+  case 99:
+#line 574 "compilador.y"
+    {
+               char r_ini[4];
+               char r_fim[4];
+
+               desempilha(r_fim,rot);
+               desempilha(r_ini,rot);
+
+               char buffer[50];
+               strcpy(buffer,"DSVS ");
+               strcat(buffer,r_ini);
+               geraCodigo(NULL,buffer);
+
+               geraCodigo(r_fim,"NADA");
+            ;}
+    break;
+
+  case 100:
+#line 590 "compilador.y"
+    {
+               char r_fim[4];
+               desempilha(r_fim,rot);
+               geraCodigo(r_fim,"NADA");
+            ;}
+    break;
+
+  case 103:
+#line 602 "compilador.y"
+    {
+               char r_else[4];
+               sprintf(r_else,"R%02d",rot_id);
+               empilha(r_else,rot);
+               rot_id += 1;
+               char buffer[50];
+               strcpy(buffer, "DSVF ");
+               strcat(buffer,r_else);
+               geraCodigo(NULL,buffer);
+               
+               char r_fim[4];
+               sprintf(r_fim, "R%02d", rot_id);
+               empilha(r_fim, rot);
+               rot_id += 1;
+            ;}
+    break;
+
+  case 104:
+#line 617 "compilador.y"
+    {
+               char r_fim[4];
+               desempilha(r_fim,rot);
+               char r_else[4];
+               desempilha(r_else,rot);
+               
+               empilha(r_fim,rot);
+               char buffer[50];
+               strcpy(buffer, "DSVS ");
+               strcat(buffer,r_fim);
+               geraCodigo(NULL,buffer);
+
+               geraCodigo(r_else,"NADA");
+            ;}
+    break;
+
+
+/* Line 1267 of yacc.c.  */
+#line 2212 "compilador.tab.c"
+      default: break;
+    }
+  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:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if ! YYERROR_VERBOSE
+      yyerror (YY_("syntax error"));
+#else
+      {
+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+	  {
+	    YYSIZE_T yyalloc = 2 * yysize;
+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
+	    if (yymsg != yymsgbuf)
+	      YYSTACK_FREE (yymsg);
+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+	    if (yymsg)
+	      yymsg_alloc = yyalloc;
+	    else
+	      {
+		yymsg = yymsgbuf;
+		yymsg_alloc = sizeof yymsgbuf;
+	      }
+	  }
+
+	if (0 < yysize && yysize <= yymsg_alloc)
+	  {
+	    (void) yysyntax_error (yymsg, yystate, yychar);
+	    yyerror (yymsg);
+	  }
+	else
+	  {
+	    yyerror (YY_("syntax error"));
+	    if (yysize != 0)
+	      goto yyexhaustedlab;
+	  }
+      }
+#endif
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead 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 look-ahead 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 which 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 (yyn != YYPACT_NINF)
+	{
+	  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);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* 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;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  /* Do not reclaim the symbols of the rule which 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
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
+}
+
+
+#line 634 "compilador.y"
+
+
+int main (int argc, char** argv) {
+   FILE* fp;
+   extern FILE* yyin;
+
+   if (argc<2 || argc>2) {
+         printf("usage compilador <arq>a %d\n", argc);
+         return(-1);
+      }
+
+   fp=fopen (argv[1], "r");
+   if (fp == NULL) {
+      printf("usage compilador <arq>b\n");
+      return(-1);
+   }
+
+
+/* -------------------------------------------------------------------
+ *  Inicia a Tabela de S�mbolos
+ * ------------------------------------------------------------------- */
+   ts = (ts_t *)malloc(sizeof(ts_t));
+   inicializa_ts(ts);
+   nivel_lexico = 0;
+   desloc = 0;
+
+   // Inicializa Rotulos
+   rot = (custom_stack_t *)malloc(sizeof(custom_stack_t));
+   inicializa_stack(rot);
+   rot_id = 0;
+
+   proc = (custom_stack_t *)malloc(sizeof(custom_stack_t));
+   inicializa_stack(proc);
+
+   yyin=fp;
+   yyparse();
+
+   return 0;
+}
+
diff --git a/ALTERADO/compilador.tab.h b/ALTERADO/compilador.tab.h
new file mode 100644
index 0000000..ec880d5
--- /dev/null
+++ b/ALTERADO/compilador.tab.h
@@ -0,0 +1,137 @@
+/* A Bison parser, made by GNU Bison 2.3.  */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   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 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     PROGRAM = 258,
+     ABRE_PARENTESES = 259,
+     FECHA_PARENTESES = 260,
+     VIRGULA = 261,
+     PONTO_E_VIRGULA = 262,
+     DOIS_PONTOS = 263,
+     PONTO = 264,
+     T_BEGIN = 265,
+     T_END = 266,
+     VAR = 267,
+     IDENT = 268,
+     ATRIBUICAO = 269,
+     LABEL = 270,
+     TYPE = 271,
+     ARRAY = 272,
+     PROCEDURE = 273,
+     FUNCTION = 274,
+     GOTO = 275,
+     IF = 276,
+     THEN = 277,
+     ELSE = 278,
+     WHILE = 279,
+     DO = 280,
+     OR = 281,
+     DIV = 282,
+     AND = 283,
+     NOT = 284,
+     IGUAL = 285,
+     DIFERENTE = 286,
+     MENOR_IGUAL = 287,
+     MAIOR_IGUAL = 288,
+     MENOR = 289,
+     MAIOR = 290,
+     MAIS = 291,
+     MENOS = 292,
+     ASTERISCO = 293,
+     NUMERO = 294,
+     READ = 295,
+     WRITE = 296,
+     LOWER_THAN_ELSE = 297
+   };
+#endif
+/* Tokens.  */
+#define PROGRAM 258
+#define ABRE_PARENTESES 259
+#define FECHA_PARENTESES 260
+#define VIRGULA 261
+#define PONTO_E_VIRGULA 262
+#define DOIS_PONTOS 263
+#define PONTO 264
+#define T_BEGIN 265
+#define T_END 266
+#define VAR 267
+#define IDENT 268
+#define ATRIBUICAO 269
+#define LABEL 270
+#define TYPE 271
+#define ARRAY 272
+#define PROCEDURE 273
+#define FUNCTION 274
+#define GOTO 275
+#define IF 276
+#define THEN 277
+#define ELSE 278
+#define WHILE 279
+#define DO 280
+#define OR 281
+#define DIV 282
+#define AND 283
+#define NOT 284
+#define IGUAL 285
+#define DIFERENTE 286
+#define MENOR_IGUAL 287
+#define MAIOR_IGUAL 288
+#define MENOR 289
+#define MAIOR 290
+#define MAIS 291
+#define MENOS 292
+#define ASTERISCO 293
+#define NUMERO 294
+#define READ 295
+#define WRITE 296
+#define LOWER_THAN_ELSE 297
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
diff --git a/ALTERADO/lex.yy.c b/ALTERADO/lex.yy.c
new file mode 100644
index 0000000..d3651db
--- /dev/null
+++ b/ALTERADO/lex.yy.c
@@ -0,0 +1,2197 @@
+
+#line 2 "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 <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. 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 <inttypes.h>
+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;
+typedef uint64_t flex_uint64_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 yy_size_t 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.
+	 */
+	yy_size_t 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 yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
+yy_size_t 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, yy_size_t 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 = (yy_size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+#define YY_NUM_RULES 43
+#define YY_END_OF_BUFFER 44
+/* 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[115] =
+    {   0,
+        0,    0,   44,   43,    2,    1,   15,   16,   40,   38,
+       13,   39,   14,   41,   12,   11,   36,   32,   37,   42,
+       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,    2,    0,   41,   10,   34,
+       33,   35,   42,   42,   42,   42,   42,   27,   42,   42,
+       42,   42,   23,   42,   42,   28,   42,   42,   42,   42,
+       42,   42,   42,    0,    0,   30,   42,   42,   29,   42,
+        7,   42,   42,   42,   31,   42,   42,   42,   42,    5,
+       42,   42,    3,   42,   42,   25,   42,   22,   42,   42,
+       42,    8,   24,   18,   42,   42,   19,    6,   42,   17,
+
+       42,   42,   26,    9,   42,   42,   42,   42,   42,    4,
+       21,   42,   20,    0
+    } ;
+
+static const YY_CHAR yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    1,    1,    1,    1,    1,    1,    4,
+        5,    6,    7,    8,    9,   10,    1,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   12,   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,    1,    1,   18,   19,   20,   21,
+
+       22,   23,   24,   25,   26,   17,   17,   27,   28,   29,
+       30,   31,   17,   32,   33,   34,   35,   36,   37,   17,
+       38,   17,    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,    1,    1,    1
+    } ;
+
+static const YY_CHAR yy_meta[39] =
+    {   0,
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        3,    1,    1,    1,    1,    1,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3
+    } ;
+
+static const flex_int16_t yy_base[117] =
+    {   0,
+        0,    0,  123,  124,  120,  124,  115,  124,  124,  124,
+      124,  124,  124,  109,  104,  124,   24,  124,  103,    0,
+       12,   95,   16,   16,   81,   85,   91,   95,   82,   79,
+       78,   87,   22,   90,   23,  105,  100,   94,  124,  124,
+      124,  124,    0,   83,   71,   78,   65,    0,   67,   78,
+       69,   63,    0,   77,   61,    0,   64,   75,   70,   60,
+       58,   63,   62,   81,   44,    0,   68,   59,    0,   62,
+        0,   63,   52,   59,    0,   32,   59,   50,   56,    0,
+       50,   42,   69,   36,   44,    0,   38,    0,   44,   48,
+       37,    0,    0,    0,   46,   45,    0,    0,   40,    0,
+
+       44,   46,    0,    0,   32,   24,   30,   28,   22,    0,
+        0,   31,    0,  124,   48,   60
+    } ;
+
+static const flex_int16_t yy_def[117] =
+    {   0,
+      114,    1,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  115,
+      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  115,  115,  115,  114,  116,  114,  114,  114,
+      114,  114,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  115,  116,  116,  115,  115,  115,  115,  115,
+      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  116,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+
+      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  115,    0,  114,  114
+    } ;
+
+static const flex_int16_t yy_nxt[163] =
+    {   0,
+        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+       14,   15,   16,   17,   18,   19,   20,   21,   22,   20,
+       23,   24,   25,   26,   20,   27,   28,   20,   29,   30,
+       31,   32,   20,   33,   20,   34,   35,   20,   40,   41,
+       44,   47,   49,   45,   50,   48,   59,   62,   83,   65,
+       43,   90,  113,  112,   63,   91,  111,  110,  109,   60,
+       64,  108,   64,  107,  106,  105,  104,  103,  102,  101,
+      100,   99,   98,   97,   65,   96,   95,   94,   93,   92,
+       89,   88,   87,   86,   85,   84,   65,   82,   81,   80,
+       79,   78,   77,   76,   75,   74,   73,   72,   71,   70,
+
+       69,   68,   67,   66,   38,   65,   36,   61,   58,   57,
+       56,   55,   54,   53,   52,   51,   46,   42,   39,   38,
+       37,   36,  114,    3,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114
+    } ;
+
+static const flex_int16_t yy_chk[163] =
+    {   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,    1,   17,   17,
+       21,   23,   24,   21,   24,   23,   33,   35,   65,   65,
+      115,   76,  112,  109,   35,   76,  108,  107,  106,   33,
+      116,  105,  116,  102,  101,   99,   96,   95,   91,   90,
+       89,   87,   85,   84,   83,   82,   81,   79,   78,   77,
+       74,   73,   72,   70,   68,   67,   64,   63,   62,   61,
+       60,   59,   58,   57,   55,   54,   52,   51,   50,   49,
+
+       47,   46,   45,   44,   38,   37,   36,   34,   32,   31,
+       30,   29,   28,   27,   26,   25,   22,   19,   15,   14,
+        7,    5,    3,  114,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114
+    } ;
+
+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 "compilador.l"
+/* -------------------------------------------------------------------
+ *            Arquivo: compilador.l
+ * -------------------------------------------------------------------
+ *              Autor: Bruno Muller Junior
+ *               Data: 08/2007
+ *      Atualizado em: [09/08/2020, 19h:01m]
+ *
+ * -------------------------------------------------------------------
+ *
+ * Tipos, protótipos e variáveis globais do compilador (via extern)
+ *
+ * ------------------------------------------------------------------- */
+#line 16 "compilador.l"
+
+
+#include<stdio.h>
+#include<string.h>
+
+#include "compilador.h"
+#include "compilador.tab.h"
+
+//#define IMPRIME(STR) {};
+#define IMPRIME(STR) printf("%s    # %s \n", STR, token);
+
+int nl = 1;
+
+#line 540 "lex.yy.c"
+#line 541 "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 <unistd.h>
+#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  );
+
+			yy_size_t 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 = '*'; \
+		yy_size_t 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 41 "compilador.l"
+
+
+#line 761 "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 >= 115 )
+					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] != 124 );
+
+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:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 43 "compilador.l"
+{nl++;}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 45 "compilador.l"
+
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 47 "compilador.l"
+
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 49 "compilador.l"
+{ simbolo  = simb_program;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("program ");
+          return PROGRAM;
+ }
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 55 "compilador.l"
+{ simbolo = simb_var;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("var  ");
+          return VAR;
+ }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 61 "compilador.l"
+{ simbolo = simb_begin;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("begin ");
+          return T_BEGIN;
+ }
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 67 "compilador.l"
+{ simbolo = simb_end;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("end  ");
+          return T_END;
+ }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 73 "compilador.l"
+{ simbolo = simb_read;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("read  ");
+          return READ;
+}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 79 "compilador.l"
+{ simbolo = simb_write;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("write  ");
+          return WRITE;
+}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 85 "compilador.l"
+{ simbolo = simb_atribuicao;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" atribuicao  ");
+          return ATRIBUICAO;
+ }
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 91 "compilador.l"
+{ simbolo = simb_ponto_e_virgula;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" pt_virgula  ");
+          return PONTO_E_VIRGULA;
+ }
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 97 "compilador.l"
+{ simbolo = simb_dois_pontos;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" dois pontos ");
+          return DOIS_PONTOS;
+ }
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 103 "compilador.l"
+{ simbolo = simb_virgula;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" virgula  ");
+          return VIRGULA;
+ }
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 110 "compilador.l"
+{ simbolo = simb_ponto;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" ponto  ");
+          return PONTO;
+    }
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 116 "compilador.l"
+{ simbolo = simb_abre_parenteses;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" abre_parenteses  ");
+          return ABRE_PARENTESES;
+    }
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 122 "compilador.l"
+{ simbolo = simb_fecha_parenteses;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" fecha_parenteses ");
+          return FECHA_PARENTESES;
+ }
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 128 "compilador.l"
+{ simbolo  = simb_label;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("label ");
+          return LABEL;
+ }
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 134 "compilador.l"
+{ simbolo  = simb_type;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("type ");
+          return TYPE;
+ }
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 140 "compilador.l"
+{ simbolo  = simb_array;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("array ");
+          return ARRAY;
+ }
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 146 "compilador.l"
+{ simbolo  = simb_procedure;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("procedure ");
+          return PROCEDURE;
+ }
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 152 "compilador.l"
+{ simbolo  = simb_function;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("function ");
+          return FUNCTION;
+ }
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 158 "compilador.l"
+{ simbolo  = simb_goto;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("goto ");
+          return GOTO;
+ }
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 164 "compilador.l"
+{ simbolo  = simb_if;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("if ");
+          return IF;
+ }
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 170 "compilador.l"
+{ simbolo  = simb_then;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" then ");
+          return THEN;
+ }
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 176 "compilador.l"
+{ simbolo  = simb_else;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" else ");
+          return ELSE;
+ }
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 182 "compilador.l"
+{ simbolo  = simb_while;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME("while ");
+          return WHILE;
+ }
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 188 "compilador.l"
+{ simbolo  = simb_do;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" do ");
+          return DO;
+ }
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 194 "compilador.l"
+{ simbolo  = simb_or;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" or ");
+          return OR;
+ }
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 200 "compilador.l"
+{ simbolo  = simb_div;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" div ");
+          return DIV;
+ }
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 206 "compilador.l"
+{ simbolo  = simb_and;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" and ");
+          return AND;
+ }
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 212 "compilador.l"
+{ simbolo  = simb_not;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" not ");
+          return NOT;
+ }
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 218 "compilador.l"
+{ simbolo = simb_igual;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" igual  ");
+          return IGUAL;
+    }
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 224 "compilador.l"
+{ simbolo = simb_diferente;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" diferente  ");
+          return DIFERENTE;
+    }
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 230 "compilador.l"
+{ simbolo = simb_menor_igual;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" menor_igual  ");
+          return MENOR_IGUAL;
+    }
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 236 "compilador.l"
+{ simbolo = simb_maior_igual;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" maior_igual  ");
+          return MAIOR_IGUAL;
+    }
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 242 "compilador.l"
+{ simbolo = simb_menor;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" menor  ");
+          return MENOR;
+    }
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 248 "compilador.l"
+{ simbolo = simb_maior;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" maior  ");
+          return MAIOR;
+    }
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 254 "compilador.l"
+{ simbolo = simb_mais;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" mais  ");
+          return MAIS;
+    }
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 260 "compilador.l"
+{ simbolo = simb_menos;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" menos  ");
+          return MENOS;
+    }
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 266 "compilador.l"
+{ simbolo = simb_asterisco;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" asterisco  ");
+          return ASTERISCO;
+    }
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 272 "compilador.l"
+{  simbolo = simb_numero;
+            strncpy (token, yytext,TAM_TOKEN);
+            IMPRIME(" numero ");
+            return NUMERO;
+    }
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 278 "compilador.l"
+{ simbolo = simb_identificador;
+          strncpy (token, yytext, TAM_TOKEN);
+          IMPRIME(" ident  ");
+          return IDENT;
+        }
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 284 "compilador.l"
+ECHO;
+	YY_BREAK
+#line 1190 "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
+		{
+			yy_size_t 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 )
+				{
+				yy_size_t 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. */
+		yy_size_t 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 >= 115 )
+				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 >= 115 )
+			yy_c = yy_meta[yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+	yy_is_jam = (yy_current_state == 114);
+
+		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. */
+		yy_size_t 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 */
+			yy_size_t offset = (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, yy_size_t  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	yy_size_t 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. */ \
+        yy_size_t 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.
+ * 
+ */
+yy_size_t 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 284 "compilador.l"
+
+
diff --git a/ALTERADO/stack/stack.o b/ALTERADO/stack/stack.o
new file mode 100644
index 0000000000000000000000000000000000000000..c24c7e8e435160fb879533b12b2971f9415cf5a4
GIT binary patch
literal 2056
zcmX^A>+L@t1_nk31_;5zz`(Er#8Uu?Ffd3mFfdqv_z*4z*}x1Dx&c)K<Fhj`Fn};r
znjt>EB(<Uhq83EP$A`E^gn(G6IE4wq2bl+AMzAt4$bf`c7#ctn49CYO7nc-e=A}ag
z(9MIHGYu+l1M(P@4WdA1gJ>9zk5A6eEl5l*i7(A7&&*4SkN0tb$$@F8M_`V)!NR}*
z60%@pV1OEpVx$oR1A_!KOc@yX85kJ(!N!0Tfy5)&7#IW@7#K3x85kBYFfed4Ffasw
zRWLAcFhDTKTpk7n23DvzDb#;whKmo_8GgQCclasK2&Fk0cK&x}n0SCW{@VY;3>W`a
zGp+pF%rJ35v;2>T+zdZoa6A0uU}X6Cf_=VJ1_OgRBLjno3<HA*15?8#1_p*HAoCV9
z$NvDaIanAbGW>P83}S=qV1U}e!07OEVRQTsCWeMdU^%dv4nJSAJN(pOg}CD-x5G~j
zMuwkYn$uw?2P=c11}DQ#kbQrvomT!oOoSW7=Sy)gLfi;(H>TUg85l%haxb7^!NKYP
zu@}|;LXiC+zk&S1$msAB?tXTMpCCVh{PF<AW?+~?$ek;i<9~p|5y_1ZF@zgWK*N`T
zfnfpz1H(j+`I?}xM&iTdK;aIOf62@+k%NI@0tX|*L{Rv_<Uw*Ux54ar!Oid!<W7kH
z89u%cpD(onExbVHp_>C%&+70Kr2pgp|KiAYfXqXVpMcDqj6{Xh;*!G)70ME;G7}Z@
zOBM1CFV0uU%*#y9Ow7rwN=!-A<6__ftF+=`(4{)yVyID2)ipFIR;b}(@GMEqMav}M
zVoZPml<iPtz~T%H3`-!QpsWUALCGUfdIf~Wkk5gZcc9F`051X{ia}%m6FArF`Y?gZ
z2_Fv#ZEFG*H(&ziYabm5ZTp20qW%q(e!&Qle*&Rx?=XTb@d1^KEDQ{`7oh4+Fha~f
z0-<dWK*jekGJrho11igz7#M6fK*iTEg3EcI6%g7sf{}rNmw`by07|<sGBEHkFzB{0
zK<Eqx1_nL`2HhA21_l9;Iw(H@Qns-<Kxt5TGBPl*f&31lXM)s0!w4$Iz{kYE04tY4
zi5|r7g~m)HNIeq+!!#&A6UzSz<rhKuub})cC?95CHHZ%?kU^M%fdN#t@G~+nz~T|)
zUJxJTPLO-#7#J8pd=MLi4WN8jyb3`41(E_|H#EKv8s83$4=TfvywAXp6R%fXQp6Bn
zTvC*in#T|y4`L-3RK_P~WHZDgGE97NNn&y~Lws(2aY<1kj8{;UnOBm=5T90*n#vHL
zo0yZ6pUe=Sl3JXaTL8+14Dm1q#2!5psD*mQ3^^sa1x7Hg5twTT;~Ijw1`G@Uk%)AN

literal 0
HcmV?d00001

diff --git a/ALTERADO/ts/ts.o b/ALTERADO/ts/ts.o
new file mode 100644
index 0000000000000000000000000000000000000000..bd69dcebf38579ca43f07d9c463a8aa80489343e
GIT binary patch
literal 11248
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
MWdvs#8Za;b00X}O-2eap

literal 0
HcmV?d00001

diff --git a/AvaliaTrabs/Exemplo7.02/pgma.pas b/AvaliaTrabs/Exemplo7.02/pgma.pas
index e6a65e7..bd2e422 100755
--- a/AvaliaTrabs/Exemplo7.02/pgma.pas
+++ b/AvaliaTrabs/Exemplo7.02/pgma.pas
@@ -6,7 +6,7 @@ var n, s, i :  integer;
       q:=i*i;
       if (i div 2) * 2 = i
       then
-         s:=s+q;
+         s:=s+q
       else
          s:=s-q;
    end;
diff --git a/AvaliaTrabs/Exemplo7.03/pgma.pas b/AvaliaTrabs/Exemplo7.03/pgma.pas
index 85d8c6b..f00244f 100755
--- a/AvaliaTrabs/Exemplo7.03/pgma.pas
+++ b/AvaliaTrabs/Exemplo7.03/pgma.pas
@@ -5,7 +5,7 @@ var z, t :  integer;
    begin
       t:=2*t;
       x:=2*t;
-      z:=x+1
+      z:=x+1;
    end;
 begin
    z:=3;
@@ -13,6 +13,6 @@ begin
    g(t); write (z,t);
    g(z); write (z,t);
    g(t+z); write (z,t);
-   g(7); write (z,t)
+   g(7); write (z,t);
 end.
    
\ No newline at end of file
diff --git a/AvaliaTrabs/Exemplo7.04/pgma.pas b/AvaliaTrabs/Exemplo7.04/pgma.pas
index 290d2dc..ff40573 100755
--- a/AvaliaTrabs/Exemplo7.04/pgma.pas
+++ b/AvaliaTrabs/Exemplo7.04/pgma.pas
@@ -4,7 +4,7 @@ var z, x: integer;
    var y : integer;
    begin
       y:=t*t; z:=z+x+y;
-      write(z)
+      write(z);
    end;
 
    procedure h (y : integer);
@@ -13,19 +13,19 @@ var z, x: integer;
       var t : integer;
       begin
          t:=z+x+y; g(t);
-         z:=t
+         z:=t;
       end;
    begin
       x:=y+1;
       f(x);
-      g(z+x)
+      g(z+x);
    end;
 begin
    z:=1;
    x:=3;
    h(x);
    g(x);
-   write(x,z)
+   write(x,z);
 end.
    
 
diff --git a/AvaliaTrabs/Exemplo7.05/pgma.pas b/AvaliaTrabs/Exemplo7.05/pgma.pas
index a0a60b1..9e4574f 100755
--- a/AvaliaTrabs/Exemplo7.05/pgma.pas
+++ b/AvaliaTrabs/Exemplo7.05/pgma.pas
@@ -5,16 +5,16 @@ var p, q : integer;
 begin    
    if n<2 then
       begin 
-         f:=n; k:=0
+         f:=n; k:=0;
       end
    else
       begin
          f:=f(n-1,p) + f(n-2,q);
-         k:=p+q+1
+         k:=p+q+1;
       end;
-   write (n, k)
+   write (n, k);
 end;
 begin
    n:=f(3,m);
-   write(n, m)
+   write(n, m);
 end.
diff --git a/AvaliaTrabs/Exemplo8.05/pgma.pas b/AvaliaTrabs/Exemplo8.05/pgma.pas
index c243468..09926bb 100755
--- a/AvaliaTrabs/Exemplo8.05/pgma.pas
+++ b/AvaliaTrabs/Exemplo8.05/pgma.pas
@@ -10,7 +10,7 @@ begin
       f3:=f1+f2;
       f1:=f2;
       f2:=f3;
-      k:=k+1
+      k:=k+1;
    end;
-   write(n, f1)
+   write(n, f1);
 end.
diff --git a/AvaliaTrabs/Exemplo8.06/pgma.pas b/AvaliaTrabs/Exemplo8.06/pgma.pas
index 58f7185..bd4ee10 100755
--- a/AvaliaTrabs/Exemplo8.06/pgma.pas
+++ b/AvaliaTrabs/Exemplo8.06/pgma.pas
@@ -7,10 +7,10 @@ var x, y :  integer;
       if z>1
          then p
       else y:=1;
-      y:=y*z
+      y:=y*z;
    end;
 begin
    read (x);
    p;
-   write (x,y)
+   write (x,y);
 end.
diff --git a/AvaliaTrabs/Exemplo8.07/pgma.pas b/AvaliaTrabs/Exemplo8.07/pgma.pas
index 353372f..cd2ece7 100755
--- a/AvaliaTrabs/Exemplo8.07/pgma.pas
+++ b/AvaliaTrabs/Exemplo8.07/pgma.pas
@@ -7,7 +7,7 @@ begin
    if z>1
       then p
    else y:=1;
-   y:=y*z
+   y:=y*z;
 end;
 
 procedure q;
@@ -19,11 +19,11 @@ begin
       if ( (s div 2)*2) = s
          then q
       else p;
-   y:=y*s
+   y:=y*s;
 end;
 
 begin
    read(x);
    q;
-   write(y)
+   write(y);
 end.
diff --git a/AvaliaTrabs/Exemplo8.08/pgma.pas b/AvaliaTrabs/Exemplo8.08/pgma.pas
index 20147b2..97d766c 100755
--- a/AvaliaTrabs/Exemplo8.08/pgma.pas
+++ b/AvaliaTrabs/Exemplo8.08/pgma.pas
@@ -9,17 +9,17 @@ var x, y :  integer;
          if s=1
             then  p
             else y:=1;
-         y:=y*s
+         y:=y*s;
       end;
    begin
       z:=x; x:=x-1;
       if z>1
          then p
          else y:=1;
-      y:=y*z
+      y:=y*z;
    end;
 begin
    read(x);
    p;
-   write(y)
+   write(y);
 end.
diff --git a/AvaliaTrabs/Exemplo8.09/pgma.pas b/AvaliaTrabs/Exemplo8.09/pgma.pas
index 887102c..9b3f390 100755
--- a/AvaliaTrabs/Exemplo8.09/pgma.pas
+++ b/AvaliaTrabs/Exemplo8.09/pgma.pas
@@ -7,10 +7,10 @@ var x, y :  integer;
          then p(t-1)
          else y:=1;
       z:=y;
-      y:=z*t
+      y:=z*t;
    end; 
 begin
    read(x);
    p(x);
-   write(y)
+   write(y);
 end.
diff --git a/AvaliaTrabs/Exemplo8.10/pgma.pas b/AvaliaTrabs/Exemplo8.10/pgma.pas
index 9bf3a63..be20887 100755
--- a/AvaliaTrabs/Exemplo8.10/pgma.pas
+++ b/AvaliaTrabs/Exemplo8.10/pgma.pas
@@ -10,13 +10,13 @@ begin
       h:=g;
       p(n-1,h);
       g:=h;
-      p(n-2, g)
+      p(n-2, g);
    end;
-   write(n,g)
+   write(n,g);
 end;
 begin
    k:=0;
-   p(3,k)
+   p(3,k);
 end.
    
       
diff --git a/AvaliaTrabs/ExemploErro1/pgma.pas b/AvaliaTrabs/ExemploErro1/pgma.pas
index 353874f..af541d0 100755
--- a/AvaliaTrabs/ExemploErro1/pgma.pas
+++ b/AvaliaTrabs/ExemploErro1/pgma.pas
@@ -4,5 +4,5 @@ begin
    read (n);
    read (k);
    n := n>k;
-   write (n)
+   write (n);
 end.
diff --git a/AvaliaTrabs/ExemploErro2/pgma.pas b/AvaliaTrabs/ExemploErro2/pgma.pas
index 3430f06..221394e 100755
--- a/AvaliaTrabs/ExemploErro2/pgma.pas
+++ b/AvaliaTrabs/ExemploErro2/pgma.pas
@@ -4,5 +4,5 @@ begin
    read (n);
    read (k);
    if (n+1) then n:=1;
-   write (n)
+   write (n);
 end.
diff --git a/AvaliaTrabs/MEPA b/AvaliaTrabs/MEPA
index 83d8e77..886e7b6 100644
--- a/AvaliaTrabs/MEPA
+++ b/AvaliaTrabs/MEPA
@@ -1,11 +1,46 @@
      INPP
-     AMEM 3
+     AMEM 1
      DSVS R00
 R01: ENPR 1 
      AMEM 1
      DSVS R02
 R02: NADA 
-     CRVL 0, 2
-     CRVL 0, 2
-     MULT
+     CRVL 1, -5
+     CRCT 2
+     CMME
+     DSVF R03
+     CRVI 1, -4
+     CRVL 1, -5
+     SOMA
+     ARMI 1, -4
+     DSVS R04
+R03: NADA 
+     CRVI 1, -4
      ARMZ 1, 0
+     CRVL 1, -5
+     CRCT 1
+     SUBT
+     CREN 1, 0
+     CHPR R01, 1
+     CRVL 1, 0
+     ARMI 1, -4
+     CRVL 1, -5
+     CRCT 2
+     SUBT
+     CREN 1, -4
+     CHPR R01, 1
+R04: NADA 
+     CRVL 1, -5
+     IMPR
+     CRVI 1, -4
+     IMPR
+     DMEM 1
+     RTPR 1, 2
+R00: NADA 
+     CRCT 0
+     ARMZ 0, 0
+     CRCT 3
+     CREN 0, 0
+     CHPR R01, 0
+     DMEM 1
+     PARA
diff --git a/AvaliaTrabs/compilador b/AvaliaTrabs/compilador
index 9b92e31a6a75801f4dfb38b1536c6d239686e8f4..418d2e5150ad0514bff0d362109afc3681e4d3a3 100755
GIT binary patch
literal 88872
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
LJBYaKX<+~W065td

literal 54640
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
E05H4QyZ`_I

diff --git a/AvaliaTrabs/pgma.pas b/AvaliaTrabs/pgma.pas
index 3430f06..221394e 100755
--- a/AvaliaTrabs/pgma.pas
+++ b/AvaliaTrabs/pgma.pas
@@ -4,5 +4,5 @@ begin
    read (n);
    read (k);
    if (n+1) then n:=1;
-   write (n)
+   write (n);
 end.
diff --git a/AvaliaTrabs/res b/AvaliaTrabs/res
index e69de29..0d287c1 100644
--- a/AvaliaTrabs/res
+++ b/AvaliaTrabs/res
@@ -0,0 +1,69 @@
+program     # program 
+ ident      # exemploErro2 
+ abre_parenteses      # ( 
+ ident      # input 
+ virgula      # , 
+ ident      # output 
+ fecha_parenteses     # ) 
+ pt_virgula      # ; 
+var      # var 
+ ident      # n 
+ virgula      # , 
+ ident      # k 
+ dois pontos     # : 
+ ident      # integer 
+
+Tabela de Símbolos:
+----------------------------------------------------------------------------------
+| Ident      | Categ    | Nivel    | Tipo       | Desloc     | Detalhes             |
+----------------------------------------------------------------------------------
+| k          | VS       | 0        | Inteiro    | 1          | -                    |
+| n          | VS       | 0        | Inteiro    | 0          | -                    |
+----------------------------------------------------------------------------------
+ pt_virgula      # ; 
+begin     # begin 
+read      # read 
+ abre_parenteses      # ( 
+ ident      # n 
+ fecha_parenteses     # ) 
+ pt_virgula      # ; 
+read      # read 
+ abre_parenteses      # ( 
+ ident      # k 
+ fecha_parenteses     # ) 
+ pt_virgula      # ; 
+if     # if 
+ abre_parenteses      # ( 
+ ident      # n 
+ mais      # + 
+
+Tabela de Símbolos:
+----------------------------------------------------------------------------------
+| Ident      | Categ    | Nivel    | Tipo       | Desloc     | Detalhes             |
+----------------------------------------------------------------------------------
+| k          | VS       | 0        | Inteiro    | 1          | -                    |
+| n          | VS       | 0        | Inteiro    | 0          | -                    |
+----------------------------------------------------------------------------------
+ numero     # 1 
+ fecha_parenteses     # ) 
+ then     # then 
+ ident      # n 
+ atribuicao      # := 
+ numero     # 1 
+ pt_virgula      # ; 
+write      # write 
+ abre_parenteses      # ( 
+ ident      # n 
+ fecha_parenteses     # ) 
+
+Tabela de Símbolos:
+----------------------------------------------------------------------------------
+| Ident      | Categ    | Nivel    | Tipo       | Desloc     | Detalhes             |
+----------------------------------------------------------------------------------
+| k          | VS       | 0        | Inteiro    | 1          | -                    |
+| n          | VS       | 0        | Inteiro    | 0          | -                    |
+----------------------------------------------------------------------------------
+ pt_virgula      # ; 
+end      # end 
+Tabela de Símbolos está vazia ou não inicializada.
+ ponto      # . 
-- 
GitLab