source: trunk/src/engine.h @ 7

Last change on this file since 7 was 7, checked in by cameron, 11 years ago

Reference extraction; checking ]]> in text; < in atts.

File size: 1.8 KB
Line 
1/*  engine.h - parabix parsing engine
2    Copyright (c) 2007, Robert D. Cameron
3    Licensed to the public under the Open Software License 3.0.
4    Licensed to International Characters, Inc., under the Academic
5    Free License 3.0.
6
7*/
8#ifndef ENGINE_H
9#define ENGINE_H
10
11#include "bitlex.h"
12
13/* A ParsingEngine is the principal class for parsing XML
14data.  */
15
16  class ParsingEngine {
17          public:
18                  ParsingEngine(char * filename);
19                  void ParseContent();
20                  void InitLexer();
21          protected:
22
23
24                  /* Getters for current point/position information. */
25                  int AbsPos() const;
26                  int BufferRelPos() const;
27                  unsigned char * x8dataPtr(int offset) const;
28
29                  /* Position-based character sequence recognizers. */
30
31                  bool AtChar(unsigned char c) const;
32                  bool at_EndTag_Start() const;  // at "</"
33                  bool at_Comment_Start() const;
34                  bool at_DoubleHyphen() const;
35                  bool at_Comment_End() const;
36                  bool at_CDATA_Start() const;
37                  bool at_CDATA_End() const;
38                  bool at_PI_Start() const;
39                  bool at_PI_End() const;
40                  bool at_EqualsDQuote() const;
41                  bool at_EqualsSQuote() const;
42                  bool at_xmlns() const;
43                  bool at_EmptyElementDelim() const;
44                  bool at_ElementTag_Start() const;
45
46                  bool at_EOF () const;
47
48                  /* Mutators that advance the input. */
49                  void Advance(int n);
50                  void ScanTo(int lex_item);
51                  void AdvanceToNewBasePosn(int advance_amt);
52
53
54                  /* Parsing routines. */
55
56                  void Parse_Markup ();
57                  void Parse_Comment ();
58                  void Parse_StartTag ();
59                  void Parse_EndTag ();
60                  void Parse_CDATA ();
61                  void Parse_PI ();
62                  void Parse_Reference ();
63
64                  /* Co-classes */
65                  XML_Buffer *xml_buf;
66                  Lexer *lex;
67               
68                  int buffer_base_pos;
69                  int buffer_rel_pos;
70                  int rel_EOF_pos;
71
72                 /* Parallel data streams for current buffer full of XML data. */
73                  ParallelStreamSet buf;
74
75  };
76
77
78#endif
Note: See TracBrowser for help on using the repository browser.