X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_parser.h;h=b42bb3e8fdf8a1d06b4347b56834fd63d071d6aa;hb=d359dd8fca52c4f0100f7cf4bf636113c5c4e49f;hp=a11b016e47d962d7c79c25c53c3ae0f7ec0afa60;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/src/mathed/math_parser.h b/src/mathed/math_parser.h index a11b016e47..b42bb3e8fd 100644 --- a/src/mathed/math_parser.h +++ b/src/mathed/math_parser.h @@ -2,13 +2,13 @@ /* * File: math_parser.h * Purpose: Declaration of parsing utilities for mathed - * Author: Alejandro Aguilar Sierra + * Author: Alejandro Aguilar Sierra * Created: January 1996 * Description: Parse LaTeX2e math mode code. * * Dependencies: Xlib, XForms * - * Copyright: (c) 1996, Alejandro Aguilar Sierra + * Copyright: 1996, Alejandro Aguilar Sierra * * Version: 0.8beta. * @@ -16,81 +16,55 @@ * the GNU General Public Licence version 2 or later. */ -#ifndef __MATH_PARSER__ -#define __MATH_PARSER__ +#ifndef MATH_PARSER_H +#define MATH_PARSER_H #ifdef __GNUG__ #pragma interface #endif -#include "symbol_def.h" +#include "LString.h" + +class MathAtom; +class MathArray; +class LyXLex; -/// -#define LM_TK_OPEN '{' -/// -#define LM_TK_CLOSE '}' /// -enum MathTokenEnum -{ - LM_TK_BOP = 256, - LM_TK_ALPHA, - LM_TK_STR, - LM_TK_SYM, - LM_TK_FRAC, - LM_TK_SQRT, - LM_TK_BEGIN, - LM_TK_END, - LM_TK_NEWLINE, - LM_TK_UNDEF, - LM_TK_FONT, - LM_TK_LEFT, - LM_TK_RIGHT, - LM_TK_ACCENT, - LM_TK_WIDE, - LM_TK_FUNC, - LM_TK_FUNCLIM, - LM_TK_BIGSYM, - LM_TK_LABEL, - LM_TK_NONUM, - LM_TK_SPACE, - LM_TK_DOTS, - LM_TK_LIMIT, - LM_TK_STY, - LM_TK_PMOD, - LM_TK_BMOD, - LM_TK_MACRO, - LM_TK_SPECIAL, - LM_TK_ARGUMENT, - LM_TK_NEWCOMMAND, - LM_TK_STACK +struct latexkeys { + /// name of the macro or primitive + string name; + /// name of a inset that handles that macro + string inset; + /// position of the ting in a font + string draw; + /// operator/..., fontname e + string extra; + /// how is this called as XML entity? + string xmlname; }; -/// -struct latexkeys { char const* name; short token; int id; }; -/// -struct latexkeys * -in_word_set (register char const *str, register int len); +/// check whether this is a well-known (La)TeX macro or primitive +latexkeys const * in_word_set(string const & str); -/// -struct latexkeys *lm_get_key(int index); - -/// -struct latexkeys *lm_get_key_by_id(int id, short tc=LM_TK_SYM); +/// parse formula from a string +bool mathed_parse_normal(MathAtom &, string const &); +/// ... a stream +bool mathed_parse_normal(MathAtom &, std::istream &); +/// ... the LyX lexxer +bool mathed_parse_normal(MathAtom &, LyXLex &); -/// -typedef union{ - /// -unsigned char c; - /// -char *s; - /// -int i; - /// -latexkeys *l; -} YYSTYPE; +/// parse a macro definition from a string, enter it into the macro table +bool mathed_parse_macro(string &, string const &); +/// ... a stream +bool mathed_parse_macro(string &, std::istream &); +/// ... the LyX lexxer +bool mathed_parse_macro(string &, LyXLex &); -extern YYSTYPE yylval; +/// parse a single cell from a string +void mathed_parse_cell(MathArray & ar, string const &); +/// ... a stream +void mathed_parse_cell(MathArray & ar, std::istream &); #endif