- LATIN SMALL LETTER B WITH PALATAL HOOK (`U+1D80`) ... LATIN SMALL LETTER Z WITH PALATAL HOOK (`U+1D8E`).
  - MODIFIER LETTER SMALL L WITH PALATAL HOOK (`U+1DAA`).
This commit is contained in:
be5invis 2022-12-13 04:38:52 -08:00
parent 8f895c754c
commit 7769e1f30e
22 changed files with 280 additions and 89 deletions

View file

@ -20,27 +20,37 @@ define-macro params : syntax-rules
local ta : env.newt
local tb : env.newt
local t : env.newt
local ps `[begin
[local @ta : {}.slice.call arguments 0]
[local @tb {}]
[for [local @t 0] (@t < @ta.length) [inc @t] : if [not : @ta.(@t) <@ $NamedParameterPair$] : @tb.push @ta.(@t)]
]
local aps `[begin]
local dps `[begin]
local declarations `[begin]
local namedAssigns `[begin]
local indexAssigns `[begin]
local tearDowns `[begin]
local j 0
foreach [pf : items-of : formOf _pairs] : begin
local name
if [atom pf] : then
ps.push `[local @pf : fallback @pf (@tb).(@{".quote" j})]
declarations.push `[local @pf]
indexAssigns.push `[set @pf : fallback @pf (@tb).(@{".quote" j})]
set name pf
: else
ps.push `[local @(pf.0) : fallback @(pf.0) (@tb).(@{".quote" j}) @(pf.1)]
declarations.push `[local @(pf.0)]
indexAssigns.push `[set @(pf.0) : fallback @(pf.0) (@tb).(@{".quote" j}) @(pf.1)]
set name pf.0
aps.push `[if (@t && @t <@ $NamedParameterPair$ && @t.left == @{".quote" name}) [set @name @t.right]]
if pf.2 : dps.push `[local @(pf.2) @name]
if pf.2 : tearDowns.push `[local @(pf.2) @name]
namedAssigns.push `[if (@t && @t <@ $NamedParameterPair$ && @t.left == @{".quote" name}) [set @name @t.right]]
inc j
ps.push `[foreach [@t : items-of @ta] @aps]
ps.push dps
ps.push declarations
ps.push `[foreach [@t : items-of @ta] @namedAssigns]
ps.push indexAssigns
ps.push tearDowns
ps.push : formOf body
return : dirty ps