X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginsh%2Fginsh_lexer.ll;h=15185d66a56b85c86813959c29f01f0871f4ef94;hp=0a0a7f484b38586bc388c435e0657537abc1a0ec;hb=d7d0bcda91b647db9588f3aa1a465f1570d088c4;hpb=dff5209ee7cc816583f6abe27a4e784e34f0a664 diff --git a/ginsh/ginsh_lexer.ll b/ginsh/ginsh_lexer.ll index 0a0a7f48..15185d66 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-2004 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 @@ -37,6 +37,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); %} @@ -79,6 +82,8 @@ 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; @@ -87,9 +92,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; @@ -108,7 +110,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; @@ -135,7 +141,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;