summaryrefslogtreecommitdiff
path: root/gdb/ada-lex.l
diff options
context:
space:
mode:
authorPaul N. Hilfinger <hilfinger@adacore.com>2008-08-19 10:10:38 +0000
committerPaul N. Hilfinger <hilfinger@adacore.com>2008-08-19 10:10:38 +0000
commit3d77cf61170a238859d26cafefaf9215e5a4e8d5 (patch)
treeb6fb605992eb39cf74077e5ce62b559aa5ec1e3e /gdb/ada-lex.l
parent7247861f2263948f1c8d6ee5d5288445f00029af (diff)
downloadgdb-3d77cf61170a238859d26cafefaf9215e5a4e8d5.tar.gz
* ada-lang.c (discrete_type_high_bound,discrete_type_low_bound): Change
API to return LONGEST values rather than struct values. (ada_evaluate_subexp): Change to use new API of discrete_type_low_bound and discrete_type_high_bound. (to_fixed_range_type): Create a range type in cases where argument is base type and its limits are representable as ints. (ada_is_modular_type): Correct so that base type must be integral. * ada-lex.l (TRUEKEYWORD,FALSEKEYWORD): Make 'true' and 'false' keywords when they appear alone, since we are phasing out direct representation of these identifiers in ebugging data. * ada-exp.y: Define 'true' and 'false' as primaries. (type_boolean): New function. (type_int,type_long,type_long_long,type_floattype_double) (type_long_double): Remove uses of current_gdbarch for consistency with type_boolean. (write_int): Change comment to indicate that it might write boolean constant as well. * ada-typeprint.c (ada_print_type): Print '(false, true)' for boolean type, since will no longer be represented as enumerated type in debugging data. * ada-valprint.c (print_optional_low_bound): Handle boolean case as well.
Diffstat (limited to 'gdb/ada-lex.l')
-rw-r--r--gdb/ada-lex.l10
1 files changed, 10 insertions, 0 deletions
diff --git a/gdb/ada-lex.l b/gdb/ada-lex.l
index cd6de8cadcf..e4713a23d22 100644
--- a/gdb/ada-lex.l
+++ b/gdb/ada-lex.l
@@ -178,6 +178,16 @@ rem { return REM; }
then { return THEN; }
xor { return XOR; }
+ /* BOOLEAN "KEYWORDS" */
+
+ /* True and False are not keywords in Ada, but rather enumeration constants.
+ However, the boolean type is no longer represented as an enum, so True
+ and False are no longer defined in symbol tables. We compromise by
+ making them keywords (when bare). */
+
+true { return TRUEKEYWORD; }
+false { return FALSEKEYWORD; }
+
/* ATTRIBUTES */
{TICK}[a-zA-Z][a-zA-Z]+ { return processAttribute (yytext+1); }