diff options
Diffstat (limited to 'src/error.c')
| -rw-r--r-- | src/error.c | 550 |
1 files changed, 550 insertions, 0 deletions
diff --git a/src/error.c b/src/error.c new file mode 100644 index 0000000..3a5703f --- /dev/null +++ b/src/error.c @@ -0,0 +1,550 @@ + +/*************************************************************** + ERROR.C + + This file containts routines for printing + error messages. + + PART OF : ZUBR - Parsers generator for multiple syntax + language compilers . + + COMPILE : . + + NOTE : NONE . + + Copyright (C) 1995 - 2026 by Andrey V.Kosteltsev. + All Rights Reserved. + ***************************************************************/ +/* + This file contant RUSSIAN letters( code-page: UTF-8 ) + ***************************************************************/ + +#include <defs.h> + +#ifndef __NO_COMPILE + + +void fatal( __mpu_char16_t *message ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "FATAL ERROR:" ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s %s\n" ), msg, message ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 2 ); +} + +void fatal_reorder( __mpu_char16_t *fname ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "FATAL ERROR:" ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s Can't reorder bytes in file \"%s\"\n" ), msg, fname ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 2 ); +} + + +void no_space( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0001 Cannot allocated memory" ); /* out of space */ + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s\n" ), msg ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 2 ); +} + + +void bad_filename( __mpu_char16_t *s, int l ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0002 Inadmissible file_name:" ); + register int i; + register int n; + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s %s\n" ), msg, s ); + n = mpu_str16len( msg ); + n += l + 1; + for( i = 0; i < n; ++i ) mpu_putc( ' ', mpu_stderr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "^ illegal character\n" ) ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 1 ); +} + + +void bad_fileprefix( __mpu_char16_t *s, int l ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0003 Inadmissible file_prefix:" ); + register int i; + register int n; + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s %s\n" ), msg, s ); + n = mpu_str16len( msg ); + n += l + 1; + for( i = 0; i < n; ++i ) mpu_putc( ' ', mpu_stderr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "^ illegal character\n" ) ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 1 ); +} + + +void bad_funcname( __mpu_char16_t *s, int l ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0004 Inadmissible fuction name or prefix:" ); + register int i; + register int n; + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s %s\n" ), msg, s ); + n = mpu_str16len( msg ); + n += l + 1; + for( i = 0; i < n; ++i ) mpu_putc( ' ', mpu_stderr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "^ illegal character\n" ) ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname); + done( 1 ); +} + + + + +void open_error( __mpu_char16_t *filename ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0005 Cannot open file:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, filename ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 2 ); +} + + +void input_error( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0006 Cannot read UTF-8 input file:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void unexpected_EOF( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0006 Unexpected end-of-file:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void print_pos( __mpu_char16_t *st_line, __mpu_char16_t *st_cptr ) +{ + register __mpu_char16_t *s; + + if( st_line == 0 ) return; + for( s = st_line; *s != '\n'; ++s ) + { + if( zubr_is_print(*s) || *s == '\t' ) mpu_putc( *s, mpu_stderr ); + else mpu_putc( '?', mpu_stderr ); + } + mpu_putc( '\n', mpu_stderr ); + for( s = st_line; s < st_cptr; ++s ) + { + if( *s == '\t' ) mpu_putc( '\t', mpu_stderr ); + else mpu_putc( ' ', mpu_stderr ); + } + mpu_putc( '^', mpu_stderr ); + mpu_putc( '\n', mpu_stderr ); + +} + + +void syntax_error( int st_lineno, __mpu_char16_t *st_line, __mpu_char16_t *st_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0007 Syntax error:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), st_lineno ); + print_pos( st_line, st_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); + +} + + +void unterminated_comment( int c_lineno, + __mpu_char16_t *c_line, __mpu_char16_t *c_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0008 Unterminated comment:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), c_lineno ); + print_pos( c_line, c_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void unterminated_string( int s_lineno, + __mpu_char16_t *s_line, __mpu_char16_t *s_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0009 Unterminated string:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), s_lineno ); + print_pos( s_line, s_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void unterminated_text( int t_lineno, + __mpu_char16_t *t_line, __mpu_char16_t *t_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0010 Unmatched %%{ :" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), t_lineno ); + print_pos( t_line, t_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void unterminated_union( int u_lineno, + __mpu_char16_t *u_line, __mpu_char16_t *u_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0011 Unterminated %%union declaration:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), u_lineno ); + print_pos( u_line, u_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void over_unionized( __mpu_char16_t *u_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0012 Too many %%union declarations:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + print_pos( line, u_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void illegal_character( __mpu_char16_t *c_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0013 Illegal character:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + print_pos( line, c_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void used_reserved( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0014 Illegal use of reserved symbol:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " Symbol %s is reserved\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void illegal_tag( int t_lineno, __mpu_char16_t *t_line, __mpu_char16_t *t_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0015 Illegal tag:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), t_lineno ); + print_pos( t_line, t_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void tokenized_start( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0016 Start symbol cannot be declared:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, + MPU_UCS2( " The start symbol %s cannot be declared to be a token\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void terminal_start( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0017 Start symbol cannot be declared:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " The start symbol %s is a token\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void no_grammar( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0018 No grammar has been specified:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void terminal_lhs( int s_lineno ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0019 Terminal lhs:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), s_lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " A token appears on the lhs of a production\n" ) ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void unterminated_action( int a_lineno, + __mpu_char16_t *a_line, __mpu_char16_t *a_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0020 Unterminated_action:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), a_lineno ); + print_pos( a_line, a_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void untyped_lhs( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0021 Untyped lhs:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " $$ is untyped\n" ) ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void untyped_rhs( int i, __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0022 Untyped rhs:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " $%d (%s) is untyped\n" ), i, s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void unknown_rhs( int i ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0023 Unknown rhs:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " $%d is untyped\n" ), i ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void undefined_goal( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0024 Undefined start:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " The start symbol %s is undefined\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void dollar_error( int a_lineno, __mpu_char16_t *a_line, __mpu_char16_t *a_cptr ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0025 Dollar error:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), a_lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " Illegal $-name\n" ) ); + print_pos( a_line, a_cptr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + + done( 1 ); +} + + +void bad_option( __mpu_char16_t *s ) +{ /* можно потом поставить на № 0005 */ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0026 Invalid option:" ); + register int i; + register int n; + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s %s\n" ), msg, s ); + n = mpu_str16len( msg ); + n += 1; + for( i = 0; i < n; ++i ) mpu_putc( ' ', mpu_stderr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "^ illegal option\n" ) ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 1 ); +} + + +void bad_code_page( __mpu_char16_t *s, __mpu_char16_t *p ) +{ /* можно потом поставить на № 0006 */ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "ERROR 0027 Invalid parameter in option:" ); + register int i; + register int n; + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s %s %s\n" ), msg, s, p ); + n = mpu_str16len( msg ) + mpu_str16len( s ); + n += 2; + for( i = 0; i < n; ++i ) mpu_putc( ' ', mpu_stderr ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "^ illegal code page\n" ) ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: return bad status\n" ), myname ); + done( 1 ); +} + + +/******* warnings ******************************************************/ + + +void dollar_warning( int a_lineno, int i ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0001 Dollar warning:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), a_lineno ); + mpu_fprintf( mpu_stderr, + MPU_UCS2( " $%d references beyond the end of the current rule\n" ), i ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + + +void retyped_warning( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0002 Redeclared type:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " The type of %s has been redeclared\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + + +void reprec_warning( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0003 Redeclared precedence:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " The precedence of %s has been redeclared\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + + +void revalued_warning( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0004 Redeclared value:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " The value of %s has been redeclared\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + + +void restarted_warning( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0005 Redeclared start symbol:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " The start symbol has been redeclared\n" ) ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + + +void default_action_warning( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0006 Default action:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, + MPU_UCS2( " The default action assigns an undefined value to $$\n" ) ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + + +void undefined_symbol_warning( __mpu_char16_t *s ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0007 Undefined_symbol:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " The symbol %s is undefined\n" ), s ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + + +void prec_redeclared( void ) +{ + __mpu_char16_t *msg = (__mpu_char16_t *)MPU_UCS2( "WARNING 0008 Conflicting %%prec:" ); + + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s \"%s\"\n" ), msg, input_file_name ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " #line %d\n" ), lineno ); + mpu_fprintf( mpu_stderr, MPU_UCS2( " Conflicting %%prec specifiers\n" ) ); + mpu_fprintf( mpu_stderr, MPU_UCS2( "%s: inform of warning status\n" ), myname ); + +} + +#endif /* __NO_COMPILE */ + +/************************* END OF FILE ERROR.H *************************/ |
