/* FLEX lexer for Ada expressions, for GDB.
- Copyright (C) 1994-2017 Free Software Foundation, Inc.
+ Copyright (C) 1994-2019 Free Software Foundation, Inc.
This file is part of GDB.
%{
-#include "common/diagnostics.h"
+#include "diagnostics.h"
/* Some old versions of flex generate code that uses the "register" keyword,
which clang warns about. This was observed for example with flex 2.5.35,
#undef YY_INPUT
#define YY_INPUT(BUF, RESULT, MAX_SIZE) \
- if ( *lexptr == '\000' ) \
+ if ( *pstate->lexptr == '\000' ) \
(RESULT) = YY_NULL; \
else \
{ \
- *(BUF) = *lexptr; \
+ *(BUF) = *pstate->lexptr; \
(RESULT) = 1; \
- lexptr += 1; \
+ pstate->lexptr += 1; \
}
static int find_dot_all (const char *);
+/* Depth of parentheses. */
+static int paren_depth;
+
%}
%option case-insensitive interactive nodefault
[-&*+./:<>=|;\[\]] { return yytext[0]; }
-"," { if (paren_depth == 0 && comma_terminates)
+"," { if (paren_depth == 0 && pstate->comma_terminates)
{
rewind_to_char (',');
return 0;
"$"({LETTER}|{DIG}|"$")* {
yylval.sval.ptr = yytext;
yylval.sval.length = yyleng;
- return SPECIAL_VARIABLE;
+ return DOLLAR_VARIABLE;
}
/* CATCH-ALL ERROR CASE */
lexer_init (FILE *inp)
{
BEGIN INITIAL;
+ paren_depth = 0;
yyrestart (inp);
}
exp -= 1;
}
- if ((result >> (gdbarch_int_bit (parse_gdbarch (par_state))-1)) == 0)
+ if ((result >> (gdbarch_int_bit (par_state->gdbarch ())-1)) == 0)
yylval.typed_val.type = type_int (par_state);
- else if ((result >> (gdbarch_long_bit (parse_gdbarch (par_state))-1)) == 0)
+ else if ((result >> (gdbarch_long_bit (par_state->gdbarch ())-1)) == 0)
yylval.typed_val.type = type_long (par_state);
- else if (((result >> (gdbarch_long_bit (parse_gdbarch (par_state))-1)) >> 1) == 0)
+ else if (((result >> (gdbarch_long_bit (par_state->gdbarch ())-1)) >> 1) == 0)
{
/* We have a number representable as an unsigned integer quantity.
For consistency with the C treatment, we will treat it as an
assignment does the trick (no, it doesn't; read the reference manual).
*/
yylval.typed_val.type
- = builtin_type (parse_gdbarch (par_state))->builtin_unsigned_long;
+ = builtin_type (par_state->gdbarch ())->builtin_unsigned_long;
if (result & LONGEST_SIGN)
yylval.typed_val.val =
(LONGEST) (result & ~LONGEST_SIGN)
static void
rewind_to_char (int ch)
{
- lexptr -= yyleng;
- while (toupper (*lexptr) != toupper (ch))
- lexptr -= 1;
+ pstate->lexptr -= yyleng;
+ while (toupper (*pstate->lexptr) != toupper (ch))
+ pstate->lexptr -= 1;
yyrestart (NULL);
}