Sua lente não está escrita para entradas de múltiplas linhas. Se você quiser dar suporte a entradas de várias linhas, será necessário usar IniFile.entry_multiline
:
let entry_multiline (kw:regexp) (sep:lens) (comment:lens)
= [ key kw . sep . sto_multiline? . (comment|eol) ] | comment
No entanto, essa definição não reconhece \
como um símbolo de continuação de linha porque eu nunca vi um IniFile usá-lo até hoje. Enquanto \
é comumente usado como um símbolo de continuação de linha para vários formatos de chave / valor, a IniFiles geralmente usa o recuo para determinar se uma linha é uma continuação da anterior.
Como nota, não acho que sua definição de lns
seja realmente o que você pretende que seja:
let lns = record_anon | record*
significa "um record_anon
, seguido por zero, um ou mais record
s", embora você provavelmente queira dizer "zero, um ou mais record_anon
, seguido por zero, um ou mais record
s ", que é:
let lns = record_anon* . record*