X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=blobdiff_plain;f=extra%2Fpeg-lexer%2Fpeg-lexer.factor;h=dcde55c91ada82f2a6c696b928ebb2d58549a219;hp=eff0043ac373a9adcffc51ec78dd9aceb21ffc9e;hb=3f3d57032bf29190e9bee12d168a4bce6d74653c;hpb=cd1bb8f4c8afba318249c7b756a45aa1c46ea51e diff --git a/extra/peg-lexer/peg-lexer.factor b/extra/peg-lexer/peg-lexer.factor index eff0043ac3..dcde55c91a 100644 --- a/extra/peg-lexer/peg-lexer.factor +++ b/extra/peg-lexer/peg-lexer.factor @@ -11,8 +11,8 @@ CONSULT: assoc-protocol lex-hash hash>> ; :: prepare-pos ( v i -- c l ) [let | n [ i v head-slice ] | - v CHAR: \n n last-index -1 or 1+ - - n [ CHAR: \n = ] count 1+ + v CHAR: \n n last-index -1 or 1 + - + n [ CHAR: \n = ] count 1 + ] ; : store-pos ( v a -- ) @@ -25,12 +25,12 @@ M: lex-hash set-at [ swap hash>> set-at ] } case ; -:: at-pos ( t l c -- p ) t l head-slice [ length ] map sum l 1- + c + ; +:: at-pos ( t l c -- p ) t l head-slice [ length ] map sum l 1 - + c + ; M: lex-hash at* swap { { input [ drop lexer get text>> "\n" join t ] } - { pos [ drop lexer get [ text>> ] [ line>> 1- ] [ column>> 1+ ] tri at-pos t ] } + { pos [ drop lexer get [ text>> ] [ line>> 1 - ] [ column>> 1 + ] tri at-pos t ] } [ swap hash>> at* ] } case ; @@ -61,4 +61,4 @@ space = " " | "\n" | "\t" spaces = space* => [[ drop ignore ]] chunk = (!(space) .)+ => [[ >string ]] expr = spaces chunk -;EBNF \ No newline at end of file +;EBNF