module Language.Docker.Lexer where
import Text.Parsec.Language (emptyDef)
import Text.Parsec.String (Parser)
import qualified Text.Parsec.Token as Token
lexer :: Token.TokenParser ()
lexer = Token.makeTokenParser style
where
names =
[ "FROM"
, "ADD"
, "RUN"
, "WORKDIR"
, "EXPOSE"
, "VOLUME"
, "ENTRYPOINT"
, "MAINTAINER"
, "ENV"
, "LABEL"
, "USER"
, "SHELL"
, "STOPSIGNAL"
, "CMD"
, "ONBUILD"
, "ARG"
, "HEALTHCHECK"
]
style = emptyDef {Token.caseSensitive = False, Token.reservedNames = names}
reserved :: String -> Parser ()
reserved = Token.reserved lexer
reservedOp :: String -> Parser ()
reservedOp = Token.reservedOp lexer
natural :: Parser Integer
natural = Token.natural lexer
commaSep :: Parser a -> Parser [a]
commaSep = Token.commaSep lexer
stringLiteral :: Parser String
stringLiteral = Token.stringLiteral lexer
brackets :: Parser a -> Parser a
brackets = Token.brackets lexer
identifier :: Parser String
identifier = Token.identifier lexer
lexeme :: Parser a -> Parser a
lexeme = Token.lexeme lexer