21 lines
1.1 KiB
Plaintext
21 lines
1.1 KiB
Plaintext
start: title description property+ (_E note)? _E building
|
|
|
|
title: "#" /(?! ).+(?<! )/ "\n" _E // not starting or ending with a space
|
|
|
|
description: "_" /(?! ).+(?<![ _])/ "_\n" _E // single line not ending with underscore
|
|
|
|
note: /(?![\-#]).*\n/* // Unstructured text, not starting with - or #
|
|
|
|
building: "## Building\n" (_E property+)? (_E note)? // the "building" section
|
|
|
|
property: "-" _key ":" _values "\n"? // a property on a single line "- key: value"
|
|
_key: /(?! ).+?(?=:)(?<! )/ // key: everything until next ":", not beginning or ending with a space
|
|
_values: [_value ("," _value)*] // a comma separated list
|
|
_value: quoted_value | unquoted_value // quoted or unquoted values
|
|
quoted_value: /\".+?\"/ // with quotation marks, can contain commas
|
|
unquoted_value: /(?![ \"])[^,\n]+(?<![ ])/ // cannot contain commas, cannot start or end with quotation mark
|
|
|
|
_E: /^$\n/m // empty new line
|
|
|
|
%import common.WS
|
|
%ignore WS |