version 1.3, 2001/05/03 13:41:07 |
version 1.4, 2001/05/23 12:34:45 |
|
|
|
#ifndef LOWPARSE_H |
|
#define LOWPARSE_H |
|
|
/* $OpenPackages$ */ |
/* $OpenPackages$ */ |
/* $OpenBSD$ */ |
/* $OpenBSD$ */ |
|
|
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
*/ |
#ifndef LOWPARSE_H |
/* low-level parsing module: |
#define LOWPARSE_H |
* select input stream to parse, and do high-speed processing of |
extern void Parse_FromFile(char *, FILE *); |
* lines: skipping comments, handling continuation lines, or skipping |
extern Boolean Parse_NextFile(void); |
* over dead conditionals. |
|
* |
|
* Basic template: |
|
* |
|
* Parse_Fromxxx(source); |
|
* do { |
|
* while ((line = Parse_ReadNormalLine(&buf)) != NULL) { |
|
* handle line, use Parse_Fromxxx to push includes, |
|
* Parse_ReadNextConditional to get over non-conditional lines. |
|
* or Parse_ReadUnparsedLine to handle special cases manually. |
|
* } |
|
* } while (Parse_NextFile()); |
|
*/ |
|
|
|
/* Initialization and cleanup */ |
#ifdef CLEANUP |
#ifdef CLEANUP |
extern void LowParse_Init(void); |
extern void LowParse_Init(void); |
extern void LowParse_End(void); |
extern void LowParse_End(void); |
|
#else |
|
#define LowParse_Init() |
|
#define LowParse_End() |
#endif |
#endif |
extern char *ParseReadLine(Buffer); |
|
extern char *ParseSkipGetLine(Buffer); |
/* Selection of input stream */ |
extern char *ParseGetLine(Buffer, const char *); |
/* Parse_FromFile(filename, filehandle); |
extern void Finish_Errors(void); |
* Push given filehandle on the input stack, using filename for diagnostic |
|
* messages. The module assumes ownership of the filehandle and of |
|
* the filename: provide copies if necessary. */ |
|
extern void Parse_FromFile(const char *, FILE *); |
|
/* Parse_FromString(str, lineno); |
|
* Push expanded string str on the input stack, assuming it starts at |
|
* lineno in the current file. This is used to reparse .for loops |
|
* after the variable has been expanded, hence no need to respecify |
|
* the filename. The module assumes ownership of the string: provide a |
|
* copy if necessary. */ |
|
extern void Parse_FromString(char *, unsigned long); |
|
|
|
/* Error reporting, and tagging of read structures. */ |
|
/* lineno = Parse_Getlineno(); |
|
* Returns the current lineno. */ |
|
extern unsigned long Parse_Getlineno(void); |
|
/* name = Parse_Getfilename(); |
|
* Returns the current filename. Safe to keep without copying. */ |
|
extern const char *Parse_Getfilename(void); |
|
|
|
/* continue = Parse_NextFile(); |
|
* Advance parsing to the next file in the input stack. Returns true |
|
* if there is parsing left to do. |
|
*/ |
|
extern bool Parse_NextFile(void); |
|
|
|
|
|
/* line = Parse_ReadNormalLine(buf); |
|
* Reads next line into buffer and return its contents. Handles line |
|
* continuation, remove extra blanks, and skip trivial comments. tabs at |
|
* beginning of line are left alone, to be able to recognize target |
|
* lines. */ |
|
extern char *Parse_ReadNormalLine(Buffer); |
|
|
|
/* line = ParseReadNextConditionalLine(buf); |
|
* Returns next conditional line, skipping over everything else. */ |
|
extern char *Parse_ReadNextConditionalLine(Buffer); |
|
/* line = ParseReadUnparsedLine(buf, type); |
|
* Reads line without parsing anything beyond continuations. |
|
* Handle special cases such as conditional lines, or lines that |
|
* need a reparse (loops). */ |
|
extern char *Parse_ReadUnparsedLine(Buffer, const char *); |
|
/* Parse_ReportErrors(); |
|
* At end of parsing, report on fatal errors. |
|
*/ |
|
extern void Parse_ReportErrors(void); |
#endif |
#endif |