Improve compiling of step combinator.

This commit is contained in:
Simon Forman 2022-09-28 18:18:20 -07:00
parent 263ed2ee87
commit 4200c6708e
2 changed files with 7 additions and 6 deletions

View File

@ -130,14 +130,13 @@ let stack_to_string stack = expression_to_string (List.rev stack)
type token = Left_bracket | Right_bracket | Token of string type token = Left_bracket | Right_bracket | Token of string
let delimiter str i = let delimiter : char -> bool = String.contains "[] "
i >= String.length str || String.contains "[] " (String.get str i) let delimits str i = i >= String.length str || delimiter (String.get str i)
let make_token str index i = (Token (String.sub str index (i - index)), i) let make_token str index i = (Token (String.sub str index (i - index)), i)
(* string -> int -> int -> token * int *) (* string -> int -> int -> token * int *)
let rec tokenize1 str index i = let rec tokenize1 str index i =
if delimiter str i then make_token str index i else tokenize1 str index (i + 1) if delimits str i then make_token str index i else tokenize1 str index (i + 1)
let rec tokenize0 str index acc = let rec tokenize0 str index acc =
if index >= String.length str then acc if index >= String.length str then acc

View File

@ -613,6 +613,8 @@ compile_fn(Name) --> gronk_fn(Name), cg, !.
(GRONK stands for "I am bad at naming things.")
With gronk we're juggling four things: With gronk we're juggling four things:
The incoming joy expression The incoming joy expression
@ -694,8 +696,8 @@ gronk_fn_list(
gronk_fn_list(Js, [Term|Stack], StackOut, CGTail, Ck, IndentLevel). gronk_fn_list(Js, [Term|Stack], StackOut, CGTail, Ck, IndentLevel).
gronk_fn_list( gronk_fn_list(
[list(Body), symbol(step)|Js], [symbol(step)|Js],
[list(B)|Stack0], [list(Body), list(B)|Stack0],
Stack, Stack,
CGTail, CGTail,
CodeGens, CodeGens,