 | hets -- a heterogenous Specification (CASL) tool set | Contents | Index |
|
HasCASL.ParseTerm | Portability | portable | Stability | provisional | Maintainer | hets@tzi.de |
|
|
|
|
|
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 | | | | 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 | | | | 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 |
|
|
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 | NoIn | next inS belongs to letS | WithIn | inS 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 |