From bbce87e26a262a2f442b86608bae06bfd42f3b0e Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Fri, 16 Oct 2020 13:01:19 -0400 Subject: First expression diagram --- tutorial/evalexp.bqn | 19 ++++++++++++++----- tutorial/expression.md | 7 +++---- 2 files changed, 17 insertions(+), 9 deletions(-) (limited to 'tutorial') diff --git a/tutorial/evalexp.bqn b/tutorial/evalexp.bqn index 304301e5..5d922af1 100644 --- a/tutorial/evalexp.bqn +++ b/tutorial/evalexp.bqn @@ -1,10 +1,17 @@ wh ← 10.75‿24 -pad← wh×1.5‿1 +pad← wh×2‿1 t ← 10 -ps ← >⟨"stroke"‿"#585552","style"‿"fill:none","stroke-width"‿"2"⟩ -rc ← >⟨"class"‿"code","stroke-width"‿"1","rx"‿"12"⟩ -gr ← "g" Attr >⟨"font-family"‿"BQN,monospace", "font-size"‿"18px"⟩ +ps ← At "class=Paren|stroke=currentColor|fill=none|stroke-width=1" +rc ← At "class=code|stroke-width=1|rx=10" +gr ← "g" At "font-family=BQN,monospace|font-size=18px" +gt ← "g" At "text-anchor=middle" +gb ← "g" At "class=codeCover|stroke-width=6|stroke-linejoin=round" +gf ← "g" At "font-size=15px|opacity=0.9" +Shadow ← { + t ← (⟨0,0‿¯2⟩+⌜𝕨) ("text" Attr Pos)⊸Enc¨ (⊢≍Highlight¨) ⥊¨𝕩 + gt Enc ⟨gb,gf⟩ Enc¨<˘ t +} DrawEval←{ ix←𝕩⊏˜i←/𝕩≠' ' @@ -18,12 +25,14 @@ DrawEval←{ m←1+⌈´d←+`⊸×⌾(rev⊸⊏)fn pt ← f/⍉> wh×⟨i,d⟩ - off← (o ⊏ ∾⟜(whׯ1‿m))⊸- pt + off← (o ⊏ ∾⟜(whׯ1.25‿m))⊸- pt pd ← pt (<(wh×0.6‿0.1)⊸+)⊸∾⟜⌽˘ off dim← (wh×⟨≠𝕩,2+m⟩)+2‿0×pad + tp ← <˘pt+(1+wh÷2‿3)+⎉1(0‿1×⌜˜f/¬fn)×off (512‿0⊸⌈⊸(⊣∾˜(t+pad)-˜-˜÷2˙)dim+2×t) SVG gr Enc ∾⥊¨⟨ <"rect" Elt rc∾(Pos-pad)∾"width"‿"height"≍˘FmtNum¨dim <"text" Enc Highlight 𝕩 (<"path" Elt ps∾"d"≍○<·∾"Mvh"∾⟜Fmt¨⊢)˘ pd + The following rule might help you to internalize this system in addition to identifying when parentheses are needed: an expression never needs to end with a parenthesis, or contain two closing parentheses in a row. If it does, at least one set of parentheses can be removed. -- cgit v1.2.3