[BACK]Return to error.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / yacc

Annotation of src/usr.bin/yacc/error.c, Revision 1.12

1.12    ! nicm        1: /*     $OpenBSD: error.c,v 1.11 2009/10/27 23:59:50 deraadt Exp $      */
1.2       deraadt     2: /*     $NetBSD: error.c,v 1.4 1996/03/19 03:21:32 jtc Exp $    */
                      3:
                      4: /*
                      5:  * Copyright (c) 1989 The Regents of the University of California.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to Berkeley by
                      9:  * Robert Paul Corbett.
                     10:  *
                     11:  * Redistribution and use in source and binary forms, with or without
                     12:  * modification, are permitted provided that the following conditions
                     13:  * are met:
                     14:  * 1. Redistributions of source code must retain the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer.
                     16:  * 2. Redistributions in binary form must reproduce the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer in the
                     18:  *    documentation and/or other materials provided with the distribution.
1.8       millert    19:  * 3. Neither the name of the University nor the names of its contributors
1.2       deraadt    20:  *    may be used to endorse or promote products derived from this software
                     21:  *    without specific prior written permission.
                     22:  *
                     23:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     24:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     25:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     26:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     27:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     28:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     29:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     30:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     31:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     32:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     33:  * SUCH DAMAGE.
                     34:  */
                     35:
                     36: /* routines for printing error messages  */
1.1       deraadt    37:
                     38: #include "defs.h"
                     39:
                     40:
1.5       pvalchev   41: void
1.9       pvalchev   42: fatal(char *msg)
1.1       deraadt    43: {
1.7       deraadt    44:     fprintf(stderr, "%s: %s\n", input_file_name, msg);
1.1       deraadt    45:     done(2);
                     46: }
                     47:
                     48:
1.5       pvalchev   49: void
1.9       pvalchev   50: no_space(void)
1.1       deraadt    51: {
1.7       deraadt    52:     fprintf(stderr, "%s: yacc is out of space\n", input_file_name);
1.1       deraadt    53:     done(2);
                     54: }
                     55:
                     56:
1.5       pvalchev   57: void
1.9       pvalchev   58: open_error(char *filename)
1.1       deraadt    59: {
1.12    ! nicm       60:     fprintf(stderr, "%s: cannot open source file %s\n",
        !            61:        input_file_name, filename);
1.1       deraadt    62:     done(2);
                     63: }
                     64:
1.10      pvalchev   65: void
                     66: open_write_error(char *filename)
                     67: {
                     68:     fprintf(stderr, "%s: cannot open target file %s for writing\n",
                     69:        input_file_name, filename);
                     70:     done(2);
                     71: }
1.1       deraadt    72:
1.5       pvalchev   73: void
1.9       pvalchev   74: unexpected_EOF(void)
1.1       deraadt    75: {
1.7       deraadt    76:     fprintf(stderr, "%s:%d: unexpected end-of-file\n",
                     77:            input_file_name, lineno);
1.1       deraadt    78:     done(1);
                     79: }
                     80:
                     81:
1.5       pvalchev   82: void
1.9       pvalchev   83: print_pos(char *st_line, char *st_cptr)
1.1       deraadt    84: {
1.6       mpech      85:     char *s;
1.1       deraadt    86:
                     87:     if (st_line == 0) return;
                     88:     for (s = st_line; *s != '\n'; ++s)
                     89:     {
                     90:        if (isprint(*s) || *s == '\t')
                     91:            putc(*s, stderr);
                     92:        else
                     93:            putc('?', stderr);
                     94:     }
                     95:     putc('\n', stderr);
                     96:     for (s = st_line; s < st_cptr; ++s)
                     97:     {
                     98:        if (*s == '\t')
                     99:            putc('\t', stderr);
                    100:        else
                    101:            putc(' ', stderr);
                    102:     }
                    103:     putc('^', stderr);
                    104:     putc('\n', stderr);
                    105: }
                    106:
1.5       pvalchev  107: void
1.9       pvalchev  108: syntax_error(int st_lineno, char *st_line, char *st_cptr)
1.1       deraadt   109: {
1.7       deraadt   110:     fprintf(stderr, "%s:%d: syntax error\n",
                    111:            input_file_name, st_lineno);
1.1       deraadt   112:     print_pos(st_line, st_cptr);
                    113:     done(1);
                    114: }
                    115:
1.5       pvalchev  116: void
1.9       pvalchev  117: unterminated_comment(int c_lineno, char *c_line, char *c_cptr)
1.1       deraadt   118: {
1.7       deraadt   119:     fprintf(stderr, "%s:%d: unmatched /*\n",
                    120:            input_file_name, c_lineno);
1.1       deraadt   121:     print_pos(c_line, c_cptr);
                    122:     done(1);
                    123: }
                    124:
1.5       pvalchev  125: void
1.9       pvalchev  126: unterminated_string(int s_lineno, char *s_line, char *s_cptr)
1.1       deraadt   127: {
1.7       deraadt   128:     fprintf(stderr, "%s:%d:, unterminated string\n",
                    129:            input_file_name, s_lineno);
1.1       deraadt   130:     print_pos(s_line, s_cptr);
                    131:     done(1);
                    132: }
                    133:
1.5       pvalchev  134: void
1.9       pvalchev  135: unterminated_text(int t_lineno, char *t_line, char *t_cptr)
1.1       deraadt   136: {
1.7       deraadt   137:     fprintf(stderr, "%s:%d: unmatched %%{\n",
                    138:            input_file_name, t_lineno);
1.1       deraadt   139:     print_pos(t_line, t_cptr);
                    140:     done(1);
                    141: }
                    142:
1.5       pvalchev  143: void
1.9       pvalchev  144: unterminated_union(int u_lineno, char *u_line, char *u_cptr)
1.1       deraadt   145: {
1.7       deraadt   146:     fprintf(stderr, "%s:%d: unterminated %%union declaration\n",
                    147:            input_file_name, u_lineno);
1.1       deraadt   148:     print_pos(u_line, u_cptr);
                    149:     done(1);
                    150: }
                    151:
1.5       pvalchev  152: void
1.9       pvalchev  153: over_unionized(char *u_cptr)
1.1       deraadt   154: {
1.7       deraadt   155:     fprintf(stderr, "%s:%d: too many %%union declarations\n",
                    156:            input_file_name, lineno);
1.1       deraadt   157:     print_pos(line, u_cptr);
                    158:     done(1);
                    159: }
                    160:
1.5       pvalchev  161: void
1.9       pvalchev  162: illegal_tag(int t_lineno, char *t_line, char *t_cptr)
1.1       deraadt   163: {
1.7       deraadt   164:     fprintf(stderr, "%s:%d: illegal tag\n",
                    165:            input_file_name, t_lineno);
1.1       deraadt   166:     print_pos(t_line, t_cptr);
                    167:     done(1);
                    168: }
                    169:
                    170:
1.5       pvalchev  171: void
1.9       pvalchev  172: illegal_character(char *c_cptr)
1.1       deraadt   173: {
1.7       deraadt   174:     fprintf(stderr, "%s:%d: illegal character\n",
                    175:            input_file_name, lineno);
1.1       deraadt   176:     print_pos(line, c_cptr);
                    177:     done(1);
                    178: }
                    179:
                    180:
1.5       pvalchev  181: void
1.9       pvalchev  182: used_reserved(char *s)
1.1       deraadt   183: {
1.7       deraadt   184:     fprintf(stderr, "%s:%d: illegal use of reserved symbol %s\n",
                    185:            input_file_name, lineno, s);
1.1       deraadt   186:     done(1);
                    187: }
                    188:
1.5       pvalchev  189: void
1.9       pvalchev  190: tokenized_start(char *s)
1.1       deraadt   191: {
1.7       deraadt   192:      fprintf(stderr, "%s:%d: the start symbol %s cannot be declared to be a token\n",
                    193:            input_file_name, lineno, s);
1.1       deraadt   194:      done(1);
                    195: }
                    196:
1.5       pvalchev  197: void
1.9       pvalchev  198: retyped_warning(char *s)
1.1       deraadt   199: {
1.7       deraadt   200:     fprintf(stderr, "%s:%d: the type of %s has been redeclared\n",
                    201:            input_file_name, lineno, s);
1.1       deraadt   202: }
                    203:
1.5       pvalchev  204: void
1.9       pvalchev  205: reprec_warning(char *s)
1.1       deraadt   206: {
1.7       deraadt   207:     fprintf(stderr, "%s:%d: the precedence of %s has been redeclared\n",
                    208:            input_file_name, lineno, s);
1.1       deraadt   209: }
                    210:
1.5       pvalchev  211: void
1.9       pvalchev  212: revalued_warning(char *s)
1.1       deraadt   213: {
1.7       deraadt   214:     fprintf(stderr, "%s:%d: the value of %s has been redeclared\n",
                    215:            input_file_name, lineno, s);
1.1       deraadt   216: }
                    217:
1.5       pvalchev  218: void
1.9       pvalchev  219: terminal_start(char *s)
1.1       deraadt   220: {
1.7       deraadt   221:     fprintf(stderr, "%s:%d: the start symbol %s is a token\n",
                    222:            input_file_name, lineno, s);
1.1       deraadt   223:     done(1);
                    224: }
                    225:
1.5       pvalchev  226: void
1.9       pvalchev  227: restarted_warning(void)
1.1       deraadt   228: {
1.7       deraadt   229:     fprintf(stderr, "%s:%d: the start symbol has been redeclared\n",
                    230:             input_file_name, lineno);
1.1       deraadt   231: }
                    232:
1.5       pvalchev  233: void
1.9       pvalchev  234: no_grammar(void)
1.1       deraadt   235: {
1.7       deraadt   236:     fprintf(stderr, "%s:%d: no grammar has been specified\n",
                    237:            input_file_name, lineno);
1.1       deraadt   238:     done(1);
                    239: }
                    240:
1.5       pvalchev  241: void
1.9       pvalchev  242: terminal_lhs(int s_lineno)
1.1       deraadt   243: {
1.7       deraadt   244:     fprintf(stderr, "%s:%d: a token appears on the lhs of a production\n",
                    245:            input_file_name, s_lineno);
1.1       deraadt   246:     done(1);
                    247: }
                    248:
1.5       pvalchev  249: void
1.9       pvalchev  250: prec_redeclared(void)
1.1       deraadt   251: {
1.7       deraadt   252:     fprintf(stderr, "%s:%d: conflicting %%prec specifiers\n",
                    253:            input_file_name, lineno);
1.1       deraadt   254: }
                    255:
1.5       pvalchev  256: void
1.9       pvalchev  257: unterminated_action(int a_lineno, char *a_line, char *a_cptr)
1.1       deraadt   258: {
1.7       deraadt   259:     fprintf(stderr, "%s:%d: unterminated action\n",
                    260:            input_file_name, a_lineno);
1.1       deraadt   261:     print_pos(a_line, a_cptr);
                    262:     done(1);
                    263: }
                    264:
1.5       pvalchev  265: void
1.9       pvalchev  266: dollar_warning(int a_lineno, int i)
1.1       deraadt   267: {
1.7       deraadt   268:     fprintf(stderr, "%s:%d: $%d references beyond the end of the current rule\n",
                    269:            input_file_name, a_lineno, i);
1.1       deraadt   270: }
                    271:
1.5       pvalchev  272: void
1.9       pvalchev  273: dollar_error(int a_lineno, char *a_line, char *a_cptr)
1.1       deraadt   274: {
1.7       deraadt   275:     fprintf(stderr, "%s:%d: illegal $-name\n",
                    276:            input_file_name, a_lineno);
1.1       deraadt   277:     print_pos(a_line, a_cptr);
                    278:     done(1);
                    279: }
                    280:
                    281:
1.5       pvalchev  282: void
1.9       pvalchev  283: untyped_lhs(void)
1.1       deraadt   284: {
1.7       deraadt   285:     fprintf(stderr, "%s:%d: $$ is untyped\n",
                    286:            input_file_name, lineno);
1.1       deraadt   287:     done(1);
                    288: }
                    289:
1.5       pvalchev  290: void
1.9       pvalchev  291: untyped_rhs(int i, char *s)
1.1       deraadt   292: {
1.7       deraadt   293:     fprintf(stderr, "%s:%d: $%d (%s) is untyped\n",
                    294:            input_file_name, lineno, i, s);
1.1       deraadt   295:     done(1);
                    296: }
                    297:
1.5       pvalchev  298: void
1.9       pvalchev  299: unknown_rhs(int i)
1.1       deraadt   300: {
1.7       deraadt   301:     fprintf(stderr, "%s:%d: $%d is untyped\n",
                    302:            input_file_name, lineno, i);
1.1       deraadt   303:     done(1);
                    304: }
                    305:
1.5       pvalchev  306: void
1.9       pvalchev  307: default_action_warning(void)
1.1       deraadt   308: {
1.7       deraadt   309:     fprintf(stderr, "%s:%d: the default action assigns an undefined value to $$\n",
                    310:            input_file_name, lineno);
1.1       deraadt   311: }
                    312:
1.5       pvalchev  313: void
1.9       pvalchev  314: undefined_goal(char *s)
1.1       deraadt   315: {
1.7       deraadt   316:     fprintf(stderr, "%s: the start symbol %s is undefined\n", input_file_name, s);
1.1       deraadt   317:     done(1);
                    318: }
                    319:
1.5       pvalchev  320: void
1.9       pvalchev  321: undefined_symbol_warning(char *s)
1.1       deraadt   322: {
1.7       deraadt   323:     fprintf(stderr, "%s: the symbol %s is undefined\n", input_file_name, s);
1.1       deraadt   324: }