From 62a6308f7e6595a8bcc1656bb21dc8e50e533f64 Mon Sep 17 00:00:00 2001 From: rsteube Date: Tue, 1 Aug 2023 08:01:14 +0200 Subject: [PATCH] lexer: remove escape character when EOF follows (lenient) --- internal/lexer/lexer.go | 3 +++ internal/lexer/lexer_test.go | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/internal/lexer/lexer.go b/internal/lexer/lexer.go index b51220d3..84b9f6aa 100644 --- a/internal/lexer/lexer.go +++ b/internal/lexer/lexer.go @@ -22,6 +22,9 @@ type Tokenset struct { func Split(s string, pipelines bool) (*Tokenset, error) { tokenset, err := split(s, pipelines) + if err != nil && err.Error() == "EOF found after escape character" { + return Split(s[:len(s)-1], pipelines) // TODO mark this in tokenset + } if err != nil && err.Error() == "EOF found when expecting closing quote" { tokenset, err = split(s+`_"`, pipelines) if err == nil { diff --git a/internal/lexer/lexer_test.go b/internal/lexer/lexer_test.go index 77bf2b83..1f52d0b5 100644 --- a/internal/lexer/lexer_test.go +++ b/internal/lexer/lexer_test.go @@ -161,4 +161,9 @@ func TestSplit(t *testing.T) { Prefix: `example `, State: OPEN_SINGLE, }) + + _test(`example \`, Tokenset{ + Tokens: []string{"example", ""}, + Prefix: `example `, + }) }