 | 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 |