]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/mathml_editor/src/TPushParser.hh
A first partial implementation of deleting is introduced. The user might
[helm.git] / helm / DEVEL / mathml_editor / src / TPushParser.hh
1
2 #ifndef __TPushParser_hh__
3 #define __TPushParser_hh__
4
5 #include <list>
6 #include <stack>
7 #include "TToken.hh"
8 #include "APushParser.hh"
9 #include "TDictionary.hh"
10 #include "TDocument.hh"
11 #include "TNode.hh"
12
13 class TPushParser : public APushParser
14 {
15 public:
16   TPushParser(const class TDictionary&);
17   TPushParser(const class TDictionary&, class TListener&);
18   virtual ~TPushParser();
19
20   virtual void push(const TToken&);
21   virtual void setCursor(const std::string&);
22
23   TDocument document(void) const { return doc; }
24
25 private:
26   void init(void);
27
28   std::string PRIME(void) const;
29   bool isPrimes(const TNode&) const;
30   
31   void gdelete_prev(void);
32
33   void do_begin(void);
34   void do_end(void);
35   void do_shift(void);
36   void do_align(void);
37   void do_eol(void);
38   void do_parameter(const std::string&);
39   void do_superscript(void);
40   void do_subscript(void);
41   void do_space(const std::string&);
42   void do_letter(const std::string&);
43   void do_digit(const std::string&);
44   void do_other(const std::string&);
45   void do_active(const std::string&);
46   void do_comment(void);
47   void do_control(const std::string&);
48   void do_gdelete(void);
49
50   void do_cr(void);
51   void do_apostrophe(void);
52   void advance(const TNode&);
53
54   void process(const TToken&);
55
56   struct Frame
57   {
58     Frame(const TDictionary::Entry& e) : entry(e), pos(0) { };
59     const TDictionary::Entry& entry;
60     unsigned pos;
61   };
62
63   std::stack<Frame> frames;
64   //std::list<TToken> buffer;
65   unsigned  nextId;
66   TDocument doc;
67   TNode     cursor;
68
69   const class TDictionary& dictionary;
70   class TListener* listener;
71 };
72
73 #endif // __TPushParser_hh__