source: trunk/src/engine.h @ 35

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

Refactoring byte-space lexical recognizers => bytelex.h

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// 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 * cur() const;
44
45                  bool at_EOF () const;
46
47                  /* Mutators that advance the input. */
48                  void Advance(int n);
49                  void ASCII_ScanTo(int lex_item);
50                  void ScanTo(int lex_item);
51                  void AdvanceToNewBasePosn(int advance_amt);
52
53                  /* Parsing routines. */
54
55                  void Parse_Markup ();
56                  void Parse_Comment ();
57                  void Parse_StartTag ();
58                  void Parse_EndTag ();
59                  void Parse_CDATA ();
60                  void Parse_PI ();
61                  void Parse_Reference ();
62
63                  /* Co-classes */
64                  XML_Buffer *xml_buf;
65                  Lexer *lex;
66               
67                  int buffer_base_pos;
68                  int buffer_rel_pos;
69                  int avail_code_units;
70
71                 /* Parallel data streams for current buffer full of XML data. */
72                  ParallelStreamSet buf;
73
74  };
75
76
77#endif
Note: See TracBrowser for help on using the repository browser.