X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fmathml_editor%2Fsrc%2FTPushParser.hh;fp=helm%2FDEVEL%2Fmathml_editor%2Fsrc%2FTPushParser.hh;h=bb659c3d20ee37ee3536820333d7d68870533834;hb=89262281b6e83bd2321150f81f1a0583645eb0c8;hp=0000000000000000000000000000000000000000;hpb=b1fb6b8e1767d775bc452303629e95941d142bea;p=helm.git diff --git a/helm/DEVEL/mathml_editor/src/TPushParser.hh b/helm/DEVEL/mathml_editor/src/TPushParser.hh new file mode 100644 index 000000000..bb659c3d2 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TPushParser.hh @@ -0,0 +1,70 @@ + +#ifndef __TPushParser_hh__ +#define __TPushParser_hh__ + +#include +#include +#include "TToken.hh" +#include "APushParser.hh" +#include "TDictionary.hh" +#include "TDocument.hh" +#include "TNode.hh" + +class TPushParser : public APushParser +{ +public: + TPushParser(const class TDictionary&); + TPushParser(const class TDictionary&, class TListener&); + virtual ~TPushParser(); + + virtual void push(const TToken&); + virtual void setCursor(const std::string&); + + TDocument document(void) const { return doc; } + +private: + void init(void); + + std::string PRIME(void) const; + bool isPrimes(const TNode&) const; + + void do_begin(void); + void do_end(void); + void do_shift(void); + void do_align(void); + void do_eol(void); + void do_parameter(const std::string&); + void do_superscript(void); + void do_subscript(void); + void do_space(const std::string&); + void do_letter(const std::string&); + void do_digit(const std::string&); + void do_other(const std::string&); + void do_active(const std::string&); + void do_comment(void); + void do_control(const std::string&); + + void do_cr(void); + void do_apostrophe(void); + void advance(const TNode&); + + void process(const TToken&); + + struct Frame + { + Frame(const TDictionary::Entry& e) : entry(e), pos(0) { }; + const TDictionary::Entry& entry; + unsigned pos; + }; + + std::stack frames; + std::list buffer; + unsigned nextId; + TDocument doc; + TNode cursor; + + const class TDictionary& dictionary; + class TListener* listener; +}; + +#endif // __TPushParser_hh__