X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginsh%2Fginsh_lexer.ll;h=7f78a2dd3f97ec72cd0f0d4992c8047cff825f34;hp=42a432b8afbb0c3ed257df0c1a05aa879bc7a628;hb=a43a2fe7d9df31529647c66dcfb9cad544ffd369;hpb=a5928fbda28b1b7f5b5939a9d49754660a0d546c diff --git a/ginsh/ginsh_lexer.ll b/ginsh/ginsh_lexer.ll index 42a432b8..7f78a2dd 100644 --- a/ginsh/ginsh_lexer.ll +++ b/ginsh/ginsh_lexer.ll @@ -1,9 +1,10 @@ /** @file ginsh_lexer.ll * * Lexical analyzer definition for ginsh. - * This file must be processed with flex. - * - * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany + * This file must be processed with flex. */ + +/* + * GiNaC Copyright (C) 1999-2000 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 @@ -28,16 +29,7 @@ %{ #include "config.h" -#include -extern "C" { -#include -#include -} -#include - -#include #include "ginsh.h" - #include "ginsh_parser.h" #define YY_INPUT(buf, result, max_size) (result = ginsh_input(buf, max_size)) @@ -68,7 +60,7 @@ AN [0-9a-zA-Z_] /* special values */ Pi yylval = Pi; return T_LITERAL; -EulerGamma yylval = EulerGamma; return T_LITERAL; +Euler yylval = Euler; return T_LITERAL; Catalan yylval = Catalan; return T_LITERAL; FAIL yylval = *new fail(); return T_LITERAL; I yylval = I; return T_NUMBER; @@ -76,7 +68,10 @@ Digits yylval = (long)Digits; return T_DIGITS; /* keywords */ quit|exit return T_QUIT; +warranty return T_WARRANTY; print return T_PRINT; +read return T_READ; +write return T_WRITE; time return T_TIME; xyzzy return T_XYZZY; inventory return T_INVENTORY; @@ -131,9 +126,9 @@ static int ginsh_input(char *buf, int max_size) { int result; if (yy_current_buffer->yy_is_interactive) { - int actual; - +#ifdef HAVE_LIBREADLINE // Do we need to read a new line? + int actual; if (line_length == 0) { // Free old line @@ -164,7 +159,17 @@ static int ginsh_input(char *buf, int max_size) line_length -= actual; line_ptr += actual; result = actual; - +#else + printf("> "); fflush(stdout); + int c = '*', n; + for (n = 0; n < max_size && (c = getc(yyin)) != EOF && c != '\n'; ++n) + buf[n] = (char)c; + if (c == '\n') + buf[n++] = (char)c; + if (c == EOF && ferror(yyin)) + YY_FATAL_ERROR("input in flex scanner failed"); + result = n; +#endif } else if (((result = fread(buf, 1, max_size, yyin)) == 0) && ferror(yyin)) YY_FATAL_ERROR("input in flex scanner failed");