diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2006-08-05 13:32:21 +0000 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2006-08-05 13:32:21 +0000 |
commit | 6865e612102c809bfed00acb52ce75395395cc89 (patch) | |
tree | c68d68703f432db887bd111088bbc51a4506f6cb /mixlib/mix_scanner.l | |
parent | 52cd64b7673affa9737ee6f486ea974c59f4d388 (diff) | |
download | mdk-6865e612102c809bfed00acb52ce75395395cc89.tar.gz mdk-6865e612102c809bfed00acb52ce75395395cc89.tar.bz2 |
Invalid F-spec reported as warnings, to allow hacks as CMPX xxxx(6)
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-13
Diffstat (limited to 'mixlib/mix_scanner.l')
-rw-r--r-- | mixlib/mix_scanner.l | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/mixlib/mix_scanner.l b/mixlib/mix_scanner.l index 2b3099b..1ad8eaa 100644 --- a/mixlib/mix_scanner.l +++ b/mixlib/mix_scanner.l @@ -434,16 +434,25 @@ wexpr {expr}({fpart})?(,{expr}({fpart})?)* <FSPEC>{ {number}")"(({ws}+.*\n)|\n) { glong val = atol (yytext); - if ( val < 0 || val > MIX_BYTE_MAX ) - RETURN_ERROR (MIX_PERR_INV_FSPEC, NULL); - if ( ins.opcode != mix_opMOVE - && ins.opcode != mix_opNOP - && ( ins.opcode < mix_opJBUS || ins.opcode > mix_opJXx ) - && !mix_fspec_is_valid (mix_byte_new (val)) ) + + if (val < 0 || val > MIX_BYTE_MAX) RETURN_ERROR (MIX_PERR_INV_FSPEC, NULL); - if ( nof ) - mix_parser_log_error (parser, MIX_PERR_INV_FSPEC, - lineno, _("ignored"), TRUE); + + if (ins.opcode != mix_opMOVE + && ins.opcode != mix_opNOP + && ( ins.opcode < mix_opJBUS || ins.opcode > mix_opJXx ) + && !mix_fspec_is_valid (mix_byte_new (val)) ) + { + gchar *spec = g_strdup_printf ("%d", (int)val); + mix_parser_log_error (parser, MIX_PERR_INV_FSPEC, lineno, spec, TRUE); + g_free (spec); + } + + if (nof) + { + mix_parser_log_error (parser, MIX_PERR_INV_FSPEC, + lineno, _("ignored"), TRUE); + } else { ins.fspec = mix_byte_new (val); |