+/* This file is part of EdiTeX, an editor of mathematical
+ * expressions based on TeX syntax.
+ *
+ * Copyright (C) 2002-2003 Luca Padovani <lpadovan@cs.unibo.it>,
+ * 2003 Paolo Marinelli <pmarinel@cs.unibo.it>.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * For more information, please visit the project's home page
+ * http://helm.cs.unibo.it/editex/
+ * or send an email to <lpadovan@cs.unibo.it>
+ */
#ifndef __TPushParser_hh__
#define __TPushParser_hh__
virtual void reset(void);
virtual void push(const TToken&);
- virtual std::string drop(void);
+ virtual std::string drop(bool);
virtual void setCursorHint(const std::string&);
+ virtual bool hideCursor(void);
+ virtual bool showCursor(void);
virtual bool thaw(void);
DOM::Document document(void) const { return doc.document().cloneNode(true); }
private:
- 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 init(void);
+ TNode PRIME(void);
+ bool isPrimes(const TNode&) const;
- void gdelete_prev_token(void);
- void gdelete_prev_script(void);
- void gdelete_prev_group(void);
- void gdelete_prev_macro(void);
- void gdelete_prev(void);
+ bool do_begin(void);
+ bool do_end(void);
+ bool do_shift(void);
+ bool do_align(void);
+ bool do_eol(void);
+ bool do_parameter(const std::string&);
+ bool do_superscript(void);
+ bool do_subscript(void);
+ bool do_ignorablespace(const std::string&);
+ bool do_space(const std::string&);
+ bool do_letter(const std::string&);
+ bool do_digit(const std::string&);
+ bool do_other(const std::string&);
+ bool do_active(const std::string&);
+ bool do_comment(void);
+ bool do_control(const std::string&);
+ std::string drop_prev_token(bool);
+ std::string drop_prev_script(bool);
+ std::string drop_prev_group(bool);
+ std::string drop_prev_macro(bool);
+ std::string drop_prev(bool);
void rgreplace_father(void);
+ std::string do_drop_script(bool);
+ std::string do_drop_macro(bool);
+ std::string do_drop_groupId(bool);
+ std::string do_drop_phantom_group(bool);
+ std::string do_drop(bool);
- void do_gdelete_script(void);
- void do_gdelete_macro(void);
- void do_gdelete_groupId(void);
- void do_gdelete_phantom_group(void);
- void do_gdelete(void);
-
- void do_cr(void);
- void do_apostrophe(void);
+ bool do_cr(void);
+ bool do_apostrophe(void);
void advance(const TNode&);
+ bool correctBrace(void);
- void process(const TToken&);
+ bool process(const TToken&);
struct Frame
{
unsigned nextId;
TDocument doc;
TNode cursor;
+ unsigned hiddenCursor;
const class TDictionary& dictionary;
};