dropWs : List Char -> List Char
Supprime les espaces de tête.
import nécessaire.show (le dual de Show)dropWs : List Char -> List CharallBlank : List Char -> BoolorElse : Maybe (a, List Char) -> Maybe (a, List Char) -> Maybe (a, List Char)isIdentChar : Char -> BoolpName : String -> List Char -> Maybe (List Char)optParen : (List Char -> Maybe (a, List Char)) -> List Char -> Maybe (a, List Char)pChar : Char -> List Char -> Maybe (List Char)parseDigits : List Char -> List Char -> Maybe (Int, List Char)intP : List Char -> Maybe (Int, List Char)fixedP : (Int -> w) -> (w -> Int) -> List Char -> Maybe (w, List Char)doubleP : List Char -> Maybe (Double, List Char)takeSign : List Char -> (List Char, List Char)takeMantissa : List Char -> Maybe (List Char, List Char)takeExp : List Char -> (List Char, List Char)takeExpBody : Char -> List Char -> (List Char, List Char)charP : List Char -> Maybe (Char, List Char)unescape : Char -> Maybe CharstrP : List Char -> Maybe (String, List Char)scanStr : List Char -> Maybe (List Char, List Char)unescStr : Char -> Maybe Charinterface Parse a whereparse : Parse a => String -> Maybe aparseParen : (List Char -> Maybe (a, List Char)) -> List Char -> Maybe (a, List Char)parseName : String -> List Char -> Maybe (List Char)parseOrElse : Maybe (a, List Char) -> Maybe (a, List Char) -> Maybe (a, List Char)parseListElems : (List Char -> Maybe (a, List Char)) -> List Char -> Maybe (List a, List Char)parseListMore : (List Char -> Maybe (a, List Char)) -> List a -> List Char -> Maybe (List a, List Char)dropWs : List Char -> List Char
Supprime les espaces de tête.
allBlank : List Char -> Bool
Le reste n'est-il que des espaces ? (parse l'exige après la valeur.)
orElse : Maybe (a, List Char) -> Maybe (a, List Char) -> Maybe (a, List Char)
Le premier analyseur qui réussit (utilisé pour les alternatives de constructeurs).
isIdentChar : Char -> Bool
pName : String -> List Char -> Maybe (List Char)
Attend le nom exact du constructeur à l'avant (après les espaces), comme un token ENTIER — le caractère suivant, s'il y en a un, ne doit pas prolonger un identifiant, donc Red ne correspond pas au préfixe de RedX. Renvoie le reste non consommé.
optParen : (List Char -> Maybe (a, List Char)) -> List Char -> Maybe (a, List Char)
Exécute p, en acceptant une couche optionnelle de parenthèses englobantes (show en ajoute autour d'un argument composé ou négatif).
pChar : Char -> List Char -> Maybe (List Char)
Attend un seul caractère littéral (après les espaces) ; renvoie le reste.
parseDigits : List Char -> List Char -> Maybe (Int, List Char)
intP : List Char -> Maybe (Int, List Char)
Lit un entier signé à l'avant.
fixedP : (Int -> w) -> (w -> Int) -> List Char -> Maybe (w, List Char)
Lit un préfixe d'entier signé, puis le RÉTRÉCIT vers un scalaire de largeur fixe via les wrap : Int -> w / val : w -> Int fournis. Ne réussit que si la valeur fait l'ALLER-RETOUR (val (wrap n) == n) — c.-à-d. qu'elle tient dans l'intervalle du type ; un littéral hors intervalle (256/-1 pour Word8, 128 pour Int8) échoue avec Nothing, exactement comme tryCast : Int -> Maybe wN. Accepte une couche de parenthèses optionnelle (le showParen de Show enveloppe un IntN négatif à une précédence > 6), en miroir de Parse Int. Paramétrique en w (sans dictionnaire) : l'appelant fournit la paire wrap/val propre à la largeur cible.
doubleP : List Char -> Maybe (Double, List Char)
Consomme un LEXÈME Double — [+-]?(digits(.digits?)?|.digits)([eE][+-]?digits)? — depuis l'AVANT, puis convertit exactement ce lexème avec parseDouble (fini, bit-exact d'un backend à l'autre). Renvoie la valeur avec le reste non consommé, si bien qu'un Double se COMPOSE dans un parse de tuple/liste — contrairement à parseDouble, qui exige la chaîne ENTIÈRE. Un . seul (sans chiffres), ou un e non suivi de chiffres d'exposant, ne fait pas partie du nombre (ce e est laissé à l'appelant). Le lexème est construit selon la même grammaire que celle qu'accepte la regex parseDouble du backend JS, si bien que les trois implémentations de parseDouble (OCaml/JS/C) ne divergent jamais dessus.
takeSign : List Char -> (List Char, List Char)
takeMantissa : List Char -> Maybe (List Char, List Char)
takeExp : List Char -> (List Char, List Char)
takeExpBody : Char -> List Char -> (List Char, List Char)
charP : List Char -> Maybe (Char, List Char)
Lit un littéral de caractère à la 'c' (avec les échappements de show).
unescape : Char -> Maybe Char
strP : List Char -> Maybe (String, List Char)
Lit un littéral de chaîne à la "…", en dé-échappant \" \\ \n \t \r (l'inverse de l'échappement de Show String, donc parse (show s) == Just s).
scanStr : List Char -> Maybe (List Char, List Char)
unescStr : Char -> Maybe Char
interface Parse a where
parsesPrec : Nat -> List Char -> Maybe (a, List Char)
Un type dont les valeurs peuvent être analysées à partir d'un texte à la show.
parse : Parse a => String -> Maybe a
Analyse une chaîne entière (pas de résidu hormis des espaces), ou Nothing.
parseParen : (List Char -> Maybe (a, List Char)) -> List Char -> Maybe (a, List Char)
parseName : String -> List Char -> Maybe (List Char)
parseOrElse : Maybe (a, List Char) -> Maybe (a, List Char) -> Maybe (a, List Char)
parseListElems : (List Char -> Maybe (a, List Char)) -> List Char -> Maybe (List a, List Char)
Analyse les éléments d'une liste après le [ ouvrant — ] vide, ou une séquence séparée par des virgules se terminant par ]. L'analyseur d'élément rd est fourni par l'appelant.
parseListMore : (List Char -> Maybe (a, List Char)) -> List a -> List Char -> Maybe (List a, List Char)