X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginsh%2Fginsh_lexer.ll;h=b5016e55b9373ebb6c3a31550c1d836b216dfce3;hp=c4beae09011eb8e30cfd84285271c759f23f2f6d;hb=eed9352ec69b68db0c5095376746ccf139c5d03a;hpb=e7cc6a764ff67b5885d6633385fac23ccc1dc9a7 diff --git a/ginsh/ginsh_lexer.ll b/ginsh/ginsh_lexer.ll index c4beae09..b5016e55 100644 --- a/ginsh/ginsh_lexer.ll +++ b/ginsh/ginsh_lexer.ll @@ -4,7 +4,7 @@ * This file must be processed with flex. */ /* - * GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2007 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -26,6 +26,8 @@ * Definitions */ +%pointer + %{ #include "config.h" @@ -37,6 +39,9 @@ // Table of all used symbols sym_tab syms; +// Type of symbols to generate (real or complex) +unsigned symboltype = domain::complex; + // lex input function static int ginsh_input(char *buf, int max_size); %} @@ -72,11 +77,15 @@ quit|exit return T_QUIT; warranty return T_WARRANTY; print return T_PRINT; iprint return T_IPRINT; +print_latex return T_PRINTLATEX; +print_csrc return T_PRINTCSRC; time return T_TIME; xyzzy return T_XYZZY; inventory return T_INVENTORY; look return T_LOOK; score return T_SCORE; +complex_symbols return T_COMPLEX_SYMBOLS; +real_symbols return T_REAL_SYMBOLS; /* comparison */ "==" return T_EQUAL; @@ -85,9 +94,6 @@ score return T_SCORE; ">=" return T_GREATEREQ; /* last 1..3 expressions */ -\" return T_QUOTE; -\"\" return T_QUOTE2; -\"\"\" return T_QUOTE3; \% return T_QUOTE; \%\% return T_QUOTE2; \%\%\% return T_QUOTE3; @@ -106,7 +112,11 @@ score return T_SCORE; {A}{AN}* { sym_tab::const_iterator i = syms.find(yytext); if (i == syms.end()) { - yylval = syms[yytext] = *(new symbol(yytext)); + if (symboltype == domain::complex) { + yylval = syms[yytext] = *(new symbol(yytext)); + } else { + yylval = syms[yytext] = *(new symbol(yytext, domain::real)); + } } else yylval = i->second; return T_SYMBOL; @@ -133,7 +143,11 @@ static char *line_ptr; static int ginsh_input(char *buf, int max_size) { int result; +#if defined(YY_CURRENT_BUFFER) + if (YY_CURRENT_BUFFER->yy_is_interactive) { +#else if (yy_current_buffer->yy_is_interactive) { +#endif #ifdef HAVE_LIBREADLINE // Do we need to read a new line? int actual;