aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-11 23:07:47 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-11 23:07:47 -0400
commitd413a59b090b823bcbffc6f4cdde29291d372f41 (patch)
tree52e8e307d39814a4197e54e333acfa0bf50c3826
parentf4500953ef8fa54451302dddbf1d7d85e9deae7c (diff)
Separate number/null and string literal processing
-rw-r--r--src/c.bqn9
-rw-r--r--wc.bqn2
2 files changed, 6 insertions, 5 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 12789450..9f262c2b 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -58,7 +58,7 @@ Tokenize←{
c/˜↩¬(≠↑1∾(c∊2‿4+⊑bB)∨⊢)⊸∧c M bS⋄c/˜↩¬(1↓1∾˜c∊3‿5+⊑bB)∧c M bS
ic←(vi⊸≤∧<⟜ie)c⋄t←ti⌾(ic⊸/)(vi⌊c)⊏charRole
c+↩5×c M 5≍˜⊑bI
- ⟨c,t,+´¬in,((in/iu)⊏id)∾lu⟩
+ ⟨c,t,+´¬in,(in/iu)⊏id,lu⟩
}
ReadNum←{
@@ -71,7 +71,8 @@ ReadNum←{
m←(n=⊑)◶⟨Pos,-·Pos 1⊸↓⟩e↑𝕩
𝕩×⟜(10⋆·Int(e+1)↓⊣)˜⍟(e<≠𝕩)m
}
-LitVal←(⊑⟨⊑bU,''','"'⟩⊐⊏)◶⟨@,1⊸⊑,1⊸↓,ReadNum⟩
+LitVal←((⊑bU)=⊑)◶⟨ReadNum,@⟩
+StrVal←('"'=⊑)◶⟨1⊸⊑,1⊸↓⟩
LEBv ← {
@@ -150,8 +151,8 @@ Parse ← {nv‿r←𝕨
}
Compile←{
- ⟨t,r,nVar,lits⟩←Tokenize𝕩
+ ⟨t,r,nVar,lits,strs⟩←Tokenize𝕩
⟨bc,u,blk⟩←nVar‿r Parse t
- o←(u-(vi+nVar-≠𝕨)×u≥vi)⊏𝕨∾LitVal¨lits
+ o←(u-(vi+nVar-≠𝕨)×u≥vi)⊏∾⟨𝕨,LitVal¨lits,StrVal¨strs⟩
⟨bc,o,blk⟩
}
diff --git a/wc.bqn b/wc.bqn
index 23f12ee6..b270c5d8 100644
--- a/wc.bqn
+++ b/wc.bqn
@@ -47,7 +47,7 @@ fntab←⍉(0¨tab1)∾tab1≍tab2
f64←127-3
GenFn←{
- ⟨t,r,nVar,lits⟩←Tokenize𝕩
+ ⟨t,r,nVar,lits,strs⟩←Tokenize𝕩
nLoc←nVar-𝕨⊢0
t⊏˜↩⍋+`-˝(2‿3+⊑bB)=⌜t
nd←+´c←t=3+⊑bB