aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-20 10:40:16 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-20 10:40:16 -0400
commit55c329800dccb344cbecfcc3ec618d0bace46b82 (patch)
tree3707d87f47e081c2082a5a6f21f1579220dbf86f /src
parent25ef0c7bb9c448ceefe7a3d8dbc6a7c22dd7be5d (diff)
Check for undeclared identifiers
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 72a58ac0..f3530fb5 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -89,6 +89,9 @@ ErrMismatchedBrackets←{
Msg ← >○≠◶⟨"opening"_mis_ 0, "closing"_mis_ 1˜⟩
0 !˜ 𝕨 (Lcs<⌊○≠)◶⟨Msg,"Malformed bracket nesting"⟩ 𝕩
}
+ErrUndeclared←{
+ 0 !˜ "Undeclared identifier"∾(1<≠𝕩)/"s"
+}
Parse ← {nv‿r←𝕨
g←⍋pd←+`p←𝕩(Mׯ1⋆2|-⟜⊑)bB⋄br←p×𝕩M 2≍˜2+⊑bB
p(=⟜1⊸/ErrMismatchedBrackets⍟≢1-˜=⟜¯1⊸/)○(g⊸⊏)𝕩
@@ -131,7 +134,8 @@ Parse ← {nv‿r←𝕨
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
+ d⊏˜↩ig⋄ErrUndeclared∘/˜⍟(0∨´⊢)⟜(d<(≠↑0∾⊢)⊸≠)ig⊏idx
+ ui←(⌈`↕∘≠⊸×d)⊸⊏⌾(ig⊸⊏)id
ii←(ui⊏(fi⊏fsc)-(⌈`c⊸×)⊸¬+`dec)∾((sp⊏fi)⊏3×2|ft)++⟜(0⊸≤)2+sp⊏xv
idor←∾3⥊<is←id∾sp
idbc←⟨21+is⊏asn,(id-○(⊏⟜fd)ui)∾0¨sp,ii⟩