ocaml: phase 4 's.[i]' string indexing syntax (+3 tests, 484 total)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
parse-atom-postfix now dispatches three cases after consuming '.':
.field -> existing field/module access
.(EXPR) -> existing local-open
.[EXPR] -> new string-get syntax (this commit)
Eval reduces (:string-get S I) to host (nth S I), which already returns
a one-character string for OCaml's char model.
Lets us write idiomatic OCaml string traversal:
let s = "hi" in
let n = ref 0 in
for i = 0 to String.length s - 1 do
n := !n + Char.code s.[i]
done;
!n (* = 209 *)
This commit is contained in:
@@ -571,6 +571,14 @@
|
||||
(consume! "op" ")")
|
||||
(set! head (list :let-open head inner))
|
||||
(loop)))))
|
||||
((at-op? "[")
|
||||
(begin
|
||||
(advance-tok!)
|
||||
(let ((idx-expr (parse-expr)))
|
||||
(begin
|
||||
(consume! "op" "]")
|
||||
(set! head (list :string-get head idx-expr))
|
||||
(loop)))))
|
||||
(else
|
||||
(let ((tok (peek-tok)))
|
||||
(begin
|
||||
|
||||
Reference in New Issue
Block a user