if (bf != floor (bf) || bf <= LONG_MIN || bf > LONG_MAX)
{
msg_at (SE, matrix_expr_location (e->subs[1]),
- _("Exponent %.1f in matrix multiplication is non-integer "
+ _("Exponent %.1f in matrix exponentiation is non-integer "
"or outside the valid range."), bf);
return NULL;
}
if (lex_token (s->lexer) != T_SLASH && lex_token (s->lexer) != T_ENDCMD)
{
- size_t depth = 0;
- for (size_t i = 0; ; i++)
- {
- enum token_type t = lex_next_token (s->lexer, i);
- if (t == T_LPAREN || t == T_LBRACK || t == T_LCURLY)
- depth++;
- else if ((t == T_RPAREN || t == T_RBRACK || t == T_RCURLY) && depth)
- depth--;
- else if ((t == T_SLASH && !depth) || t == T_ENDCMD || t == T_STOP)
- {
- if (i > 0)
- cmd->print.title = lex_next_representation (s->lexer, 0, i - 1);
- break;
- }
- }
-
+ int start_ofs = lex_ofs (s->lexer);
cmd->print.expression = matrix_parse_exp (s);
if (!cmd->print.expression)
goto error;
+ cmd->print.title = lex_ofs_representation (s->lexer, start_ofs,
+ lex_ofs (s->lexer) - 1);
}
while (lex_match (s->lexer, T_SLASH))
{
char s[FMT_STRING_LEN_MAX + 1];
fmt_to_string (write->format, s);
- msg (SE, _("Format %s is too wide for %zu-byte matrix eleemnts."),
+ msg (SE, _("Format %s is too wide for %zu-byte matrix elements."),
s, sizeof (double));
goto error;
}