Changeset 111 for trunk/src


Ignore:
Timestamp:
Apr 26, 2008, 8:13:13 AM (11 years ago)
Author:
cameron
Message:

Consolidation of error handling: xml_error.c

Location:
trunk/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bitlex.c

    r100 r111  
    99#include "bitlex.h"
    1010#include "../lib/lib_simd.h"
     11#include "xml_error.h"
    1112
    1213#ifdef CODE_CLOCKING
     
    3435};
    3536
    36 
    37 
    38 void NoEncodingError(char * msg) {
    39         printf("Error : %s\n", msg);
    40         exit(-1);
    41 }
    42 
    43 void EncodingError(char * msg, unsigned char * encoding, int lgth) {
    44         printf("Error : Illegal/unsupported %s encoding of length %i: \"", msg, lgth);
    45         for (int i = 0; i < lgth; i++) printf("%c", encoding[i]);
    46         printf("\"\n");
    47         exit(-1);
    48 }
    4937
    5038template <>
     
    610598        u16_surrogate_accum = simd_or(u16_surrogate_accum, hi_surrogate_pending);
    611599        if (bitblock_has_bit(simd_or(u16_surrogate_accum, u16_FFFE_FFFF_accum)))
    612                 printf("UTF-16 validation error.\n");
    613                 exit(-1);
     600                CharSetValidationError("UTF-16");
    614601        }
    615602#endif
     
    645632                                        simd_const_8(0xFF));
    646633        if (bitblock_has_bit(simd_or(u16_surrogate_accum, u16_FFFE_FFFF_accum)))
    647                 printf("UCS-2 validation error.\n");
    648                 exit(-1);
     634                CharSetValidationError("UCS-2");
    649635        }
    650636#endif
     
    696682        if (bitblock_has_bit(simd_or(simd_or(u32hh_accum, u32hl_accum),
    697683                                         simd_or(u32_surrogate_accum, u32_FFFE_FFFF_accum)))) {
    698                 printf("UTF-32 validation error.\n");
    699                 exit(-1);
     684                CharSetValidationError("UTF-32");
    700685        }
    701686#endif
  • trunk/src/byteplex.c

    r103 r111  
    1313#include <sys/stat.h>
    1414#include "byteplex.h"
     15#include "xml_error.h"
    1516#include "multiliteral.h"
    1617#include "bytelex.h"
     
    239240        int bytes_read = CopyAndFill(src, lgth, byte_advance);
    240241        if (bytes_read % 2 != 0) {
    241                 printf("Error: Incomplete code unit at end of file.\n");
    242                 exit(-1);
     242                IncompleteCodeUnitError();
    243243        }
    244244        Set_limits((bytes_read + lgth)/2);
     
    249249        int bytes_read = CopyAndFill(src, lgth, byte_advance);
    250250        if (bytes_read % 4 != 0) {
    251                 printf("Error: Incomplete code unit at end of file.\n");
    252                 exit(-1);
     251                IncompleteCodeUnitError();
    253252        }
    254253        Set_limits((bytes_read + lgth)/4);
     
    270269                                        bytes_to_keep, advance_amt*2);
    271270        if (bytes_read % 2 != 0) {
    272                 printf("Error: Incomplete code unit at end of file.\n");
    273                 exit(-1);
     271                IncompleteCodeUnitError();
    274272        }
    275273        Set_limits((bytes_read + bytes_to_keep)/2);
     
    281279                                        bytes_to_keep, advance_amt*4);
    282280        if (bytes_read % 4 != 0) {
    283                 printf("Error: Incomplete code unit at end of file.\n");
    284                 exit(-1);
     281                IncompleteCodeUnitError();
    285282        }
    286283        Set_limits((bytes_read + bytes_to_keep)/4);
     
    317314        Byteplex * b = ByteplexFactory(e);
    318315        memcpy(b->src_buffer, buffer_bytes, buffer_size);
    319     printf("buffer_bytes = %s\n", buffer_bytes);
     316//printf("buffer_bytes = %s\n", buffer_bytes);
    320317        b->units_in_buffer = buffer_size / e->code_unit_size;
    321318        b->packs_in_buffer = (b->units_in_buffer + PACKSIZE -1)/PACKSIZE;
  • trunk/src/contentmodel.c

    r106 r111  
    77
    88#include "contentmodel.h"
    9 
     9#include "xml_error.h"
    1010
    1111CM_Any::CM_Any(): ContentModel() {
     
    7474        for (j=subCM->first_map.begin(); j!=subCM->first_map.end(); j++) {
    7575                if (subCM->follow_map[j->first] != 0) {
    76                         printf("Error: nondeterminism in content model.\n");
    77                         exit(-1);
     76                        ContentModelError();                   
    7877                }
    7978                subCM->follow_map[j->first]=j->second;
     
    8887        for (j=subCM->first_map.begin(); j!=subCM->first_map.end(); j++) {
    8988                if (subCM->follow_map[j->first] != 0) {
    90                         printf("Error: nondeterminism in content model.\n");
    91                         exit(-1);
     89                        ContentModelError();
    9290                }
    9391                subCM->follow_map[j->first]=j->second;
     
    115113                for (itr=subCMs[i]->first_map.begin(); itr!=subCMs[i]->first_map.end(); itr++) {
    116114                        if (subCMs[i-1]->follow_map[itr->first] != 0) {
    117                                 printf("Error: nondeterminism in content model.\n");
    118                                 exit(-1);
     115                                ContentModelError();
    119116                        }
    120117                        subCMs[i-1]->follow_map[itr->first]=itr->second;
     
    125122                        for (itr=subCMs[i]->follow_map.begin(); itr!=subCMs[i]->follow_map.end(); itr++) {
    126123                                if (subCMs[i-1]->follow_map[itr->first] != 0) {
    127                                         printf("Error: nondeterminism in content model.\n");
    128                                         exit(-1);
     124                                        ContentModelError();
    129125                                }
    130126                                subCMs[i-1]->follow_map[itr->first]=itr->second;
     
    198194               
    199195//              if (first_map.size() < fm_size + s_i_size) {
    200 //                      printf("Error: nondeterminism in content model.\n");
    201 //                      exit(-1);
     196//                      ContentModelError();
    202197//              }
    203198                if (!(subCMs[i]->matches_empty)){
     
    218213               
    219214//              if (first_map.size() < fm_size + s_i_size) {
    220 //                      printf("Error: nondeterminism in content model.\n");
    221 //                      exit(-1);
     215//                      ContentModelError();
    222216//              }
    223217        }
  • trunk/src/engine.c

    r110 r111  
    1313#include "contentmodel.h"
    1414#include "contentmodel.c"
     15#include "xml_error.h"
    1516
    1617#include <assert.h>
     
    297298inline void ParsingEngine<C>::WF_Error (XML_Constraint errCode) {
    298299        ShowConstraintError(errCode);
    299         Error_action(GetCodeUnitPtr(text_or_markup_start), LengthFrom(text_or_markup_start));
     300        exit(-1);
     301//      Error_action(GetCodeUnitPtr(text_or_markup_start), LengthFrom(text_or_markup_start));
    300302}
    301303       
     
    310312inline void ParsingEngine<C>::Syntax_Error (XML_NonTerminal errNT) {
    311313        ShowSyntaxError(errNT);
    312         Error_action(GetCodeUnitPtr(text_or_markup_start), LengthFrom(text_or_markup_start));
     314        exit(-1);
     315//      Error_action(GetCodeUnitPtr(text_or_markup_start), LengthFrom(text_or_markup_start));
    313316}
    314317       
     
    17441747                                }
    17451748                                else {
    1746                                         printf("Error: Expecting EMPTY content.\n");
    1747                                         exit(-1);
     1749                                        Validity_Error(vErr_elementvalid);
    17481750                                }
    17491751                        }
     
    17691771                        }
    17701772                        if (cre->transition_map[content_state][0]==0) {
    1771                                 printf("Error in content model for elemID %i.\n", elemID);
    1772                                 exit(-1);
     1773                                Validity_Error(vErr_elementvalid);
    17731774                        }
    17741775        }
     
    18081809                }
    18091810                else {
    1810                         printf("Error: Expecting Element Content.\n");
    1811                         exit(-1);
     1811                        Validity_Error(vErr_elementvalid);
    18121812                }
    18131813        } while(1);
     
    18211821                text_or_markup_start = AbsPos();
    18221822                ScanToMarkupStart(); /* '<', '&', or ']' for ']]>' test */
    1823 /*              if (AtChar<C,'<'>(cur())) {
    1824                         text_if_nonnull_action();
    1825                         Parse_Markup<C>();
    1826                 }*/
    18271823                if (at_ElementTag_Start<C>(cur())) {
    18281824                        text_if_nonnull_action();
     
    18811877                        int elemID = Parse_ValidElement();
    18821878                        if (elems[elemID] == 0) {
    1883                                 printf("Error in mixed content: elemID %i unexpected.\n", elemID);
    1884                                 exit(-1);
     1879                                Validity_Error(vErr_elementvalid);
    18851880                        }
    18861881                }
     
    19311926        int final_state = Parse_ValidContent(model_info->rootModel);
    19321927        if (model_info->rootModel->transition_map[final_state][0]==0) {
    1933                 printf("Error in document content.\n");
    1934                 exit(-1);
    1935         }
    1936 }
    1937 
     1928                Validity_Error(vErr_elementvalid);
     1929        }
     1930}
     1931
  • trunk/src/xml_error.h

    r110 r111  
    270270                "Extender  [89]"};
    271271
    272 void ShowConstraintError(XML_Constraint errCode) {
    273         if (errCode < vErr_vc_roottype) {
    274                 fprintf(stderr, "Violation of well-formedness constraint: %s\n", XML_Constraint_Strings[errCode]);
    275         }
    276         else fprintf(stderr, "Violation of validity constraint: %s\n", XML_Constraint_Strings[errCode]);
    277 }
    278 
    279 void ShowSyntaxError(XML_NonTerminal errCode) {
    280         fprintf(stderr, "Syntax error in production: %s\n", XML_NonTerminal_Names[errCode]);
    281 }
     272void ShowConstraintError(XML_Constraint errCode);
     273
     274void ShowSyntaxError(XML_NonTerminal errCode);
     275
     276void NoEncodingError(char * msg);
     277
     278void EncodingError(char * msg, unsigned char * encoding, int lgth);
     279
     280void CharSetValidationError(char * encoding);
     281
     282void IncompleteCodeUnitError();
     283
     284void DeclarationError(int pos);
     285
     286void ImplementationLimitError(char * msg);
     287
     288void ContentModelError();
    282289#endif
  • trunk/src/xmldecl.c

    r100 r111  
    1313#include "byteplex.h"
    1414#include "xmldecl.h"
     15#include "xml_error.h"
    1516#include "multiliteral.h"
    1617#include "bytelex.h"
     
    6162                while (!AtQuote<C>(cur())) buffer_rel_pos+=1;
    6263                if (buffer_rel_pos >= BYTEPLEX_SIZE) {
    63                         printf("Fatal implementation limit - encoding name exceeds BYTEPLEX_SIZE\n");
    64                         exit(-1);
     64                        ImplementationLimitError("Encoding name exceeds BYTEPLEX_SIZE");
    6565                }
    6666        }
    6767}
    68 
    69 void DeclarationError(int pos) {
    70         printf("Parsing error at position %i in XML or Text declaration.\n", pos);
    71         exit(-1);
    72 }
    73 
    7468
    7569template <CodeUnit_Base C>
Note: See TracChangeset for help on using the changeset viewer.