From 229e0ad2d1fb24e1e4356a6f1267e10fc5b49526 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sun, 27 Sep 2020 16:27:03 -0400 Subject: Use the same token for all separators --- src/c.bqn | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/c.bqn b/src/c.bqn index 4c1fac4d..92662f9e 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -18,6 +18,7 @@ charSet‿cgl←(∾ ≍○< ≠¨)⟨ ⟩ bF‿bM‿bC‿bS‿bG‿bB‿bL‿bO‿bI‿bD‿bN‿bA‿bW‿bP←≍¨˜⟜(+`»)cgl M←1⊸⊑(0⊸≤∧>)-⟜⊑ # ∊ for an init,length pair 𝕩 as above +sep←⊑bS # CharCode converts characters to numbers, mostly the same as tokens ErrUnknownChars←{ ⟨"Unknown character","s"/˜1<≠𝕩,": ",𝕩⟩∾⊸!0 @@ -63,8 +64,9 @@ Tokenize←{ ki←((⍋⊏⟜n)⊸⊏/w)∾(ci∾/si)⊏+`»f # Indices in c k←id‿num‿chr‿str⋄k(⊢>¯1»⌈`)⊸/¨˜↩j←⊐¨k # IDs j into uniques k c↩(w∨¬l∨c M bW)/(∾j++`vi»≠¨k)⌾(ki⊸⊏)c # Add IDs; remove words/whitespace - c/˜↩¬(1»(c∊2‿4+⊑bB)∨⊢)⊸∧c M bS # Remove repeated and leading separators - c/˜↩¬(1«c∊3‿5+⊑bB)∧c M bS # ...and trailing ones. In sequence for repeated trailing. + c-↩c(M×-⟜⊑)bS # Separators are equivalent + c/˜↩¬(1»(c∊2‿4+⊑bB)∨⊢)⊸∧c=sep # Remove repeated and leading separators + c/˜↩¬(1«c∊3‿5+⊑bB)∧c=sep # ...and trailing ones. In sequence for repeated trailing. cr←ir⌾((c M vi∾≠⊑k)⊸/)(vi⌊c)⊏charRole∾0 # Role c+↩5×c M⟨⊑bI,5⟩ # Case-insensitive special names ⟨c,cr,≠⊑k,∾1↓k⟩ @@ -107,7 +109,7 @@ Parse ← {r‿nv←𝕨 p(=⟜1⊸/ErrMismatchedBrackets⍟≢1-˜=⟜¯1⊸/)○(g⊸⊏)𝕩 "Swapped open and closed brackets" ! 0≤(⊑g)⊑pd sl←«⊸∨𝕩 M bL⋄sr←»⌾(g⊸⊏)sl⋄cp←𝕩=1+⊑bB - ps←(𝕩 M bS)∨sl∨p>0 + ps←(𝕩=sep)∨sl∨p>0 g⊏˜↩⍋g⊏sl rev←⍋+`¯1↓(¯1∾g)(⊣⍋⊸⊏⊏˜⟜⍋¬⊏˜)⍋+`⊸+1∾g⊏ps @@ -128,7 +130,7 @@ Parse ← {r‿nv←𝕨 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⋄gi←⍋g 𝕩⊏˜↩g⋄r⊏˜↩gr⋄ps⊏˜↩gr⋄si←/gr⊏sr>sl⋄l⊏↩⍋gs - s←𝕩 M bS⋄a←𝕩M⟨⊑bG,2⟩ + s←𝕩=sep⋄a←𝕩M⟨⊑bG,2⟩ op←r≥2⋄fe←(r≥1)∨«r=3 tr←(IT»ps)⊏fe ma←tr<(𝕩=1+⊑bG)∧«fe @@ -138,7 +140,7 @@ Parse ← {r‿nv←𝕨 opa←op>«ps∨a oa←⌽/opa⋄fa←/(«aa)<(tf∨¬tr)∧(ro∧«opa)<(r=1)∨op<»opa dy←fa⊏«(𝕩≠⊑bO)∧(tr∧r≥0)∨ro