From 7ec53b944c73708344f736b974801713693483ec Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Sun, 11 Aug 2024 00:41:02 +0200 Subject: Start newline control --- cook/parse.scm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'cook/parse.scm') diff --git a/cook/parse.scm b/cook/parse.scm index ae645f6..2953b70 100644 --- a/cook/parse.scm +++ b/cook/parse.scm @@ -82,7 +82,8 @@ https://github.com/cooklang/spec/blob/main/EBNF.md (define metadata-chars (char-set-difference text-chars (char-set #\:))) (define-grammar cook - (nl ((+ ,newline-chars))) + (nl ((: ,newline-chars))) + (empty-line ((: bol ,nl))) (whitespace ((+ ,char-set:whitespace))) (any-text-item ((: (=> c (+ ,any-text-chars))) @@ -128,18 +129,19 @@ https://github.com/cooklang/spec/blob/main/EBNF.md ,cookware ,timer ,text-item))) - ,nl) + (or ,empty-line + (: (* ,empty-line) eos))) (make-step s))) (metadata ((: bol ">>" (* ,whitespace) (=> k ,meta-key) (* ,whitespace) ":" (* ,whitespace) - (=> v ,any-text-item) (* ,whitespace) ,nl) + (=> v ,any-text-item) (* ,whitespace) eol) (make-metadata-line k v))) - (recipe ((* (or (=> m (+ ,metadata)) - (=> c (+ ,comment))) - (=> s (+ ,step))) + (recipe ((* (or (: (=> m (+ ,metadata)) ,nl) + (=> c (+ ,comment)) + (: (=> s (+ ,step)) (or eos (* ,empty-line))))) (list 'recipe (metadata-line-list->hash-table m) s)))) (define (parse-cook str) -- cgit v1.2.3