-export function matchRange(l : string, u : string) : (m: MatcheePair) => Maybe<MatcheePair> {
- let lCodepoint = charToCodepoint(l);
- let uCodepoint = charToCodepoint(u);
- if (l > u){
- throw new Error("Error: the codepoint of `"+l+"` is not smaller than `"+u+"`)");
- }
- return (m : MatcheePair)=>{
- if (m.remained.length < 1){
- return {_tag : "None"};
- }
- const charToBeMatched = m.remained[0];
- const codePointToBeMatched = charToCodepoint(charToBeMatched);
- if (codePointToBeMatched >= lCodepoint && codePointToBeMatched <= uCodepoint){
- return {_tag: "Some", value :{
- matched : m.matched + charToBeMatched,
- remained : m.remained.substring(1)}};
- }
- else{
- return {_tag: "None"};
+function thenDo(m : tk.Maybe<TokenMatcheePair>, f : Function){
+ if (m._tag == "None"){
+ return m;
+ }else{
+ var a : tk.Maybe<TokenMatcheePair> = f(m.value);
+ if (a._tag == "Some"){
+ a.value.ast = concat(m.value.ast, a.value.ast);