An abbreviation for andP(p,q) is p@q.
If one of the arguments is a string then constParser is used to convert it into a parser.
i1 : (constParser "abc" @ constParser "def" : charAnalyzer) "abcdef" o1 = (abc, def) o1 : Sequence |
/usr/share/Macaulay2/Parsing.m2:120:26-128:85: --source code: Parser @ Parser := (p,q) -> new Parser from ( c -> ( if c =!= null then ( if (p' := p c) =!= null then p' @ q else if (val1 := p null) =!= null then if (q' := q c) =!= null then (val2 -> (val1,val2)) % q' ) else if (val1 = p null) =!= null and (val2 := q null) =!= null then (val1,val2) ))
The object andP is a function closure.