source: trunk/src/engine.h @ 12

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

Text declarations for external parsed entities.

File size: 2.5 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// Information about the character set encoding, XML version and
14// standalone status of an XML entity.
15struct Entity_Declaration_Info
16  {bool has_ByteOrderMark;
17   bool has_version_decl;
18   bool has_encoding_decl;
19   bool has_standalone_decl;
20   int version;
21   int encoding_start_pos;
22   int encoding_end_pos;
23   bool standalone;
24};
25
26
27/* A ParsingEngine is the principal class for parsing XML
28data.  */
29
30  class ParsingEngine {
31          public:
32                  ParsingEngine(char * filename);
33                  void ParseContent();
34                  void InitLexer();
35                  void ReadXmlInfo (Entity_Declaration_Info& xml_info);
36                  void ReadTextDeclaration (Entity_Declaration_Info& xml_info);
37          protected:
38
39
40                  /* Getters for current point/position information. */
41                  int AbsPos() const;
42                  int BufferRelPos() const;
43                  unsigned char * x8dataPtr(int offset) const;
44
45                  /* Position-based character sequence recognizers. */
46
47                  bool AtChar(unsigned char c) const;
48                  bool S_at(int offset) const;
49                  bool at_EndTag_Start() const;  // at "</"
50                  bool at_Comment_Start() const;
51                  bool at_DoubleHyphen() const;
52                  bool at_Comment_End() const;
53                  bool at_CDATA_Start() const;
54                  bool at_CDATA_End() const;
55                  bool at_PI_Start() const;
56                  bool at_PI_End() const;
57                  bool at_EqualsDQuote() const;
58                  bool at_EqualsSQuote() const;
59                  bool at_xmlns() const;
60                  bool at_EmptyElementDelim() const;
61                  bool at_ElementTag_Start() const;
62                  bool at_XmlDecl_start() const;
63                  bool at_version() const;
64                  bool at_1_0() const;
65                  bool at_1_1() const;
66                  bool at_encoding() const;
67                  bool at_standalone() const;
68                  bool at_yes() const;
69                  bool at_no() const;
70
71                  bool at_EOF () const;
72
73                  /* Mutators that advance the input. */
74                  void Advance(int n);
75                  void ScanTo(int lex_item);
76                  void AdvanceToNewBasePosn(int advance_amt);
77
78                  /* Parsing routines. */
79
80                  void Parse_Markup ();
81                  void Parse_Comment ();
82                  void Parse_StartTag ();
83                  void Parse_EndTag ();
84                  void Parse_CDATA ();
85                  void Parse_PI ();
86                  void Parse_Reference ();
87
88                  /* Co-classes */
89                  XML_Buffer *xml_buf;
90                  Lexer *lex;
91               
92                  int buffer_base_pos;
93                  int buffer_rel_pos;
94                  int rel_EOF_pos;
95
96                 /* Parallel data streams for current buffer full of XML data. */
97                  ParallelStreamSet buf;
98
99  };
100
101
102#endif
Note: See TracBrowser for help on using the repository browser.