hets -- a heterogenous Specification (CASL) tool setContentsIndex
HasCASL.ParseTerm
Portability portable
Stability provisional
Maintainer hets@tzi.de
Contents
key sign tokens
parser for bracketed lists
kinds
type variables
parse special identifier tokens
type patterns
types
varDecls and genVarDecls
patterns
terms
Description
parser for HasCASL kinds, types, terms, patterns and equations
Synopsis
plusT :: AParser Token
minusT :: AParser Token
colT :: AParser Token
qColonT :: AParser Token
bracketParser :: AParser a -> AParser Token -> AParser Token -> AParser Token -> ([a] -> [Pos] -> b) -> AParser b
mkBrackets :: AParser a -> ([a] -> [Pos] -> b) -> AParser b
mkBraces :: AParser a -> ([a] -> [Pos] -> b) -> AParser b
parseClassId :: AParser Kind
parseSimpleKind :: AParser Kind
parseExtKind :: AParser Kind
arrowKind :: Kind -> AParser Kind
kind :: AParser Kind
extKind :: AParser Kind
extVar :: AParser Id -> AParser (Id, Variance, Pos)
typeVars :: AParser [TypeArg]
allIsInVar :: [(TypeId, Variance, Pos)] -> Bool
typeKind :: [(TypeId, Variance, Pos)] -> [Token] -> AParser [TypeArg]
makeTypeArgs :: [(TypeId, Variance, Pos)] -> [Token] -> [Pos] -> Kind -> [TypeArg]
singleTypeArg :: AParser TypeArg
parenTypeArg :: AParser (TypeArg, [Token])
typeArg :: AParser (TypeArg, [Token])
typeArgs :: AParser ([TypeArg], [Token])
typePatternArg :: AParser TypePattern
type TokenMode = [String]
aToken :: TokenMode -> AParser Token
idToken :: AParser Token
primTypePatternOrId :: AParser TypePattern
typePatternOrId :: AParser TypePattern
typePatternToken :: AParser TypePattern
primTypePattern :: AParser TypePattern
typePattern :: AParser TypePattern
typeToken :: AParser Type
primTypeOrId :: AParser Type
typeOrId :: AParser Type
kindAnno :: Type -> AParser Type
primType :: AParser Type
lazyType :: AParser Type
mixType :: AParser Type
prodType :: AParser Type
parseType :: AParser Type
arrowT :: AParser (Arrow, Pos)
typeScheme :: AParser TypeScheme
data TypeOrTypeScheme
= PartialType Type
| TotalTypeScheme TypeScheme
typeOrTypeScheme :: AParser (Token, TypeOrTypeScheme)
toPartialTypeScheme :: [Pos] -> TypeOrTypeScheme -> TypeScheme
partialTypeScheme :: AParser (Token, TypeScheme)
varDecls :: AParser [VarDecl]
varDeclType :: [Var] -> [Token] -> AParser [VarDecl]
makeVarDecls :: [Var] -> [Token] -> Type -> Pos -> [VarDecl]
genVarDecls :: AParser [GenVarDecl]
tokenPattern :: TokenMode -> AParser Pattern
primPattern :: TokenMode -> AParser Pattern
mixPattern :: TokenMode -> AParser Pattern
typeAnno :: Pattern -> AParser Pattern
asPattern :: TokenMode -> AParser Pattern
pattern :: AParser Pattern
lamDot :: AParser (Partiality, Token)
lamPattern :: AParser [Pattern]
instOpId :: AParser InstOpId
tToken :: TokenMode -> AParser Token
termToken :: TokenMode -> AParser Term
primTerm :: TokenMode -> AParser Term
data InMode
= NoIn
| WithIn
baseTerm :: (InMode, TokenMode) -> AParser Term
ifTerm :: (InMode, TokenMode) -> AParser Term
parenTerm :: AParser Term
varTerm :: Token -> AParser Term
opBrand :: AParser (Token, OpBrand)
qualOpName :: Token -> AParser Term
qualPredName :: Token -> AParser Term
typeQual :: InMode -> AParser (TypeQual, Token)
typedTerm :: (InMode, TokenMode) -> AParser Term
mixTerm :: (InMode, TokenMode) -> AParser Term
hasCaslStartKeywords :: [String]
whereTerm :: (InMode, TokenMode) -> AParser Term
term :: AParser Term
forallTerm :: (InMode, TokenMode) -> AParser Term
exQuant :: AParser (Token, Quantifier)
exTerm :: (InMode, TokenMode) -> AParser Term
lambdaTerm :: (InMode, TokenMode) -> AParser Term
caseTerm :: (InMode, TokenMode) -> AParser Term
letTerm :: (InMode, TokenMode) -> AParser Term
patternTermPair :: TokenMode -> (InMode, TokenMode) -> String -> AParser ProgEq
key sign tokens
plusT :: AParser Token
keywords for the variance of kinds
minusT :: AParser Token
colT :: AParser Token
a colon not followed by a question mark
qColonT :: AParser Token
a colon immediately followed by a question mark
parser for bracketed lists
bracketParser :: AParser a -> AParser Token -> AParser Token -> AParser Token -> ([a] -> [Pos] -> b) -> AParser b
a generic bracket parser
mkBrackets :: AParser a -> ([a] -> [Pos] -> b) -> AParser b
parser for square brackets
mkBraces :: AParser a -> ([a] -> [Pos] -> b) -> AParser b
parser for braces
kinds
parseClassId :: AParser Kind
parse a simple class name or the type universe as kind
parseSimpleKind :: AParser Kind
do parseClassId or a downset or an intersection kind
parseExtKind :: AParser Kind
do parseSimpleKind and check for an optional Variance
arrowKind :: Kind -> AParser Kind
parse a (right associative) function kind for a given argument kind
kind :: AParser Kind
parse a function kind but reject an extended kind
extKind :: AParser Kind
parse a function kind but accept an extended kind
type variables
extVar :: AParser Id -> AParser (Id, Variance, Pos)
typeVars :: AParser [TypeArg]
allIsInVar :: [(TypeId, Variance, Pos)] -> Bool
typeKind :: [(TypeId, Variance, Pos)] -> [Token] -> AParser [TypeArg]
makeTypeArgs :: [(TypeId, Variance, Pos)] -> [Token] -> [Pos] -> Kind -> [TypeArg]
add the Kind to all extTypeVar and yield a TypeArg
singleTypeArg :: AParser TypeArg
a single TypeArg (parsed by typeVars)
parenTypeArg :: AParser (TypeArg, [Token])
a singleTypArg put in parentheses
typeArg :: AParser (TypeArg, [Token])
a singleTypeArg possibly put in parentheses
typeArgs :: AParser ([TypeArg], [Token])
several typeArgs
typePatternArg :: AParser TypePattern
a singleTypeArg put in parentheses as TypePattern
parse special identifier tokens
type TokenMode = [String]
aToken :: TokenMode -> AParser Token
parse a Token of an Id (to be declared) but exclude the signs in TokenMode
idToken :: AParser Token
just aToken only excluding basic HasCASL keywords
type patterns
primTypePatternOrId :: AParser TypePattern
typePatternOrId :: AParser TypePattern
typePatternToken :: AParser TypePattern
those (top-level) Tokens (less than idToken) that may appear in TypePatterns as TypePatternToken.
primTypePattern :: AParser TypePattern
a typePatternToken or something in braces (a typePattern), in square brackets (a typePatternOrId covering compound lists) or parenthesis (typePatternArg)
typePattern :: AParser TypePattern
types
typeToken :: AParser Type
type tokens with some symbols removed
primTypeOrId :: AParser Type
TypeTokens within BracketTypes may recusively be idTokens. Parenthesis may group a mixfix type or may be interpreted as Intersection later in a GEN-VAR-DECL.
typeOrId :: AParser Type
several primTypeOrIds possibly yielding a MixfixType and possibly followed by a kindAnno.
kindAnno :: Type -> AParser Type
a Kind annotation starting with colT.
primType :: AParser Type
a typeToken' or a BracketType. Square brackets may contain typeOrId.
lazyType :: AParser Type
a primType possibly preceded by quMarkT
mixType :: AParser Type
several lazyTypes (as MixfixType) possibly followed by kindAnno
prodType :: AParser Type
mixType possibly interspersed with crossT
parseType :: AParser Type
a (right associativ) function type
arrowT :: AParser (Arrow, Pos)
parse one of the four possible Arrows
typeScheme :: AParser TypeScheme
parse a TypeScheme using forallT, typeVars, dotT and parseType
data TypeOrTypeScheme
Constructors
PartialType Type
TotalTypeScheme TypeScheme
typeOrTypeScheme :: AParser (Token, TypeOrTypeScheme)
toPartialTypeScheme :: [Pos] -> TypeOrTypeScheme -> TypeScheme
partialTypeScheme :: AParser (Token, TypeScheme)
varDecls and genVarDecls
varDecls :: AParser [VarDecl]
comma separated var with varDeclType
varDeclType :: [Var] -> [Token] -> AParser [VarDecl]
a type (parseType) following a colT
makeVarDecls :: [Var] -> [Token] -> Type -> Pos -> [VarDecl]
attach the Type to every Var
genVarDecls :: AParser [GenVarDecl]
either like varDecls or type variables with a typeDownset. A GenVarDecl may later become a GenTypeVarDecl.
patterns
tokenPattern :: TokenMode -> AParser Pattern
different legal PatternTokens (in- or excluding funS)
primPattern :: TokenMode -> AParser Pattern
tokenPattern or BracketPattern
mixPattern :: TokenMode -> AParser Pattern
several primPattern possibly with a typeAnno
typeAnno :: Pattern -> AParser Pattern
a type (parseType) preceded by colT
asPattern :: TokenMode -> AParser Pattern
top-level pattern (possibly AsPattern)
pattern :: AParser Pattern
an unrestricted asPattern
lamDot :: AParser (Partiality, Token)
a Total or Partial lambda dot
lamPattern :: AParser [Pattern]
patterns between lamS and lamDot
terms
instOpId :: AParser InstOpId
an uninstOpId possibly followed by types (parseType) in brackets and further places (placeT)
tToken :: TokenMode -> AParser Token
Tokens that may occur in Terms including literals (scanFloat, scanString) excluding ifS and barS
termToken :: TokenMode -> AParser Term
tToken as Term plus exEqual and equalS
primTerm :: TokenMode -> AParser Term
termToken plus BracketTerms or parenTerm
data InMode
how the keyword inS should be treated
Constructors
NoInnext inS belongs to letS
WithIninS is the element test
baseTerm :: (InMode, TokenMode) -> AParser Term
all Terms that start with a unique keyword
ifTerm :: (InMode, TokenMode) -> AParser Term
ifS possibly followed by thenS (for if-then-else) yielding a MixfixTerm.
parenTerm :: AParser Term
a Term in parentheses, may be a qualified name or a tuple (BracketTerm)
varTerm :: Token -> AParser Term
a qualified var
opBrand :: AParser (Token, OpBrand)
opS or functS
qualOpName :: Token -> AParser Term
a qualified operation (with opBrand)
qualPredName :: Token -> AParser Term
a qualified predicate
typeQual :: InMode -> AParser (TypeQual, Token)
a qualifier expecting a further Type. inS is rejected for NoIn
typedTerm :: (InMode, TokenMode) -> AParser Term
a possibly type qualified (typeQual) primTerm or a baseTerm
mixTerm :: (InMode, TokenMode) -> AParser Term
several typedTerms yielding a MixfixTerm
hasCaslStartKeywords :: [String]
keywords that start a new item
whereTerm :: (InMode, TokenMode) -> AParser Term
a mixTerm followed by whereS and equations separated by optSemi
term :: AParser Term
a whereTerm called with (WithIn, [])
forallTerm :: (InMode, TokenMode) -> AParser Term
a Universal QuantifiedTerm
exQuant :: AParser (Token, Quantifier)
Unique or Existential
exTerm :: (InMode, TokenMode) -> AParser Term
a (possibly unique) existential QuantifiedTerm
lambdaTerm :: (InMode, TokenMode) -> AParser Term
a LambdaTerm
caseTerm :: (InMode, TokenMode) -> AParser Term
a CaseTerm with funS excluded in patternTermPair
letTerm :: (InMode, TokenMode) -> AParser Term
a LetTerm with equalS excluded in patternTermPair (called with NoIn)
patternTermPair :: TokenMode -> (InMode, TokenMode) -> String -> AParser ProgEq
a customizable pattern equation
Produced by Haddock version 0.6