Commit 5403eb3a by Craig Burley Committed by Dave Love

(ffeexpr_token_number_): Call ffeexpr_make_float_const_ to make an integer.

(ffeexpr_token_number_): Call
ffeexpr_make_float_const_ to make an integer.
(ffeexpr_make_float_const_): Handle making an integer.

From-SVN: r19837
parent 270fc4e8
...@@ -45,6 +45,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -45,6 +45,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "src.h" #include "src.h"
#include "st.h" #include "st.h"
#include "symbol.h" #include "symbol.h"
#include "str.h"
#include "target.h" #include "target.h"
#include "where.h" #include "where.h"
...@@ -55,26 +56,6 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -55,26 +56,6 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
typedef enum typedef enum
{ {
FFEEXPR_dotdotNONE_,
FFEEXPR_dotdotTRUE_,
FFEEXPR_dotdotFALSE_,
FFEEXPR_dotdotNOT_,
FFEEXPR_dotdotAND_,
FFEEXPR_dotdotOR_,
FFEEXPR_dotdotXOR_,
FFEEXPR_dotdotEQV_,
FFEEXPR_dotdotNEQV_,
FFEEXPR_dotdotLT_,
FFEEXPR_dotdotLE_,
FFEEXPR_dotdotEQ_,
FFEEXPR_dotdotNE_,
FFEEXPR_dotdotGT_,
FFEEXPR_dotdotGE_,
FFEEXPR_dotdot
} ffeexprDotdot_;
typedef enum
{
FFEEXPR_exprtypeUNKNOWN_, FFEEXPR_exprtypeUNKNOWN_,
FFEEXPR_exprtypeOPERAND_, FFEEXPR_exprtypeOPERAND_,
FFEEXPR_exprtypeUNARY_, FFEEXPR_exprtypeUNARY_,
...@@ -242,7 +223,7 @@ struct _ffeexpr_find_ ...@@ -242,7 +223,7 @@ struct _ffeexpr_find_
static ffeexprStack_ ffeexpr_stack_; /* Expression stack for semantic. */ static ffeexprStack_ ffeexpr_stack_; /* Expression stack for semantic. */
static ffelexToken ffeexpr_tokens_[10]; /* Scratchpad tokens for syntactic. */ static ffelexToken ffeexpr_tokens_[10]; /* Scratchpad tokens for syntactic. */
static ffeexprDotdot_ ffeexpr_current_dotdot_; /* Current .FOO. keyword. */ static ffestrOther ffeexpr_current_dotdot_; /* Current .FOO. keyword. */
static long ffeexpr_hollerith_count_; /* ffeexpr_token_number_ and caller. */ static long ffeexpr_hollerith_count_; /* ffeexpr_token_number_ and caller. */
static int ffeexpr_level_; /* Level of DATA implied-DO construct. */ static int ffeexpr_level_; /* Level of DATA implied-DO construct. */
static bool ffeexpr_is_substr_ok_; /* If OPEN_PAREN as binary "op" ok. */ static bool ffeexpr_is_substr_ok_; /* If OPEN_PAREN as binary "op" ok. */
...@@ -286,7 +267,6 @@ static void ffeexpr_check_impdo_ (ffebld list, ffelexToken list_t, ...@@ -286,7 +267,6 @@ static void ffeexpr_check_impdo_ (ffebld list, ffelexToken list_t,
static void ffeexpr_update_impdo_ (ffebld expr, ffebld dovar); static void ffeexpr_update_impdo_ (ffebld expr, ffebld dovar);
static void ffeexpr_update_impdo_sym_ (ffebld expr, ffesymbol dovar); static void ffeexpr_update_impdo_sym_ (ffebld expr, ffesymbol dovar);
static ffeexprContext ffeexpr_context_outer_ (ffeexprStack_ s); static ffeexprContext ffeexpr_context_outer_ (ffeexprStack_ s);
static ffeexprDotdot_ ffeexpr_dotdot_ (ffelexToken t);
static ffeexprExpr_ ffeexpr_expr_new_ (void); static ffeexprExpr_ ffeexpr_expr_new_ (void);
static void ffeexpr_fulfill_call_ (ffebld *expr, ffelexToken t); static void ffeexpr_fulfill_call_ (ffebld *expr, ffelexToken t);
static bool ffeexpr_isdigits_ (char *p); static bool ffeexpr_isdigits_ (char *p);
...@@ -8530,124 +8510,6 @@ ffeexpr_context_outer_ (ffeexprStack_ s) ...@@ -8530,124 +8510,6 @@ ffeexpr_context_outer_ (ffeexprStack_ s)
} }
} }
/* ffeexpr_dotdot_ -- Look up name in list of .FOO. possibilities
ffeexprDotdot_ d;
ffelexToken t;
d = ffeexpr_dotdot_(t);
Returns the identifier for the name, or the NONE identifier. */
static ffeexprDotdot_
ffeexpr_dotdot_ (ffelexToken t)
{
char *p;
switch (ffelex_token_length (t))
{
case 2:
switch (*(p = ffelex_token_text (t)))
{
case FFESRC_CASE_MATCH_INIT ('E', 'e', match_2e, no_match_2):
if (ffesrc_char_match_noninit (*++p, 'Q', 'q'))
return FFEEXPR_dotdotEQ_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('G', 'g', match_2g, no_match_2):
if (ffesrc_char_match_noninit (*++p, 'E', 'e'))
return FFEEXPR_dotdotGE_;
if (ffesrc_char_match_noninit (*p, 'T', 't'))
return FFEEXPR_dotdotGT_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('L', 'l', match_2l, no_match_2):
if (ffesrc_char_match_noninit (*++p, 'E', 'e'))
return FFEEXPR_dotdotLE_;
if (ffesrc_char_match_noninit (*p, 'T', 't'))
return FFEEXPR_dotdotLT_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('N', 'n', match_2n, no_match_2):
if (ffesrc_char_match_noninit (*++p, 'E', 'e'))
return FFEEXPR_dotdotNE_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('O', 'o', match_2o, no_match_2):
if (ffesrc_char_match_noninit (*++p, 'R', 'r'))
return FFEEXPR_dotdotOR_;
return FFEEXPR_dotdotNONE_;
default:
no_match_2: /* :::::::::::::::::::: */
return FFEEXPR_dotdotNONE_;
}
case 3:
switch (*(p = ffelex_token_text (t)))
{
case FFESRC_CASE_MATCH_INIT ('A', 'a', match_3a, no_match_3):
if ((ffesrc_char_match_noninit (*++p, 'N', 'n'))
&& (ffesrc_char_match_noninit (*++p, 'D', 'd')))
return FFEEXPR_dotdotAND_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('E', 'e', match_3e, no_match_3):
if ((ffesrc_char_match_noninit (*++p, 'Q', 'q'))
&& (ffesrc_char_match_noninit (*++p, 'V', 'v')))
return FFEEXPR_dotdotEQV_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('N', 'n', match_3n, no_match_3):
if ((ffesrc_char_match_noninit (*++p, 'O', 'o'))
&& (ffesrc_char_match_noninit (*++p, 'T', 't')))
return FFEEXPR_dotdotNOT_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('X', 'x', match_3x, no_match_3):
if ((ffesrc_char_match_noninit (*++p, 'O', 'o'))
&& (ffesrc_char_match_noninit (*++p, 'R', 'r')))
return FFEEXPR_dotdotXOR_;
return FFEEXPR_dotdotNONE_;
default:
no_match_3: /* :::::::::::::::::::: */
return FFEEXPR_dotdotNONE_;
}
case 4:
switch (*(p = ffelex_token_text (t)))
{
case FFESRC_CASE_MATCH_INIT ('N', 'n', match_4n, no_match_4):
if ((ffesrc_char_match_noninit (*++p, 'E', 'e'))
&& (ffesrc_char_match_noninit (*++p, 'Q', 'q'))
&& (ffesrc_char_match_noninit (*++p, 'V', 'v')))
return FFEEXPR_dotdotNEQV_;
return FFEEXPR_dotdotNONE_;
case FFESRC_CASE_MATCH_INIT ('T', 't', match_4t, no_match_4):
if ((ffesrc_char_match_noninit (*++p, 'R', 'r'))
&& (ffesrc_char_match_noninit (*++p, 'U', 'u'))
&& (ffesrc_char_match_noninit (*++p, 'E', 'e')))
return FFEEXPR_dotdotTRUE_;
return FFEEXPR_dotdotNONE_;
default:
no_match_4: /* :::::::::::::::::::: */
return FFEEXPR_dotdotNONE_;
}
case 5:
if (ffesrc_strcmp_2c (ffe_case_match (), ffelex_token_text (t), "FALSE",
"false", "False")
== 0)
return FFEEXPR_dotdotFALSE_;
return FFEEXPR_dotdotNONE_;
default:
return FFEEXPR_dotdotNONE_;
}
}
/* ffeexpr_percent_ -- Look up name in list of %FOO possibilities /* ffeexpr_percent_ -- Look up name in list of %FOO possibilities
ffeexprPercent_ p; ffeexprPercent_ p;
...@@ -11674,15 +11536,15 @@ ffeexpr_nil_period_ (ffelexToken t) ...@@ -11674,15 +11536,15 @@ ffeexpr_nil_period_ (ffelexToken t)
{ {
case FFELEX_typeNAME: case FFELEX_typeNAME:
case FFELEX_typeNAMES: case FFELEX_typeNAMES:
ffeexpr_current_dotdot_ = ffeexpr_dotdot_ (t); ffeexpr_current_dotdot_ = ffestr_other (t);
switch (ffeexpr_current_dotdot_) switch (ffeexpr_current_dotdot_)
{ {
case FFEEXPR_dotdotNONE_: case FFESTR_otherNone:
return (ffelexHandler) ffeexpr_nil_rhs_ (t); return (ffelexHandler) ffeexpr_nil_rhs_ (t);
case FFEEXPR_dotdotTRUE_: case FFESTR_otherTRUE:
case FFEEXPR_dotdotFALSE_: case FFESTR_otherFALSE:
case FFEEXPR_dotdotNOT_: case FFESTR_otherNOT:
return (ffelexHandler) ffeexpr_nil_end_period_; return (ffelexHandler) ffeexpr_nil_end_period_;
default: default:
...@@ -11703,13 +11565,13 @@ ffeexpr_nil_end_period_ (ffelexToken t) ...@@ -11703,13 +11565,13 @@ ffeexpr_nil_end_period_ (ffelexToken t)
{ {
switch (ffeexpr_current_dotdot_) switch (ffeexpr_current_dotdot_)
{ {
case FFEEXPR_dotdotNOT_: case FFESTR_otherNOT:
if (ffelex_token_type (t) != FFELEX_typePERIOD) if (ffelex_token_type (t) != FFELEX_typePERIOD)
return (ffelexHandler) ffeexpr_nil_rhs_ (t); return (ffelexHandler) ffeexpr_nil_rhs_ (t);
return (ffelexHandler) ffeexpr_nil_rhs_; return (ffelexHandler) ffeexpr_nil_rhs_;
case FFEEXPR_dotdotTRUE_: case FFESTR_otherTRUE:
case FFEEXPR_dotdotFALSE_: case FFESTR_otherFALSE:
if (ffelex_token_type (t) != FFELEX_typePERIOD) if (ffelex_token_type (t) != FFELEX_typePERIOD)
return (ffelexHandler) ffeexpr_nil_binary_ (t); return (ffelexHandler) ffeexpr_nil_binary_ (t);
return (ffelexHandler) ffeexpr_nil_binary_; return (ffelexHandler) ffeexpr_nil_binary_;
...@@ -11979,12 +11841,12 @@ ffeexpr_nil_binary_period_ (ffelexToken t) ...@@ -11979,12 +11841,12 @@ ffeexpr_nil_binary_period_ (ffelexToken t)
{ {
case FFELEX_typeNAME: case FFELEX_typeNAME:
case FFELEX_typeNAMES: case FFELEX_typeNAMES:
ffeexpr_current_dotdot_ = ffeexpr_dotdot_ (t); ffeexpr_current_dotdot_ = ffestr_other (t);
switch (ffeexpr_current_dotdot_) switch (ffeexpr_current_dotdot_)
{ {
case FFEEXPR_dotdotTRUE_: case FFESTR_otherTRUE:
case FFEEXPR_dotdotFALSE_: case FFESTR_otherFALSE:
case FFEEXPR_dotdotNOT_: case FFESTR_otherNOT:
return (ffelexHandler) ffeexpr_nil_binary_sw_per_; return (ffelexHandler) ffeexpr_nil_binary_sw_per_;
default: default:
...@@ -13559,10 +13421,10 @@ ffeexpr_token_period_ (ffelexToken t) ...@@ -13559,10 +13421,10 @@ ffeexpr_token_period_ (ffelexToken t)
{ {
case FFELEX_typeNAME: case FFELEX_typeNAME:
case FFELEX_typeNAMES: case FFELEX_typeNAMES:
ffeexpr_current_dotdot_ = ffeexpr_dotdot_ (t); ffeexpr_current_dotdot_ = ffestr_other (t);
switch (ffeexpr_current_dotdot_) switch (ffeexpr_current_dotdot_)
{ {
case FFEEXPR_dotdotNONE_: case FFESTR_otherNone:
if (ffest_ffebad_start (FFEBAD_IGNORING_PERIOD)) if (ffest_ffebad_start (FFEBAD_IGNORING_PERIOD))
{ {
ffebad_here (0, ffelex_token_where_line (ffeexpr_tokens_[0]), ffebad_here (0, ffelex_token_where_line (ffeexpr_tokens_[0]),
...@@ -13572,9 +13434,9 @@ ffeexpr_token_period_ (ffelexToken t) ...@@ -13572,9 +13434,9 @@ ffeexpr_token_period_ (ffelexToken t)
ffelex_token_kill (ffeexpr_tokens_[0]); ffelex_token_kill (ffeexpr_tokens_[0]);
return (ffelexHandler) ffeexpr_token_rhs_ (t); return (ffelexHandler) ffeexpr_token_rhs_ (t);
case FFEEXPR_dotdotTRUE_: case FFESTR_otherTRUE:
case FFEEXPR_dotdotFALSE_: case FFESTR_otherFALSE:
case FFEEXPR_dotdotNOT_: case FFESTR_otherNOT:
ffeexpr_tokens_[1] = ffelex_token_use (t); ffeexpr_tokens_[1] = ffelex_token_use (t);
return (ffelexHandler) ffeexpr_token_end_period_; return (ffelexHandler) ffeexpr_token_end_period_;
...@@ -13641,7 +13503,7 @@ ffeexpr_token_end_period_ (ffelexToken t) ...@@ -13641,7 +13503,7 @@ ffeexpr_token_end_period_ (ffelexToken t)
switch (ffeexpr_current_dotdot_) switch (ffeexpr_current_dotdot_)
{ {
case FFEEXPR_dotdotNOT_: case FFESTR_otherNOT:
e->type = FFEEXPR_exprtypeUNARY_; e->type = FFEEXPR_exprtypeUNARY_;
e->u.operator.op = FFEEXPR_operatorNOT_; e->u.operator.op = FFEEXPR_operatorNOT_;
e->u.operator.prec = FFEEXPR_operatorprecedenceNOT_; e->u.operator.prec = FFEEXPR_operatorprecedenceNOT_;
...@@ -13651,7 +13513,7 @@ ffeexpr_token_end_period_ (ffelexToken t) ...@@ -13651,7 +13513,7 @@ ffeexpr_token_end_period_ (ffelexToken t)
return (ffelexHandler) ffeexpr_token_rhs_ (t); return (ffelexHandler) ffeexpr_token_rhs_ (t);
return (ffelexHandler) ffeexpr_token_rhs_; return (ffelexHandler) ffeexpr_token_rhs_;
case FFEEXPR_dotdotTRUE_: case FFESTR_otherTRUE:
e->type = FFEEXPR_exprtypeOPERAND_; e->type = FFEEXPR_exprtypeOPERAND_;
e->u.operand e->u.operand
= ffebld_new_conter (ffebld_constant_new_logicaldefault (TRUE)); = ffebld_new_conter (ffebld_constant_new_logicaldefault (TRUE));
...@@ -13663,7 +13525,7 @@ ffeexpr_token_end_period_ (ffelexToken t) ...@@ -13663,7 +13525,7 @@ ffeexpr_token_end_period_ (ffelexToken t)
return (ffelexHandler) ffeexpr_token_binary_ (t); return (ffelexHandler) ffeexpr_token_binary_ (t);
return (ffelexHandler) ffeexpr_token_binary_; return (ffelexHandler) ffeexpr_token_binary_;
case FFEEXPR_dotdotFALSE_: case FFESTR_otherFALSE:
e->type = FFEEXPR_exprtypeOPERAND_; e->type = FFEEXPR_exprtypeOPERAND_;
e->u.operand e->u.operand
= ffebld_new_conter (ffebld_constant_new_logicaldefault (FALSE)); = ffebld_new_conter (ffebld_constant_new_logicaldefault (FALSE));
...@@ -13931,17 +13793,8 @@ ffeexpr_token_number_ (ffelexToken t) ...@@ -13931,17 +13793,8 @@ ffeexpr_token_number_ (ffelexToken t)
/* Nothing specific we were looking for, so make an integer and pass the /* Nothing specific we were looking for, so make an integer and pass the
current token to the binary state. */ current token to the binary state. */
e = ffeexpr_expr_new_ (); ffeexpr_make_float_const_ ('I', ffeexpr_tokens_[0], NULL, NULL,
e->type = FFEEXPR_exprtypeOPERAND_; NULL, NULL, NULL);
e->token = ffeexpr_tokens_[0];
e->u.operand = ffebld_new_conter (ffebld_constant_new_integerdefault
(ffeexpr_tokens_[0]));
ffebld_set_info (e->u.operand,
ffeinfo_new (FFEINFO_basictypeINTEGER,
FFEINFO_kindtypeINTEGERDEFAULT, 0,
FFEINFO_kindENTITY, FFEINFO_whereCONSTANT,
FFETARGET_charactersizeNONE));
ffeexpr_exprstack_push_operand_ (e);
return (ffelexHandler) ffeexpr_token_binary_ (t); return (ffelexHandler) ffeexpr_token_binary_ (t);
} }
...@@ -14599,12 +14452,12 @@ ffeexpr_token_binary_period_ (ffelexToken t) ...@@ -14599,12 +14452,12 @@ ffeexpr_token_binary_period_ (ffelexToken t)
{ {
case FFELEX_typeNAME: case FFELEX_typeNAME:
case FFELEX_typeNAMES: case FFELEX_typeNAMES:
ffeexpr_current_dotdot_ = ffeexpr_dotdot_ (t); ffeexpr_current_dotdot_ = ffestr_other (t);
switch (ffeexpr_current_dotdot_) switch (ffeexpr_current_dotdot_)
{ {
case FFEEXPR_dotdotTRUE_: case FFESTR_otherTRUE:
case FFEEXPR_dotdotFALSE_: case FFESTR_otherFALSE:
case FFEEXPR_dotdotNOT_: case FFESTR_otherNOT:
if (ffest_ffebad_start (FFEBAD_MISSING_BINARY_OPERATOR)) if (ffest_ffebad_start (FFEBAD_MISSING_BINARY_OPERATOR))
{ {
operand = ffeexpr_stack_->exprstack; operand = ffeexpr_stack_->exprstack;
...@@ -14618,16 +14471,6 @@ ffeexpr_token_binary_period_ (ffelexToken t) ...@@ -14618,16 +14471,6 @@ ffeexpr_token_binary_period_ (ffelexToken t)
ffelex_token_kill (ffeexpr_tokens_[0]); ffelex_token_kill (ffeexpr_tokens_[0]);
return (ffelexHandler) ffeexpr_token_binary_sw_per_; return (ffelexHandler) ffeexpr_token_binary_sw_per_;
case FFEEXPR_dotdotNONE_:
if (ffest_ffebad_start (FFEBAD_INVALID_DOTDOT))
{
ffebad_string (ffelex_token_text (t));
ffebad_here (0, ffelex_token_where_line (ffeexpr_tokens_[0]),
ffelex_token_where_column (ffeexpr_tokens_[0]));
ffebad_finish ();
}
ffeexpr_current_dotdot_ = FFEEXPR_dotdotEQ_;
/* Fall through here, pretending we got a .EQ. operator. */
default: default:
ffeexpr_tokens_[1] = ffelex_token_use (t); ffeexpr_tokens_[1] = ffelex_token_use (t);
return (ffelexHandler) ffeexpr_token_binary_end_per_; return (ffelexHandler) ffeexpr_token_binary_end_per_;
...@@ -14661,100 +14504,109 @@ ffeexpr_token_binary_end_per_ (ffelexToken t) ...@@ -14661,100 +14504,109 @@ ffeexpr_token_binary_end_per_ (ffelexToken t)
{ {
ffeexprExpr_ e; ffeexprExpr_ e;
if (ffelex_token_type (t) != FFELEX_typePERIOD)
{
if (ffest_ffebad_start (FFEBAD_INSERTING_PERIOD))
{
ffebad_here (0, ffelex_token_where_line (ffeexpr_tokens_[0]),
ffelex_token_where_column (ffeexpr_tokens_[0]));
ffebad_here (1, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_string (ffelex_token_text (ffeexpr_tokens_[1]));
ffebad_finish ();
}
}
ffelex_token_kill (ffeexpr_tokens_[1]); /* Kill dot-dot token. */
e = ffeexpr_expr_new_ (); e = ffeexpr_expr_new_ ();
e->type = FFEEXPR_exprtypeBINARY_; e->type = FFEEXPR_exprtypeBINARY_;
e->token = ffeexpr_tokens_[0]; e->token = ffeexpr_tokens_[0];
switch (ffeexpr_current_dotdot_) switch (ffeexpr_current_dotdot_)
{ {
case FFEEXPR_dotdotAND_: case FFESTR_otherAND:
e->u.operator.op = FFEEXPR_operatorAND_; e->u.operator.op = FFEEXPR_operatorAND_;
e->u.operator.prec = FFEEXPR_operatorprecedenceAND_; e->u.operator.prec = FFEEXPR_operatorprecedenceAND_;
e->u.operator.as = FFEEXPR_operatorassociativityAND_; e->u.operator.as = FFEEXPR_operatorassociativityAND_;
break; break;
case FFEEXPR_dotdotOR_: case FFESTR_otherOR:
e->u.operator.op = FFEEXPR_operatorOR_; e->u.operator.op = FFEEXPR_operatorOR_;
e->u.operator.prec = FFEEXPR_operatorprecedenceOR_; e->u.operator.prec = FFEEXPR_operatorprecedenceOR_;
e->u.operator.as = FFEEXPR_operatorassociativityOR_; e->u.operator.as = FFEEXPR_operatorassociativityOR_;
break; break;
case FFEEXPR_dotdotXOR_: case FFESTR_otherXOR:
e->u.operator.op = FFEEXPR_operatorXOR_; e->u.operator.op = FFEEXPR_operatorXOR_;
e->u.operator.prec = FFEEXPR_operatorprecedenceXOR_; e->u.operator.prec = FFEEXPR_operatorprecedenceXOR_;
e->u.operator.as = FFEEXPR_operatorassociativityXOR_; e->u.operator.as = FFEEXPR_operatorassociativityXOR_;
break; break;
case FFEEXPR_dotdotEQV_: case FFESTR_otherEQV:
e->u.operator.op = FFEEXPR_operatorEQV_; e->u.operator.op = FFEEXPR_operatorEQV_;
e->u.operator.prec = FFEEXPR_operatorprecedenceEQV_; e->u.operator.prec = FFEEXPR_operatorprecedenceEQV_;
e->u.operator.as = FFEEXPR_operatorassociativityEQV_; e->u.operator.as = FFEEXPR_operatorassociativityEQV_;
break; break;
case FFEEXPR_dotdotNEQV_: case FFESTR_otherNEQV:
e->u.operator.op = FFEEXPR_operatorNEQV_; e->u.operator.op = FFEEXPR_operatorNEQV_;
e->u.operator.prec = FFEEXPR_operatorprecedenceNEQV_; e->u.operator.prec = FFEEXPR_operatorprecedenceNEQV_;
e->u.operator.as = FFEEXPR_operatorassociativityNEQV_; e->u.operator.as = FFEEXPR_operatorassociativityNEQV_;
break; break;
case FFEEXPR_dotdotLT_: case FFESTR_otherLT:
e->u.operator.op = FFEEXPR_operatorLT_; e->u.operator.op = FFEEXPR_operatorLT_;
e->u.operator.prec = FFEEXPR_operatorprecedenceLT_; e->u.operator.prec = FFEEXPR_operatorprecedenceLT_;
e->u.operator.as = FFEEXPR_operatorassociativityLT_; e->u.operator.as = FFEEXPR_operatorassociativityLT_;
break; break;
case FFEEXPR_dotdotLE_: case FFESTR_otherLE:
e->u.operator.op = FFEEXPR_operatorLE_; e->u.operator.op = FFEEXPR_operatorLE_;
e->u.operator.prec = FFEEXPR_operatorprecedenceLE_; e->u.operator.prec = FFEEXPR_operatorprecedenceLE_;
e->u.operator.as = FFEEXPR_operatorassociativityLE_; e->u.operator.as = FFEEXPR_operatorassociativityLE_;
break; break;
case FFEEXPR_dotdotEQ_: case FFESTR_otherEQ:
e->u.operator.op = FFEEXPR_operatorEQ_; e->u.operator.op = FFEEXPR_operatorEQ_;
e->u.operator.prec = FFEEXPR_operatorprecedenceEQ_; e->u.operator.prec = FFEEXPR_operatorprecedenceEQ_;
e->u.operator.as = FFEEXPR_operatorassociativityEQ_; e->u.operator.as = FFEEXPR_operatorassociativityEQ_;
break; break;
case FFEEXPR_dotdotNE_: case FFESTR_otherNE:
e->u.operator.op = FFEEXPR_operatorNE_; e->u.operator.op = FFEEXPR_operatorNE_;
e->u.operator.prec = FFEEXPR_operatorprecedenceNE_; e->u.operator.prec = FFEEXPR_operatorprecedenceNE_;
e->u.operator.as = FFEEXPR_operatorassociativityNE_; e->u.operator.as = FFEEXPR_operatorassociativityNE_;
break; break;
case FFEEXPR_dotdotGT_: case FFESTR_otherGT:
e->u.operator.op = FFEEXPR_operatorGT_; e->u.operator.op = FFEEXPR_operatorGT_;
e->u.operator.prec = FFEEXPR_operatorprecedenceGT_; e->u.operator.prec = FFEEXPR_operatorprecedenceGT_;
e->u.operator.as = FFEEXPR_operatorassociativityGT_; e->u.operator.as = FFEEXPR_operatorassociativityGT_;
break; break;
case FFEEXPR_dotdotGE_: case FFESTR_otherGE:
e->u.operator.op = FFEEXPR_operatorGE_; e->u.operator.op = FFEEXPR_operatorGE_;
e->u.operator.prec = FFEEXPR_operatorprecedenceGE_; e->u.operator.prec = FFEEXPR_operatorprecedenceGE_;
e->u.operator.as = FFEEXPR_operatorassociativityGE_; e->u.operator.as = FFEEXPR_operatorassociativityGE_;
break; break;
default: default:
assert ("Bad unary dotdot in ffeexpr_current_dotdot_" == NULL); if (ffest_ffebad_start (FFEBAD_INVALID_DOTDOT))
{
ffebad_here (0, ffelex_token_where_line (ffeexpr_tokens_[0]),
ffelex_token_where_column (ffeexpr_tokens_[0]));
ffebad_string (ffelex_token_text (ffeexpr_tokens_[1]));
ffebad_finish ();
}
e->u.operator.op = FFEEXPR_operatorEQ_;
e->u.operator.prec = FFEEXPR_operatorprecedenceEQ_;
e->u.operator.as = FFEEXPR_operatorassociativityEQ_;
break;
} }
ffeexpr_exprstack_push_binary_ (e); ffeexpr_exprstack_push_binary_ (e);
if (ffelex_token_type (t) != FFELEX_typePERIOD) if (ffelex_token_type (t) != FFELEX_typePERIOD)
return (ffelexHandler) ffeexpr_token_rhs_ (t); {
if (ffest_ffebad_start (FFEBAD_INSERTING_PERIOD))
{
ffebad_here (0, ffelex_token_where_line (ffeexpr_tokens_[0]),
ffelex_token_where_column (ffeexpr_tokens_[0]));
ffebad_here (1, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_string (ffelex_token_text (ffeexpr_tokens_[1]));
ffebad_finish ();
}
ffelex_token_kill (ffeexpr_tokens_[1]); /* Kill dot-dot token. */
return (ffelexHandler) ffeexpr_token_rhs_ (t);
}
ffelex_token_kill (ffeexpr_tokens_[1]); /* Kill dot-dot token. */
return (ffelexHandler) ffeexpr_token_rhs_; return (ffelexHandler) ffeexpr_token_rhs_;
} }
...@@ -15853,6 +15705,16 @@ ffeexpr_make_float_const_ (char exp_letter, ffelexToken integer, ...@@ -15853,6 +15705,16 @@ ffeexpr_make_float_const_ (char exp_letter, ffelexToken integer,
break; break;
#endif #endif
case 'I': /* Make an integer. */
e->u.operand = ffebld_new_conter (ffebld_constant_new_integerdefault
(ffeexpr_tokens_[0]));
ffebld_set_info (e->u.operand,
ffeinfo_new (FFEINFO_basictypeINTEGER,
FFEINFO_kindtypeINTEGERDEFAULT, 0,
FFEINFO_kindENTITY, FFEINFO_whereCONSTANT,
FFETARGET_charactersizeNONE));
break;
default: default:
no_match: /* :::::::::::::::::::: */ no_match: /* :::::::::::::::::::: */
assert ("Lost the exponent letter!" == NULL); assert ("Lost the exponent letter!" == NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment