1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Copyright (C) 1999-2005, International Business Machines 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Date Name Description 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 03/14/00 aliu Creation. 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 06/27/00 aliu Change from C++ class to C struct 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef PARSEERR_H 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define PARSEERR_H 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \brief C API: Parse Error Information 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The capacity of the context strings in UParseError. 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.0 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum { U_PARSE_CONTEXT_LEN = 16 }; 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A UParseError struct is used to returned detailed information about 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * parsing errors. It is used by ICU parsing engines that parse long 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * rules, patterns, or programs, where the text being parsed is long 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * enough that more information than a UErrorCode is needed to 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * localize the error. 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>The line, offset, and context fields are optional; parsing 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * engines may choose not to use to use them. 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>The preContext and postContext strings include some part of the 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * context surrounding the error. If the source text is "let for=7" 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * and "for" is the error (e.g., because it is a reserved word), then 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * some examples of what a parser might produce are the following: 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <pre> 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * preContext postContext 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * "" "" The parser does not support context 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * "let " "=7" Pre- and post-context only 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * "let " "for=7" Pre- and post-context and error text 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * "" "for" Error text only 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </pre> 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>Examples of engines which use UParseError (or may use it in the 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * future) are Transliterator, RuleBasedBreakIterator, and 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * RegexPattern. 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.0 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef struct UParseError { 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The line on which the error occured. If the parser uses this 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * field, it sets it to the line number of the source text line on 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * which the error appears, which will be be a value >= 1. If the 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * parse does not support line numbers, the value will be <= 0. 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.0 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t line; 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The character offset to the error. If the line field is >= 1, 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * then this is the offset from the start of the line. Otherwise, 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * this is the offset from the start of the text. If the parser 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * does not support this field, it will have a value < 0. 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.0 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t offset; 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Textual context before the error. Null-terminated. The empty 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * string if not supported by parser. 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.0 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar preContext[U_PARSE_CONTEXT_LEN]; 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The error itself and/or textual context after the error. 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Null-terminated. The empty string if not supported by parser. 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.0 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar postContext[U_PARSE_CONTEXT_LEN]; 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} UParseError; 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 93