From e1ce7b201e662757b62c480c8ae1c76e41ad8a5f Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sun, 2 Aug 2020 17:08:51 -0400 Subject: Add self-hosted Javascript script --- src/c.bqn | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/cjs.bqn | 15 +++++++ src/pr.bqn | 47 ++++++++++++++++++++++ 3 files changed, 194 insertions(+) create mode 100644 src/c.bqn create mode 100755 src/cjs.bqn create mode 100755 src/pr.bqn (limited to 'src') diff --git a/src/c.bqn b/src/c.bqn new file mode 100644 index 00000000..eed5f843 --- /dev/null +++ b/src/c.bqn @@ -0,0 +1,132 @@ +#! ./dzref + +tab←' '⋄nl←' +' +dig ← "0123456789" +alph ← "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +alow ← "abcdefghijklmnopqrstuvwxyz" +charSet←∾charGroups←⟨ + chF←"+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!" # Function + "˜˘¨⌜⁼´˝`" # Modifier + "∘○⊸⟜⌾⊘◶⎉⚇⍟" # Composition + nl∾"⋄," # Separator + "←↩→" # Gets + "(){}⟨⟩" # Bracket + "‿" # Ligature + "·" # nOthing + "𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕗𝕘" # Input (𝕣 pending; ℝ not allowed) + dig # Digit + "¯.π∞" # Numeric + alow∾alph∾"_" # Alphabetic + " "∾tab # Whitespace +# #'" eliminated during tokenization +⟩ +bF‿bM‿bC‿bS‿bG‿bB‿bL‿bO‿bI‿bD‿bN‿bA‿bW←⊔/≠¨charGroups +vi←+´≠¨9↑charGroups +charRole←((vi-≠bI)↑/0∾≠¨3↑charGroups)∾(5/⌽↕2)∾0 +spc←⥊3‿5‿6-⌜3‿0 + +Tokenize←{ + r←𝕩='#'⋄s←/(≠↑2⊸↓)⊸∧𝕩='''⋄d←/𝕩='"' + g←⍋q←∾⟨ s⋄¯1↓d⋄/r⟩ ⋄q↩g⊏q + e← g⊏∾⟨2+s⋄ 1↓d⋄(⊢-¯1↓0∾⊢)∘⊏⟜(0∾+`r)⊸//(𝕩=nl)∾1⟩ + Se←{(⊏˜𝕨)Se 1¨⌾((𝕩/𝕨)⊸⊏)𝕩}⍟{0=⊑⌽𝕩} + st←¯1↓Se⟜(1↑˜≠)∾⟜≠q⍋e⋄b←st/q∾˘e + ToI←¯1↓·/⁼(≠𝕩)∾˜⥊⋄f←¬≠`ToI b + cb←(¬(st/q)⊏r)/b + lu←⍷lit←𝕩⊔˜1-˜(+`ToI⊑˘cb)×≠`ToI cb + cl←f/ToI⊑∘⌽˘cb + + c←charSet⊐f/𝕩 + w←(≠↑0∾⊢)⊸ׯ1⋆2|⊢)⊐)𝕩⋄br←p×𝕩∊2‿3⊏bB + sl←1⊸⌽⊸∨𝕩∊bL⋄sr←¯1⊸⌽⌾(g⊸⊏)sl⋄sa←sl∨sr + g⊏˜↩⍋g⊏sl⋄r×↩¬sa⋄o←p>0 + r+↩(sa<𝕩=1⊑bB)(⊣∧¬⊸∨=○(⌈`(1+↕∘≠)⊸×)⊢)(¯1⊸⌽⌾(g⊸⊏)3=r)∨1≤r + rev←⍋+`1+¯1↓g((¯1∾⊣)(⊣⍋⊸⊏⊏˜-⊏˜⟜⍋)⟜⍋1(+`∘∾-∾˜)⊏)o∨sl∨𝕩∊bS + + gf←⍋fd←+`rev⊏br + rev⊏˜↩gf⋄fd⊏˜↩gf + 𝕩⊏˜↩rev⋄bv←rev⊏br⋄b←/bv<0⋄fi←+`c←bv>0 + + FC←-⟜(≠↑0∾⊢)(c∾1)/·+`∾⟜0 + H←0<1↓·FC𝕩∊(5⊑bI)+⊢ + ft←0∾(H↕3)+2×(H⥊3)⌈2×H⥊4 + r↩((1↓ft)⊏(1+2⊸≤)⊸/↕4)⌾(b⊸⊏)rev⊏r + + id←/idm←(0⊸≤∧<⟜nv)xv←𝕩-vi⋄idx←id⊏𝕩⋄sp←/𝕩∊bI + ad←(⌈`↕∘≠⊸×𝕩∊bG)⊏𝕩=⊑bG + + g↩⍋+`rev⊏p-br⋄gr←g⊏rev⋄sll←1+2÷˜0(<-○/>)gr⊏sr-sl⋄l←/g⊏𝕩=5⊑bB + g⊏˜↩gs←⍋gr⊏sl⋄gr↩g⊏rev⋄𝕩⊏˜↩g⋄r⊏˜↩g⋄o⊏˜↩gr⋄si←/gr⊏sr>sl + gi←⍋g⋄l⊏↩⍋gs + s←𝕩∊bS⋄ps←s∨o∨gr⊏sl⋄a←𝕩∊2↑bG + r-↩ps∨a⋄op←r≥2⋄fe←(r≥1)∨1⌽r=3 + tr←(⌈`↕∘≠⊸ׯ1⌽ps)⊏fe + ma←tr<(𝕩=1⊑bG)∧1⌽fe + ro←op∨a<1⌽r=3⋄os←⌽↕∘≠⊸(⊣-⌈`∘×)⌽¬ro∨ma⋄at←(⊢+1+⊏⟜os)/a + aa←g⊏asn←¯1⌽+`gi⊏-⟜(≠↑0∾⊢)(↕≠𝕩)∊at-1⋄r↩¯1¨⌾(aa⊸/)r + tf←(a≤○(⌈`(1+↕∘≠)⊸×)ps)∧(⊢∧2(|<≤)ps(⊢-⌈`∘×)+`)¬ro + opa←op>1↓0∾˜ps∨a + oa←⌽/opa⋄fa←/(1⌽aa)<(tf∨¬tr)∧(ro∧1⌽opa)<(r=1)∨op<¯1⌽opa + dy←fa⊏1↓0∾˜(𝕩≠⊑bO)∧(tr∧r≥0)∨roo+`⊸⊏0∾lo⋄rt←/𝕩=2⊑bB + + d←id⊏dec←idm∧ad∧asn⋄lc←FC dec + ig←⍋(⊏⟜(¯1∾c/gf)∾d⊸/⊏((≠𝕩)∾b⊏gf)˜)id⊏fi + ig↩<⟜(≠id)⊸/(⍋+`∘⊏⟜(d∾-/˜d))⊸⊏(⍋⊏⟜(∾⟜(d⊸/)idx))⊸⊏ig + ui←d(⌈`↕∘≠⊸×)⊸⊏⌾(ig⊸⊏)id + ii←(ui⊏(fi⊏ft⊏spc)-(⌈`c⊸×)⊸¬+`dec)∾((sp⊏fi)⊏3×2|ft)++⟜(0⊸≤)2+sp⊏xv + idor←∾3⥊≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!" + "˜˘¨⌜⁼´˝`" + "∘○⊸⟜⌾⊘◶⎉⚇⍟" +⟩ +nc ← ≠¨chrs +chr ← ∾chrs +itr ← 0⥊˜≠chr + +init ← " "⊸∾¨(/⟜"_"¨nc/0‿1‿1)∾¨(nc/"FMD")∾¨(nc+´⊸↑⥊"ABC"∾⌜•a) +post ← ∾⟜" "¨/⟜"_"¨nc/0‿0‿1 +names ← init∾¨(•UCS 48)∾¨post + +Inc ← { + i←⊑chr⊐𝕩 + n←0 ⋄ itr↩{n↩1+𝕩}⌾(i⊑⊢)itr + names↩((i⊑init)∾(•UCS 48+n)∾i⊑post)⌾(i⊑⊢)names +} + +# Required functionality passed in as an argument +pnam ← ⟨"IsArray", "Type", "Log"⟩∾names⊏˜chr⊐"!+-×÷⋆⌊=≤≢⥊⊑↕⌜`" + + +E_isdef ← (3≤≠)◶⟨0,∧´⟨chr," ","←↩"⟩∊˜¨3⊸↑⟩ +E_proc ← { + l←≠chr + q←≠`𝕩∊"""'" ⋄ f←¬∨`q¬⊸∧𝕩='#' + ∾ (((l×f/q)+chr⊸⊐) (≥⟜l)◶⟨⊑⟜names,⥊∘⊢⟩¨ ⊢) f/𝕩 +} +E_redef ← { # handles [fmd] [←↩] + tail ← E_proc 3↓𝕩 # must use old def + Inc ⊑𝕩 + (E_proc 1↑𝕩) ∾ "←" ∾ tail +} + +ref ← ∾ ∾⟜(•UCS 10)¨ ∾⟨ + ⟨"{"⟩ + ⟨"←𝕩"∾˜"⟨"∾"⟩"∾˜1↓∾","⊸∾¨pnam⟩ + E_isdef◶E_proc‿E_redef¨ impl∾<"⟨"∾"⟩"∾˜1↓⥊","⊸∾˘∾chrs + ⟨"}"⟩ +⟩ -- cgit v1.2.3