aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-05-30 14:08:03 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-05-30 14:08:30 -0700
commitb3df63eb1044a740e205524aaa37bebe08bd169e (patch)
tree28393a8edc5ee66605a521e2a62e94ac9fcf76fe /core
parent624fcdcc7e8502cd8f0dc4c51669e5d1de7811b9 (diff)
Added 'for (%k,%v) in ...' alias for 'for %k = %v in ...'
Diffstat (limited to 'core')
-rw-r--r--core/collections.nom25
-rw-r--r--core/control_flow.nom9
2 files changed, 26 insertions, 8 deletions
diff --git a/core/collections.nom b/core/collections.nom
index 91c0c10..8e7576d 100644
--- a/core/collections.nom
+++ b/core/collections.nom
@@ -79,7 +79,10 @@ immediately
parse [%expression for %var in %start to %stop] as
%expression for %var in %start to %stop via 1
- parse [%expression for %key = %value in %iterable] as
+ parse [..]
+ %expression for %key = %value in %iterable
+ %expression for (%key,%value) in %iterable
+ ..as
result of
%comprehension <- []
for %key = %value in %iterable
@@ -87,14 +90,20 @@ immediately
return %comprehension
# Dict comprehensions
- parse [%key = %value for %item in %iterable] as
+ parse [..]
+ %key = %value for %item in %iterable
+ (%key,%value) for %item in %iterable
+ ..as
result of
%comprehension <- {}
for %item in %iterable
%comprehension.%key <- %value
return %comprehension
- parse [%key = %value for %src_key = %src_value in %iterable] as
+ parse [..]
+ %key = %value for %src_key = %src_value in %iterable
+ (%key,%value) for (%src_key,%src_value) in %iterable
+ ..as
result of
%comprehension <- {}
for %src_key = %src_value in %iterable
@@ -133,7 +142,10 @@ immediately
# Sorting
immediately
compile [sort %items] to: Lua "table.sort(\(%items as lua expr));"
- parse [sort %items by %item = %key_expr] as
+ parse [..]
+ sort %items by %item = %key_expr
+ sort %items by %item -> %key_expr
+ ..as
do
%keys <- ({} with fallback %item -> %key_expr)
lua> "table.sort(\%items, function(x,y) return \%keys[x] < \%keys[y] end)"
@@ -143,7 +155,10 @@ immediately
%copy <- (% for % in %items)
sort %copy
return %copy
- action [%items sorted by %item = %key]
+ action [..]
+ %items sorted by %item = %key
+ %items sorted by %item -> %key
+ ..
%copy <- (% for % in %items)
sort %copy by %item = %key
return %copy
diff --git a/core/control_flow.nom b/core/control_flow.nom
index 5eabefd..e54f10a 100644
--- a/core/control_flow.nom
+++ b/core/control_flow.nom
@@ -76,10 +76,10 @@ immediately
(function()
for \(%subtree as lua expr) in coroutine.wrap(function() \(%tree as lua expr):map(coroutine.yield) end) do
if \(%condition as lua expr) then
- return true;
+ return true
end
end
- return false;
+ return false
end)()
# While loops
@@ -207,7 +207,10 @@ immediately
# Dict iteration (lua's "pairs()")
immediately
- compile [for %key = %value in %iterable %body] to
+ compile [..]
+ for %key = %value in %iterable %body
+ for (%key,%value) in %iterable %body
+ ..to
# This uses Lua's approach of only allowing loop-scoped variables in a loop
assume (%key.type is "Var") or barf "Loop expected variable, not: \%key"
assume (%value.type is "Var") or barf "Loop expected variable, not: \%value"