X-Git-Url: https://git.kianting.info/?a=blobdiff_plain;f=src%2Ftokenize.ts;h=144dbedc0736f5eae1da0063ad9869e321e59d7c;hb=f801ef14fc25ae122aaef4aede639ddb9b37006a;hp=861b638e32420fc41b677eb943cd24d47eff601a;hpb=cda463d89022d09a5273b59bcd3e776f1127697a;p=clo diff --git a/src/tokenize.ts b/src/tokenize.ts index 861b638..144dbed 100644 --- a/src/tokenize.ts +++ b/src/tokenize.ts @@ -1,3 +1,4 @@ +import * as util from 'util'; var fs = require('fs'); @@ -63,7 +64,7 @@ export interface MatcheePair { * SEMI_C// semi-colon */ export enum TokenType { - NL, // newlinw + NL, // newline SP, // half-width space and tab ID, // identifier STR, // string @@ -98,7 +99,9 @@ export enum TokenType { NE, // <> APOS, // ' R_ARROW, // -> - + TRUE, // true + FALSE, // false + IF, // if } /** @@ -197,6 +200,25 @@ export function matchRange(l: string, u: string): (m: MatcheePair) => Maybe Maybe { + return (m)=>{ + if (s.length==0){ + return { _tag: "None" }; + } + var someM : Maybe = toSome(m); + for (var idx : number=0; idx { // space = [ \t]+ let space = bTerm((x: Maybe) => thenDo(thenDo(x, s_aux), zeroOrMoreDo(s_aux)), - TokenType.INT); + TokenType.SP); // newline = \r?\n let newline = bTerm((x: Maybe) => @@ -444,6 +466,7 @@ export function tokenize(input: string): Array { thenDo(thenDo(x, match1Char("-")), match1Char(">")), TokenType.R_ARROW); + /** * unary operator : generating the pattern of basic unary operator * @param char : uniry char for the operator @@ -488,7 +511,7 @@ export function tokenize(input: string): Array { lParen, rParen, lBracket, rBracket, lBrace, rBrace, comma, dot, colon, semicolon, at, hash, set, greaterthan, lessthan, apos, - float, newline, space, integer, str, id]; + float, newline, space, id, integer, str]; let term_aux = term_list.reduce((x, y) => orDo(x, y)); var new_x: Maybe = thenDo(old_x, term_aux);