#define yyexca c_exca
void yyerror ();
+static int parse_number ();
/* #define YYDEBUG 1 */
struct type *builtin_type_float;
struct type *builtin_type_double;
-struct type **(c_builtin_types[]) =
+struct type ** const (c_builtin_types[]) =
{
&builtin_type_int,
&builtin_type_long,
/* FIXME: Eventually do a separate defintion for C++. */
-struct language_defn c_language_defn = {
+const struct language_defn c_language_defn = {
"c", /* Language name */
language_c,
c_builtin_types,
#define yyexca m2_exca
void yyerror ();
+static int yylex ();
/* The sign of the number being parsed. */
int number_sign = 1;
yylval.ulval = n;
return UINT;
}
- else if((unsigned_p && (n<0)))
+ else if((unsigned_p && (n<0))) {
range_error("Overflow on numeric constant -- number too large.");
- else
- {
- yylval.lval = n;
- return INT;
+ /* But, this can return if range_check == range_warn. */
}
+ yylval.lval = n;
+ return INT;
}
struct type *builtin_type_m2_real;
struct type *builtin_type_m2_bool;
-struct type **(m2_builtin_types[]) =
+struct type ** const (m2_builtin_types[]) =
{
&builtin_type_m2_char,
&builtin_type_m2_int,
0
};
-struct language_defn m2_language_defn = {
+const struct language_defn m2_language_defn = {
"modula-2",
language_m2,
- &m2_builtin_types[0],
+ m2_builtin_types,
range_check_on,
type_check_on,
m2_parse, /* parser */