packages feed

egison-3.9.0: hs-src/Language/Egison/ParserNonS2.y

{
{-# OPTIONS -w #-}
module Language.Egison.ParserNonS2
       (
       -- * Parse a string
         readTopExprs
       , readTopExpr
       , readExprs
       , readExpr
       , parseTopExprs
       , parseTopExpr
       , parseExprs
       , parseExpr
       -- * Parse a file
       , loadFile
       , loadLibraryFile
       ) where

import Language.Egison.Lexer
import Language.Egison.Types

}

%name parse
%tokentype { Token }
%monad { Alex }
%lexer { lexwrap } { Token _ TokenEOF }
-- Without this we get a type error
%error { happyError }

%right let in
%left '<' '>' '=' "<=" ">="
%left '+' '-'
%left '*' '/'

%token
      int      { Token _ (TokenInt $$) }
      var      { Token _ (TokenVar $$) }
      '='      { Token _ TokenEq }
      '<'      { Token _ TokenLT }
      '>'      { Token _ TokenGT }
      "<="     { Token _ TokenLE }
      ">="     { Token _ TokenGE }
      '+'      { Token _ TokenPlus }
      '-'      { Token _ TokenMinus }
      '*'      { Token _ TokenAsterisk }
      '/'      { Token _ TokenDiv }
      '('      { Token _ TokenLParen }
      ')'      { Token _ TokenRParen }
      '['      { Token _ TokenLBracket }
      ']'      { Token _ TokenRBracket }

%%

EgisonExpr :
    int      { IntegerExpr $1 }

{
lexwrap :: (Token -> Alex a) -> Alex a
lexwrap = (alexMonadScan' >>=)

happyError :: Token -> Alex a
happyError (Token p t) =
  alexError' p ("parse error at token '" ++ show t ++ "'")

readTopExprs :: String -> EgisonM [EgisonTopExpr]
readTopExprs = undefined

readTopExpr :: String -> EgisonM EgisonTopExpr
readTopExpr = undefined

readExprs :: String -> EgisonM [EgisonExpr]
readExprs = undefined

readExpr :: String -> EgisonM EgisonExpr
readExpr = undefined

parseTopExprs :: String -> Either EgisonError [EgisonTopExpr]
parseTopExprs = undefined

parseTopExpr :: String -> Either EgisonError EgisonTopExpr
parseTopExpr = undefined

parseExprs :: String -> Either EgisonError [EgisonExpr]
parseExprs = undefined

parseExpr :: String -> Either EgisonError EgisonExpr
parseExpr = undefined
-- parseExpr = runAlex' parse

loadFile :: FilePath -> EgisonM [EgisonTopExpr]
loadFile = undefined

loadLibraryFile :: FilePath -> EgisonM [EgisonTopExpr]
loadLibraryFile = undefined
}