module Language.CSharp.Parser(
parser
, pCompilationUnit
, pUsing
, module Language.CSharp.Parser.Utility
, module Language.CSharp.Parser.Declaration
, module Language.CSharp.Parser.Statement
, module Language.CSharp.Parser.Expression
, module Language.CSharp.Parser.Type
, module Language.CSharp.Parser.Attribute
) where
import Text.Parsec hiding (Empty)
import Language.CSharp.Lexer
import Language.CSharp.Syntax
import Language.CSharp.Parser.Utility
import Language.CSharp.Parser.Declaration
import Language.CSharp.Parser.Statement
import Language.CSharp.Parser.Expression
import Language.CSharp.Parser.Type
import Language.CSharp.Parser.Attribute
parser :: String
-> [Positioned Token]
-> Either ParseError CompilationUnit
parser = parse pCompilationUnit
pCompilationUnit :: P CompilationUnit
pCompilationUnit = CompilationUnit <$> many pUsing <*> many pDeclaration <* eof
pUsing :: P Using
pUsing = do
pToken TKWusing
isStatic <- option False (True <$ pToken TKWstatic)
name <- pName
pSemi
return $ Using name isStatic