--  Warning: This file is automatically generated by AFLEX.
--           It is useless to modify it. Change the ".Y" & ".L" files instead.
--  Template: templates/spec-reentrant-dfa.ads
%if private
private package ${NAME}_DFA is
%else
package ${NAME}_DFA is
%end

%yydfa
   --  ----------------------------------------------------------------------------
   --  Buffer size is configured with:
   --  %option bufsize=${YYBUFSIZE}

   YY_READ_BUF_SIZE : constant Integer := ${YYBUFSIZE};
   --  ----------------------------------------------------------------------------

   YY_BUF_SIZE : constant Integer := YY_READ_BUF_SIZE * 2; --  size of input buffer

   subtype Index is Natural range 0 .. YY_BUF_SIZE;
   type unbounded_character_array is array (Integer range <>) of Character;
   subtype ch_buf_type is unbounded_character_array (0 .. YY_BUF_SIZE + 1);

   subtype yy_state_type is Integer;

   type Context_Type is limited record
%if debug
      aflex_debug       : Boolean := True;
%else
      aflex_debug       : Boolean := False;
%end
%if yylineno
      yylineno          : ${YYLINENOTYPE} := 0;
      yylinecol         : Natural := 0;
      yy_last_yylineno  : ${YYLINENOTYPE} := 0;
      yy_last_yylinecol : Natural := 0;
%end
      yytext_ptr        : Integer; --  points to start of yytext in buffer

      --  yy_ch_buf has to be 2 characters longer than YY_BUF_SIZE because we need
      --  to put in 2 end-of-buffer characters (this is explained where it is
      --  done) at the end of yy_ch_buf

      yy_ch_buf    : ch_buf_type;
      yy_cp, yy_bp : Integer;

      --  yy_hold_char holds the character lost when yytext is formed
      yy_hold_char : Character;
      yy_c_buf_p   : Integer;   --  points to current character in buffer

      --  These variables are needed between calls to YYLex.
      yy_init                 : Boolean := True; --  do we need to initialize YYLex?
      yy_start                : Integer := 0; --  current start state number
      yy_last_accepting_state : yy_state_type;
      yy_last_accepting_cpos  : Integer;

   end record;

   function YYText (Context : in Context_Type) return String;
   function YYLength (Context : in Context_Type) return Integer;
   procedure YY_DO_BEFORE_ACTION (Context : in out Context_Type);

end ${NAME}_DFA;
