aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/c.bqn b/src/c.bqn
index a8379bdc..29e8aec4 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -173,9 +173,9 @@ Parse ← {r‿vn‿i‿e←𝕨⋄nv←≠vn
𝕩⊏˜↩g⋄r⊏˜↩gr⋄ir⊏˜↩gr⋄l↩(l⊏⍋gs)∾/gr⊏sr>sl
bk←c⊏gi # Block loads
a←r≤¯3⋄ps←a<r<0 # a: assignment, ps: part separator
- tr←1≤er←(ir-ex←¯4=r)⊏˜IT»ps # er: expression role; tr: train or modifier expression
+ tr←1≤er←ir⊏˜IT»ps # er: expression role; tr: train or modifier expression
no←ir<0⋄ne←er<0 # Nothing value; expression
- "Nothing (·) cannot be assigned"_err_(G) ne∧a>ex
+ "Nothing (·) cannot be assigned"_err_(G) ne∧a
oa←⌽/op←(er<2)∧r≥2⋄ro←op∨«op∧m2←r=3 # op: active modifiers; ro: mod or right operand
"Missing operand"_err_(G) op>(«∧m2≤»)no<m2<ro∨r∊↕2
"Double subjects (missing ‿?)"_err_(G) ∧⟜«ro»⊸∨⊸<r=0
@@ -184,10 +184,9 @@ Parse ← {r‿vn‿i‿e←𝕨⋄nv←≠vn
at←1+⊏⟜os⊸+ai←/a⋄af←¯4≠ai⊏r # Assignment target; af for actual (non-export) assignment
"Role of the two sides in assignment must match"_err_(at⊏G) af∧(0⌈at⊏er)≠ar←at⊏r
aid←(¯5⊸≤∧<⟜nv)𝕩-vi # Assignable identifer
- "Function or modifier assignment to a non-name"_err_(at⊏G) ¬(ar≤0)∨at⊏aid
ak←(0≤ar)+af+(⊑bG)-˜ai⊏𝕩 # Class of assignment: 1⇐ 2⇐? 3←? 4↩?
aa←×g⊏ac←»+`gi⊏«⊸-ak⌾(at⊸⊏)0¨𝕩 # ac broadcasts it to the entire target
- "Assignment target must be a name or list of targets"_err_(G) ((𝕩=3+⊑bB)<(aid∧r≤0)∨ps∨𝕩 M bB)<aa∧0=er
+ "Assignment target must be a name or list of targets"_err_(G) (aid∨ps∨𝕩(=⟜(3+⊑)<M)bB)<aa
"Can't use result of function/modifier assignment without parentheses"_err_(G) (0<er)∧(0≤r)∧»⊸>aa
# Lexical resolution (independent of parsing part 2 below)