summaryrefslogtreecommitdiff
path: root/src/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.c')
-rw-r--r--src/error.c550
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 *************************/