{-# LANGUAGE PatternSynonyms #-}
module Swarm.Language.Syntax (
Const (..),
allConst,
ConstInfo (..),
ConstDoc (..),
ConstMeta (..),
MBinAssoc (..),
MUnAssoc (..),
constInfo,
arity,
isCmd,
isUserFunc,
isOperator,
isBuiltinFunction,
isTangible,
isLong,
maxSniffRange,
maxScoutRange,
maxStrideRange,
maxPathRange,
globalMaxVolume,
SrcLoc (..),
srcLocStartsBefore,
srcLocEndsBefore,
noLoc,
CommentType (..),
CommentSituation (..),
isStandalone,
Comment (..),
Comments (..),
beforeComments,
afterComments,
Syntax' (..),
sLoc,
sTerm,
sType,
sComments,
Syntax,
TSyntax,
USyntax,
pattern Syntax,
pattern CSyntax,
Located (..),
LocVar,
LetSyntax (..),
pattern STerm,
pattern TRequirements,
pattern TPair,
pattern TLam,
pattern TApp,
pattern (:$:),
pattern TLet,
pattern TTydef,
pattern TBind,
pattern TDelay,
pattern TRcd,
pattern TProj,
pattern TAnnotate,
pattern TSuspend,
pattern TParens,
Var,
Term' (..),
Term,
TTerm,
UTerm,
mkOp,
mkOp',
unfoldApps,
mkTuple,
unTuple,
erase,
eraseS,
freeVarsS,
freeVarsT,
freeVarsV,
mapFreeS,
locVarToSyntax',
asTree,
measureAstSize,
) where
import Swarm.Language.Syntax.AST
import Swarm.Language.Syntax.Comments
import Swarm.Language.Syntax.Constants
import Swarm.Language.Syntax.Loc
import Swarm.Language.Syntax.Pattern
import Swarm.Language.Syntax.Pretty ()
import Swarm.Language.Syntax.Util
import Swarm.Language.Types