X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Finterpreter%2Finput.c;h=63ebe075efcdc2aa874e3e8a8d57310e33233328;hb=ce492e0a23aa9741a629e5576547bd28e3c25c90;hp=0bbc280af094ac32c7a8ef89d89bcba25843d422;hpb=51c33894862dfd591d71018a70f4ca3914b17f7b;p=ghc-hetmet.git diff --git a/ghc/interpreter/input.c b/ghc/interpreter/input.c index 0bbc280..63ebe07 100644 --- a/ghc/interpreter/input.c +++ b/ghc/interpreter/input.c @@ -1,4 +1,3 @@ - /* -------------------------------------------------------------------------- * Input functions, lexical analysis parsing etc... * @@ -9,17 +8,15 @@ * included in the distribution. * * $RCSfile: input.c,v $ - * $Revision: 1.18 $ - * $Date: 1999/12/10 15:59:45 $ + * $Revision: 1.30 $ + * $Date: 2000/04/25 17:43:49 $ * ------------------------------------------------------------------------*/ -#include "prelude.h" +#include "hugsbasictypes.h" #include "storage.h" -#include "backend.h" #include "connect.h" -#include "command.h" #include "errors.h" -#include "link.h" + #include #if HAVE_GETDELIM_H #include "getdelim.h" @@ -29,11 +26,11 @@ #include #endif -#if IS_WIN32 || HUGS_FOR_WINDOWS +#if IS_WIN32 #undef IN #endif -#if HAVE_LIBREADLINE && HAVE_READLINE_READLINE_H && HAVE_READLINE_HISTORY_H +#if HAVE_READLINE_LIBS && HAVE_READLINE_HEADERS #define USE_READLINE 1 #else #define USE_READLINE 0 @@ -80,51 +77,51 @@ String preprocessor = 0; * Local function prototypes: * ------------------------------------------------------------------------*/ -static Void local initCharTab Args((Void)); -static Void local fileInput Args((String,Long)); -static Bool local literateMode Args((String)); -static Bool local linecmp Args((String,String)); -static Int local nextLine Args((Void)); -static Void local skip Args((Void)); -static Void local thisLineIs Args((Int)); -static Void local newlineSkip Args((Void)); -static Void local closeAnyInput Args((Void)); - - Int yyparse Args((Void)); /* can't stop yacc making this */ +static Void local initCharTab ( Void ); +static Void local fileInput ( String,Long ); +static Bool local literateMode ( String ); +static Bool local linecmp ( String,String ); +static Int local nextLine ( Void ); +static Void local skip ( Void ); +static Void local thisLineIs ( Int ); +static Void local newlineSkip ( Void ); +static Void local closeAnyInput ( Void ); + + Int yyparse ( Void ); /* can't stop yacc making this */ /* public, but don't advertise */ /* it in a header file. */ -static Void local endToken Args((Void)); -static Text local readOperator Args((Void)); -static Text local readIdent Args((Void)); -static Cell local readRadixNumber Args((Int)); -static Cell local readNumber Args((Void)); -static Cell local readChar Args((Void)); -static Cell local readString Args((Void)); -static Void local saveStrChr Args((Char)); -static Cell local readAChar Args((Bool)); +static Void local endToken ( Void ); +static Text local readOperator ( Void ); +static Text local readIdent ( Void ); +static Cell local readRadixNumber ( Int ); +static Cell local readNumber ( Void ); +static Cell local readChar ( Void ); +static Cell local readString ( Void ); +static Void local saveStrChr ( Char ); +static Cell local readAChar ( Bool ); -static Bool local lazyReadMatches Args((String)); -static Cell local readEscapeChar Args((Bool)); -static Void local skipGap Args((Void)); -static Cell local readCtrlChar Args((Void)); -static Cell local readOctChar Args((Void)); -static Cell local readHexChar Args((Void)); -static Int local readHexDigit Args((Char)); -static Cell local readDecChar Args((Void)); +static Bool local lazyReadMatches ( String ); +static Cell local readEscapeChar ( Bool ); +static Void local skipGap ( Void ); +static Cell local readCtrlChar ( Void ); +static Cell local readOctChar ( Void ); +static Cell local readHexChar ( Void ); +static Int local readHexDigit ( Char ); +static Cell local readDecChar ( Void ); -static Void local goOffside Args((Int)); -static Void local unOffside Args((Void)); -static Bool local canUnOffside Args((Void)); +static Void local goOffside ( Int ); +static Void local unOffside ( Void ); +static Bool local canUnOffside ( Void ); -static Void local skipWhitespace Args((Void)); -static Int local yylex Args((Void)); -static Int local repeatLast Args((Void)); +static Void local skipWhitespace ( Void ); +static Int local yylex ( Void ); +static Int local repeatLast ( Void ); -static Cell local parseInput Args((Int)); +static Cell local parseInput ( Int ); -static Bool local doesNotExceed Args((String,Int,Int)); -static Int local stringToInt Args((String,Int)); +static Bool local doesNotExceed ( String,Int,Int ); +static Int local stringToInt ( String,Int ); /* -------------------------------------------------------------------------- @@ -135,6 +132,7 @@ static Text textCase, textOfK, textData, textType, textIf; static Text textThen, textElse, textWhere, textLet, textIn; static Text textInfix, textInfixl, textInfixr, textForeign, textNewtype; static Text textDefault, textDeriving, textDo, textClass, textInstance; +static Text textMdo; #if IPARAM static Text textWith, textDlet; #endif @@ -145,7 +143,7 @@ static Text textBang, textDot, textAll, textImplies; static Text textWildcard; static Text textModule, textImport, textInterface, textInstImport; -static Text textHiding, textQualified, textAsMod; +static Text textHiding, textQualified, textAsMod, textPrivileged; static Text textExport, textDynamic, textUUExport; static Text textUnsafe, textUUAll, textUUUsage; @@ -153,6 +151,7 @@ Text textCcall; /* ccall */ Text textStdcall; /* stdcall */ Text textNum; /* Num */ +Text textPrelPrim; /* PrelPrim */ Text textPrelude; /* Prelude */ Text textPlus; /* (+) */ @@ -563,19 +562,19 @@ static Void local skip() { /* move forward one char in input */ closeAnyInput(); } else if (reading==KEYBOARD) { - allowBreak(); + /* allowBreak(); */ if (c0=='\n') c1 = EOF; else { c1 = nextConsoleChar(); -#if IS_WIN32 && !HUGS_FOR_WINDOWS +#if IS_WIN32 Sleep(0); #endif /* On Win32, hitting ctrl-C causes the next getchar to * fail - returning "-1" to indicate an error. * This is one of the rare cases where "-1" does not mean EOF. */ - if (EOF == c1 && (!feof(stdin) || broken==TRUE)) { + if (EOF == c1 && (!feof(stdin) /* || broken==TRUE */)) { c1 = ' '; } } @@ -1217,7 +1216,7 @@ String readFilename() { /* Read filename from input (if any)*/ startToken(); while (c0!=EOF && !isIn(c0,ZPACE)) { - if (c0=='"') { + if (c0=='"') { skip(); while (c0!=EOF && c0!='\"') { Cell c = readAChar(TRUE); @@ -1264,7 +1263,7 @@ String readLine() { /* Read command line from input */ * - Otherwise, if no `{' follows the keywords WHERE/LET or OF, a SOFT `{' * is inserted with the column number of the first token after the * WHERE/LET/OF keyword. - * - When a soft indentation is uppermost on the indetation stack with + * - When a soft indentation is uppermost on the indentation stack with * column col' we insert: * `}' in front of token with column"); + textPrelPrim = findText("PrelPrim"); textPrelude = findText("Prelude"); textNum = findText("Num"); textModule = findText("module");