aboutsummaryrefslogtreecommitdiff
path: root/nomsu.peg
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-04-25 17:43:48 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-04-25 17:44:24 -0700
commit4e821308af654706b8bda5f3d00dce7a933d9942 (patch)
tree674f4eea13cd7475a14344132ec6f12937ac9a96 /nomsu.peg
parent5d59d510cd6fdc8553250e5ec10f19a285e8878c (diff)
Overhauling parsing of Blocks (can no longer contain only one statement)
Diffstat (limited to 'nomsu.peg')
-rw-r--r--nomsu.peg19
1 files changed, 12 insertions, 7 deletions
diff --git a/nomsu.peg b/nomsu.peg
index af65d93..b1c1f50 100644
--- a/nomsu.peg
+++ b/nomsu.peg
@@ -8,12 +8,12 @@ file (File):
shebang: "#!" [^%nl]* (!. / %nl)
statement: action / expression
+inline_statement: inline_action / inline_expression
-indented_block (Block):
- {| indent
- statement (nodent statement)*
- (dedent / (("" -> "Error while parsing block") => error))
- |} -> Tuple
+inline_block (Block):
+ {| inline_statement (";" inline_statement)+ |}
+block (Block):
+ {| statement (nodent statement)+ |} -> Tuple
inline_nomsu (Nomsu): "\" noindex_inline_expression
indented_nomsu (Nomsu):
@@ -29,7 +29,12 @@ noindex_inline_expression:
inline_expression:
index_chain / noindex_inline_expression
indented_expression:
- indented_text / indented_nomsu / indented_list / indented_dict / indented_block
+ indented_text / indented_nomsu / indented_list / indented_dict
+ / (indent
+ (action dedent
+ / expression dedent
+ / block (dedent / (("" -> "Error while parsing indented expression") => error)))
+ )
expression:
inline_expression / (":" %ws* (inline_action / inline_expression) eol) / indented_expression
@@ -65,7 +70,7 @@ inline_text_interpolation:
text_interpolation:
inline_text_interpolation /
("\"
- (block_comment / line_comment / indented_text / indented_list / indented_block)?
+ (block_comment / line_comment / indented_expression)?
nodent "..")
number (Number): (("-"? (([0-9]+ "." [0-9]+) / ("." [0-9]+) / ([0-9]+)))-> tonumber)