<snapdata remixID="15110654"><project name="Parametric plotter using natural expression input" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Parametric plotter using natural expression input"><notes></notes><palette><category name="JSON tools" color="64,0,128,1"/><category name="Calculator tools" color="128,0,128,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;ca:prova de forma segura _ i si _ _&#xD;pl:bezpiecznie spróbuj _ a jeśli _ _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block var="action"/><block var="handler"/><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;pl:błąd _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations>ca:prova de forma segura reportant _ i si _ reportant _&#xD;pl:bezpiecznie spróbuj zgłosić _ a jeśli _ zgłoś _&#xD;</translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>value</l><block s="evaluate"><block var="this"/><list></list></block></block></script><l>err</l><script><block s="doSetVar"><l>error</l><block var="err"/></block><block s="doSetVar"><l>value</l><block s="evaluate"><block var="that"/><list></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition><block-definition s="code %&apos;code&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%code" initial="1"></input></inputs><script><block s="doReport"><block var="code"/></block></script></block-definition><block-definition s="wait until %&apos;predicate&apos; is true and false" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%predRing" initial="1"></input></inputs><script><block s="doWaitUntil"><block s="evaluate"><block var="predicate"/><list></list></block></block><block s="doWaitUntil"><block s="reportNot"><block s="evaluate"><block var="predicate"/><list></list></block></block></block></script></block-definition><block-definition s="add definition %&apos;reporter&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing" initial="1"></input></inputs><script><block s="doWarp"><script><block s="doAddToList"><block var="reporter"/><block var="block definitions"/></block><block s="doAddToList"><block s="reportListAttribute"><l><option>text</option></l><block s="reportTextSplit"><block var="reporter"/><l><option>blocks</option></l></block></block><block var="text definitions"/></block></script></block></script></block-definition><block-definition s="plot x: %&apos;x string&apos; y: %&apos;y string&apos; with %&apos;intervals&apos; intervals from %&apos;start&apos; to %&apos;end&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%txt" initial="1"></input><input type="%n" initial="1">100</input><input type="%n" initial="1">0</input><input type="%n" initial="1">1</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>t value</l><l>tokenized</l><l>local calculator variable</l><l>x object</l><l>y object</l></list></block><block s="up"></block><block s="doSetVar"><l>local calculator variable</l><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>calculate object</l></custom-block></block><block s="doSetVar"><l>tokenized</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>tokenize</l></custom-block><list><block var="x string"/></list></block><comment w="90" collapsed="false">parses x(t)-position string to object</comment></block><custom-block s="reset lexer, tokens: %l"><block var="tokenized"/></custom-block><custom-block s="reset parser"></custom-block><block s="doSetVar"><l>x object</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse expression</l></custom-block><list></list></block></block><block s="doSetVar"><l>tokenized</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>tokenize</l></custom-block><list><block var="y string"/></list></block><comment w="90" collapsed="false">parses y(t)-position string to object</comment></block><custom-block s="reset lexer, tokens: %l"><block var="tokenized"/></custom-block><custom-block s="reset parser"></custom-block><block s="doSetVar"><l>y object</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse expression</l></custom-block><list></list></block></block><block s="doFor"><l>interval number</l><l>0</l><block var="intervals"/><script><block s="doSetVar"><l>t value</l><block s="reportVariadicSum"><list><block var="start"/><block s="reportVariadicProduct"><list><block s="reportQuotient"><block s="reportDifference"><block var="end"/><block var="start"/></block><block var="intervals"/></block><block var="interval number"/></list></block></list></block></block><block s="gotoXY"><block s="evaluate"><block var="local calculator variable"/><list><block var="x object"/><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>t</l><block var="t value"/></custom-block></list></block></list></block><block s="evaluate"><block var="local calculator variable"/><list><block var="y object"/><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>t</l><block var="t value"/></custom-block></list></block></list></block></block><block s="doIf"><block s="reportNot"><block s="getPenDown"></block></block><script><block s="down"></block></script><list></list></block></script><comment w="120" collapsed="false">draws a function using the abstract syntax trees.</comment></block><block s="up"></block></script></block></script></block-definition><block-definition s="reporter to code: %&apos;reporter&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%repRing" initial="1"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>text</option></l><block s="reportTextSplit"><block var="reporter"/><l><option>blocks</option></l></block></block></block></script></block-definition><block-definition s="--- JSON Blocks ---" type="reporter" category="JSON tools"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="key: %txt value: %s"><l></l><l></l></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="get value of %l with key: %txt"><l/><l></l></custom-block></autolambda><list></list></block><block s="reifyReporter"><script><custom-block s="append %l to %l"><l/><l/></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="remove key %txt in %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="replace %txt of %l with %s"><l></l><l/><l></l></custom-block></script><list></list></block></list></block></block></script></block-definition><block-definition s="key: %&apos;key&apos; value: %&apos;value&apos;" type="reporter" category="JSON tools"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%s" initial="1"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="key"/><block var="value"/></list></block></block></script></block-definition><block-definition s="get value of %&apos;json&apos; with key: %&apos;key&apos;" type="reporter" category="JSON tools"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input><input type="%txt" initial="1"></input></inputs><script><block s="doWarp"><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doReport"><block s="reportListItem"><l>2</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><l/></block><block var="key"/></list></block></autolambda><list></list></block><block var="json"/></block></block></block></script><l>error</l><script><block s="doReport"><custom-block s="blank"></custom-block></block></script></custom-block></script></block></script></block-definition><block-definition s="blank" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="append %&apos;json input&apos; to %&apos;json&apos;" type="command" category="JSON tools"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doForEach"><l>key-value pairs</l><block var="json input"/><script><block s="doAddToList"><block var="key-value pairs"/><block var="json"/></block></script></block></script></block-definition><block-definition s="remove key %&apos;key&apos; in %&apos;json&apos;" type="command" category="JSON tools"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doWarp"><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doDeleteFromList"><block s="reportListIndex"><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><l/></block><block var="key"/></list></block></autolambda><list></list></block><block var="json"/></block></block><block var="json"/></block></script><l>error</l><script></script></custom-block></script></block></script></block-definition><block-definition s="replace %&apos;key&apos; of %&apos;json&apos; with %&apos;value&apos;" type="command" category="JSON tools"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%l" initial="1"></input><input type="%s" initial="1"></input></inputs><script><block s="doWarp"><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doReplaceInList"><l>2</l><block s="reportListItem"><block s="reportListIndex"><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><l/></block><block var="key"/></list></block></autolambda><list></list></block><block var="json"/></block></block><block var="json"/></block><block var="value"/></block></script><l>error</l><script></script></custom-block></script></block></script></block-definition><block-definition s="calculate %&apos;expression&apos; %&apos;variables&apos;" type="reporter" category="Calculator tools"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%group%s" expand="variables:" max="1"></input></inputs><script><block s="doDeclareVariables"><list><l>calculate par</l></list></block><block s="doSetVar"><l>calculate par</l><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>calculate</l></custom-block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="variables"/></block><l>0</l></list></block><script><block s="doReport"><block s="evaluate"><block var="calculate par"/><list><block var="expression"/><block s="reportNewList"><list></list></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="calculate par"/><list><block var="expression"/><custom-block s="variable definitions %s"><block s="reportListItem"><l>1</l><block var="variables"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="variable definitions %&apos;variable definitions&apos;" type="reporter" category="Calculator tools"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportTextSplit"><l></l><l>=</l></block></autolambda><list></list></block><block s="reportTextSplit"><block var="variable definitions"/><l>,</l></block></block></block><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="result"/></block><script><block s="doReplaceInList"><l>2</l><block s="reportListItem"><block var="i"/><block var="result"/></block><custom-block s="calculate %txt %group%s"><block s="reportListItem"><l>2</l><block s="reportListItem"><block var="i"/><block var="result"/></block></block><list></list></custom-block></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="Please use this code before evaluating in the first time." type="command" category="Calculator tools"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="reset regex library"></custom-block><custom-block s="reset tokenizer"></custom-block><custom-block s="reset calculator"></custom-block></script></block-definition><block-definition s="reset calculator" type="command" category="Calculator tools"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>calculator</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>functions</l><custom-block s="function pairs %group%s%repRing"><list><l>sqrt</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>sqrt</option></l><l></l></block></autolambda><list></list></block><l>cbrt</l><block s="reifyReporter"><autolambda><block s="reportPower"><l></l><block s="reportQuotient"><l>1</l><l>3</l></block></block></autolambda><list></list></block><l>sin</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>sin</option></l><l></l></block></autolambda><list></list></block><l>cos</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>cos</option></l><l></l></block></autolambda><list></list></block><l>tan</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>tan</option></l><l></l></block></autolambda><list></list></block><l>sec</l><block s="reifyReporter"><autolambda><block s="reportQuotient"><l>1</l><block s="reportMonadic"><l><option>cos</option></l><l></l></block></block></autolambda><list></list></block><l>csc</l><block s="reifyReporter"><autolambda><block s="reportQuotient"><l>1</l><block s="reportMonadic"><l><option>sin</option></l><l></l></block></block></autolambda><list></list></block><l>cot</l><block s="reifyReporter"><autolambda><block s="reportQuotient"><l>1</l><block s="reportMonadic"><l><option>tan</option></l><l></l></block></block></autolambda><list></list></block><l>arcsin</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>asin</option></l><l></l></block></autolambda><list></list></block><l>arccos</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>acos</option></l><l></l></block></autolambda><list></list></block><l>arctan</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>atan</option></l><l></l></block></autolambda><list></list></block><l>arcsec</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>cos</option></l><block s="reportQuotient"><l>1</l><l></l></block></block></autolambda><list></list></block><l>arccsc</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>asin</option></l><block s="reportQuotient"><l>1</l><l></l></block></block></autolambda><list></list></block><l>arccot</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><l>1</l><l></l></block></block></autolambda><list></list></block><l>ln</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>ln</option></l><l></l></block></autolambda><list></list></block><l>log</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>log</option></l><l></l></block></autolambda><list></list></block><l>exp</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>e^</option></l><l></l></block></autolambda><list></list></block><l>floor</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>floor</option></l><l></l></block></autolambda><list></list></block><l>ceil</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>ceiling</option></l><l></l></block></autolambda><list></list></block><l>round</l><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>floor</option></l><block s="reportVariadicSum"><list><l></l><l>0.5</l></list></block></block></autolambda><list></list></block></list></custom-block></custom-block><custom-block s="key: %txt value: %s"><l>operator function</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="operation par"/><l>+</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><block var="left par"/><block var="right par"/></list></block></autolambda><list><l>left par</l><l>right par</l></list></block></block></script><list><block s="reportVariadicEquals"><list><block var="operation par"/><l>-</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportDifference"><block var="left par"/><block var="right par"/></block></autolambda><list><l>left par</l><l>right par</l></list></block></block></script><block s="reportVariadicEquals"><list><block var="operation par"/><l>*</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><block var="left par"/><block var="right par"/></list></block></autolambda><list><l>left par</l><l>right par</l></list></block></block></script><block s="reportVariadicEquals"><list><block var="operation par"/><l>/</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportQuotient"><block var="left par"/><block var="right par"/></block></autolambda><list><l>left par</l><l>right par</l></list></block></block></script><block s="reportVariadicEquals"><list><block var="operation par"/><l>^</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportPower"><block var="left par"/><block var="right par"/></block></autolambda><list><l>left par</l><l>right par</l></list></block></block></script></list></block></script></block></script><list><l>operation par</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>calculate object</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>self function par</l></list></block><block s="doSetVar"><l>self function par</l><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>calculate object</l></custom-block></block><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>type</l></custom-block><l>number</l></list></block><script><block s="doReport"><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>value</l></custom-block></block></script><list><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>type</l></custom-block><l>identifier</l></list></block><script><block s="doDeclareVariables"><list><l>variable name par</l></list></block><block s="doSetVar"><l>variable name par</l><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>name</l></custom-block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="variable name par"/><l>pi</l></list></block><script><block s="doReport"><l>3.141592653589793</l></block></script><list><block s="reportVariadicEquals"><list><block var="variable name par"/><l>e</l></list></block><script><block s="doReport"><block s="reportMonadic"><l><option>e^</option></l><l>1</l></block></block></script></list></block><block s="doReport"><custom-block s="get value of %l with key: %txt"><block var="variables par"/><block var="variable name par"/></custom-block></block></script><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>type</l></custom-block><l>operation</l></list></block><script><block s="doReport"><block s="evaluate"><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>operator function</l></custom-block><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>operator</l></custom-block></list></block><list><block s="evaluate"><block var="self function par"/><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>left</l></custom-block><block var="variables par"/></list></block><block s="evaluate"><block var="self function par"/><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>right</l></custom-block><block var="variables par"/></list></block></list></block></block></script><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>type</l></custom-block><l>function call</l></list></block><script><block s="doDeclareVariables"><list><l>function name</l></list></block><block s="doSetVar"><l>function name</l><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>function name</l></custom-block></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>functions</l></custom-block></block><block var="function name"/></block><script><block s="doReport"><block s="evaluate"><custom-block s="get value of %l with key: %txt"><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>functions</l></custom-block><block var="function name"/></custom-block><list><block s="evaluate"><block var="self function par"/><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>input</l></custom-block><block var="variables par"/></list></block></list></block></block></script><script><block s="doReport"><custom-block s="call %txt with input variable value of %n"><block var="function name"/><block s="evaluate"><block var="self function par"/><list><custom-block s="get value of %l with key: %txt"><block var="object par"/><l>input</l></custom-block><block var="variables par"/></list></block></custom-block></block></script></block></script></list></block><block s="doReport"><custom-block s="blank"></custom-block></block></script></block></script><list><l>object par</l><l>variables par</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>tokenize</l><block s="reifyReporter"><autolambda><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>tokenize</l></custom-block><list><block var="expression par"/></list></block></autolambda><list><l>expression par</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>parse</l><block s="reifyReporter"><script><block s="doWarp"><script><custom-block s="reset lexer, tokens: %l"><block var="tokens par"/></custom-block><custom-block s="reset parser"></custom-block><block s="doReport"><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse expression</l></custom-block><list></list></block></block></script></block></script><list><l>tokens par</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>calculate</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>parsed par</l></list></block><block s="doSetVar"><l>parsed par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>parse</l></custom-block><list><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>tokenize</l></custom-block><list><block var="expression par"/></list></block></list></block></block><block s="doReport"><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>calculate object</l></custom-block><list><block var="parsed par"/><block var="variables par"/></list></block></block></script></block></script><list><l>expression par</l><l>variables par</l></list></block></custom-block></list></block></block></script></block-definition><block-definition s="function pairs %&apos;function pairs&apos;" type="reporter" category="Calculator tools"><header></header><code></code><translations></translations><inputs><input type="%group%s%repRing" expand="$nl&#xD;:" initial="2" min="2">function name</input></inputs><script><block s="doReport"><block var="function pairs"/></block></script></block-definition><block-definition s="reset parser" type="command" category="Calculator tools"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>parser</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>current token</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>read next token</l></custom-block><list></list></block></custom-block><custom-block s="key: %txt value: %s"><l>read next token</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>read token par</l><l>current token par</l></list></block><block s="doSetVar"><l>current token par</l><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block></block><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="current token par"/><l>type</l></custom-block><block var="expected type par"/></list></block><script><block s="doSetVar"><l>read token par</l><block var="current token par"/></block><custom-block s="replace %txt of %l with %s"><l>current token</l><block var="parser"/><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>read next token</l></custom-block><list></list></block></custom-block><block s="doReport"><block var="read token par"/></block></script><list></list></block><block s="doStopThis"><l><option>all</option></l></block></script></block></script><list><l>expected type par</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>parse function call</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>token read par</l><l>no use parameter</l><l>subexpression par</l></list></block><block s="doSetVar"><l>token read par</l><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block></block><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="token input par"/><l>type</l></custom-block><l>identifier</l></list></block><script><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="token read par"/><l>type</l></custom-block><l>open par</l></list></block><script><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>open par</l></list></block></block><block s="doSetVar"><l>subexpression par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse expression</l></custom-block><list></list></block></block><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>close par</l></list></block></block><block s="doReport"><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>type</l><l>function call</l></custom-block><custom-block s="key: %txt value: %s"><l>function name</l><custom-block s="get value of %l with key: %txt"><block var="token input par"/><l>name</l></custom-block></custom-block><custom-block s="key: %txt value: %s"><l>input</l><block var="subexpression par"/></custom-block></list></block></block></script><list></list></block><block s="doReport"><l></l></block></script><list></list></block><block s="doReport"><l></l></block></script></block></script><list><l>token input par</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>parse factor</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>token read par</l><l>result par</l><l>no use parameter</l><l>subexpression par</l></list></block><block s="doSetVar"><l>token read par</l><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block></block><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="token read par"/><l>type</l></custom-block><l>number</l></list></block><script><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>number</l></list></block></block><block s="doReport"><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>type</l><l>number</l></custom-block><custom-block s="key: %txt value: %s"><l>value</l><block s="reportVariadicProduct"><list><custom-block s="get value of %l with key: %txt"><block var="token read par"/><l>token</l></custom-block><l>1</l></list></block></custom-block></list></block></block></script><list><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="token read par"/><l>type</l></custom-block><l>identifier</l></list></block><script><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>identifier</l></list></block></block><block s="doSetVar"><l>result par</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>type</l><l>identifier</l></custom-block><custom-block s="key: %txt value: %s"><l>name</l><custom-block s="get value of %l with key: %txt"><block var="token read par"/><l>token</l></custom-block></custom-block></list></block></block><block s="doSetVar"><l>token read par</l><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block></block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="token read par"/><custom-block s="blank"></custom-block></list></block></block><script><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="token read par"/><l>type</l></custom-block><l>open par</l></list></block><script><block s="doSetVar"><l>result par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse function call</l></custom-block><list><block var="result par"/></list></block></block></script><list></list></block></script><list></list></block><block s="doReport"><block var="result par"/></block></script><block s="reportVariadicEquals"><list><custom-block s="get value of %l with key: %txt"><block var="token read par"/><l>type</l></custom-block><l>open par</l></list></block><script><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>open par</l></list></block></block><block s="doSetVar"><l>subexpression par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse expression</l></custom-block><list></list></block></block><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>close par</l></list></block></block><block s="doReport"><block var="subexpression par"/></block></script></list></block></script></block></script><list></list></block></custom-block><custom-block s="key: %txt value: %s"><l>parse exponent</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result par</l><l>operator par</l><l>next tokens par</l><l>no use parameter</l></list></block><block s="doSetVar"><l>result par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse factor</l></custom-block><list></list></block></block><block s="doUntil"><block s="reportNot"><block s="reportVariadicEquals"><list><custom-block s="get json property %l ?. %txt"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block><l>token</l></custom-block><l>^</l></list></block></block><script><block s="doSetVar"><l>operator par</l><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block></block><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>operator</l></list></block></block><block s="doSetVar"><l>next tokens par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse factor</l></custom-block><list></list></block></block><block s="doSetVar"><l>result par</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>type</l><l>operation</l></custom-block><custom-block s="key: %txt value: %s"><l>operator</l><custom-block s="get value of %l with key: %txt"><block var="operator par"/><l>token</l></custom-block></custom-block><custom-block s="key: %txt value: %s"><l>left</l><block var="result par"/></custom-block><custom-block s="key: %txt value: %s"><l>right</l><block var="next tokens par"/></custom-block></list></block></block></script></block><block s="doReport"><block var="result par"/></block></script></block></script><list></list></block></custom-block><custom-block s="key: %txt value: %s"><l>parse term</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result par</l><l>operator par</l><l>next tokens par</l><l>no use parameter</l></list></block><block s="doSetVar"><l>result par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse exponent</l></custom-block><list></list></block></block><block s="doUntil"><block s="reportNot"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><custom-block s="get json property %l ?. %txt"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block><l>token</l></custom-block><l>*</l></list></block><block s="reportVariadicEquals"><list><custom-block s="get json property %l ?. %txt"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block><l>token</l></custom-block><l>/</l></list></block></list></block></block><script><block s="doSetVar"><l>operator par</l><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block></block><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>operator</l></list></block></block><block s="doSetVar"><l>next tokens par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse exponent</l></custom-block><list></list></block></block><block s="doSetVar"><l>result par</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>type</l><l>operation</l></custom-block><custom-block s="key: %txt value: %s"><l>operator</l><custom-block s="get value of %l with key: %txt"><block var="operator par"/><l>token</l></custom-block></custom-block><custom-block s="key: %txt value: %s"><l>left</l><block var="result par"/></custom-block><custom-block s="key: %txt value: %s"><l>right</l><block var="next tokens par"/></custom-block></list></block></block></script></block><block s="doReport"><block var="result par"/></block></script></block></script><list></list></block></custom-block><custom-block s="key: %txt value: %s"><l>parse expression</l><block s="reifyReporter"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result par</l><l>operator par</l><l>next tokens par</l><l>no use parameter</l></list></block><block s="doSetVar"><l>result par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse term</l></custom-block><list></list></block></block><block s="doUntil"><block s="reportNot"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><custom-block s="get json property %l ?. %txt"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block><l>token</l></custom-block><l>+</l></list></block><block s="reportVariadicEquals"><list><custom-block s="get json property %l ?. %txt"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block><l>token</l></custom-block><l>-</l></list></block></list></block></block><script><block s="doSetVar"><l>operator par</l><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>current token</l></custom-block></block><block s="doSetVar"><l>no use parameter</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>read next token</l></custom-block><list><l>operator</l></list></block></block><block s="doSetVar"><l>next tokens par</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse term</l></custom-block><list></list></block></block><block s="doSetVar"><l>result par</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>type</l><l>operation</l></custom-block><custom-block s="key: %txt value: %s"><l>operator</l><custom-block s="get value of %l with key: %txt"><block var="operator par"/><l>token</l></custom-block></custom-block><custom-block s="key: %txt value: %s"><l>left</l><block var="result par"/></custom-block><custom-block s="key: %txt value: %s"><l>right</l><block var="next tokens par"/></custom-block></list></block></block></script></block><block s="doReport"><block var="result par"/></block></script></block></script><list></list></block></custom-block></list></block></block></script></block-definition><block-definition s="get json property %&apos;json&apos; ?. %&apos;property&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input><input type="%txt" initial="1"></input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="json"/><custom-block s="blank"></custom-block></list></block></block><script><block s="doReport"><custom-block s="get value of %l with key: %txt"><block var="json"/><block var="property"/></custom-block></block></script><script><block s="doReport"><custom-block s="blank"></custom-block></block></script></block></script></block-definition><block-definition s="reset lexer, tokens: %&apos;tokens&apos;" type="command" category="Calculator tools"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doSetVar"><l>lexer</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>get type of token</l><block s="reifyReporter"><script><block s="doIf"><block s="reportIsA"><block var="token par"/><l><option>number</option></l></block><script><block s="doReport"><l>number</l></block></script><list><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>letter checker</l></custom-block><list><block var="token par"/></list></block><script><block s="doReport"><l>identifier</l></block></script><block s="reportVariadicEquals"><list><block var="token par"/><l>(</l></list></block><script><block s="doReport"><l>open par</l></block></script><block s="reportVariadicEquals"><list><block var="token par"/><l>)</l></list></block><script><block s="doReport"><l>close par</l></block></script><l><bool>true</bool></l><script><block s="doReport"><l>operator</l></block></script></list></block></script><list><l>token par</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>position</l><l>1</l></custom-block><custom-block s="key: %txt value: %s"><l>read next token</l><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>return value par</l></list></block><block s="doSetVar"><l>return value par</l><block s="reportListItem"><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>position</l></custom-block><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>tokens</l></custom-block></block></block><custom-block s="replace %txt of %l with %s"><l>position</l><block var="lexer"/><block s="reportVariadicSum"><list><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>position</l></custom-block><l>1</l></list></block></custom-block><block s="doReport"><block var="return value par"/></block></script><list></list></block></custom-block><custom-block s="key: %txt value: %s"><l>read current token</l><block s="reifyReporter"><script><block s="doReport"><block s="reportListItem"><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>position</l></custom-block><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>tokens</l></custom-block></block></block></script><list></list></block></custom-block></list></block></block><custom-block s="append %l to %l"><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>tokens</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>type</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="lexer"/><l>get type of token</l></custom-block><list><l></l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>token</l><l></l></custom-block></list></block></autolambda><list></list></block><block var="tokens"/></block></custom-block></list></block><block var="lexer"/></custom-block></script></block-definition><block-definition s="reset tokenizer" type="command" category="Calculator tools"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>tokenizer</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>number checker</l><block s="reifyPredicate"><autolambda><block s="reportVariadicOr"><list><block s="reportIsA"><l></l><l><option>number</option></l></block><block s="reportVariadicEquals"><list><l></l><l>-</l></list></block></list></block></autolambda><list></list></block></custom-block><custom-block s="key: %txt value: %s"><l>letter checker</l><block s="reifyPredicate"><script><block s="doDeclareVariables"><list><l>matches letter par</l></list></block><block s="doSetVar"><l>matches letter par</l><custom-block s="get value of %l with key: %txt"><block var="regex library"/><l>matches letter</l></custom-block></block><block s="doReport"><block s="reportVariadicAnd"><list><block s="evaluate"><block var="matches letter par"/><list><block s="reportLetter"><l>1</l><block var="token to check"/></block><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block s="reportVariadicAnd"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="matches letter par"/><list><l></l><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></autolambda><list></list></block><block s="reportCDR"><block s="reportTextSplit"><block var="token to check"/><l><option>letter</option></l></block></block></block></block></list></block></block></script><list><l>token to check</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>tokenize</l><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>character index par</l><l>processing token name par</l><l>tokenized result par</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>character index par</l><l>1</l></block><block s="doSetVar"><l>processing token name par</l><custom-block s="blank"></custom-block></block><block s="doSetVar"><l>tokenized result par</l><block s="reportNewList"><list></list></block></block><block s="doDeclareVariables"><list><l>continue repeating</l></list></block><block s="doSetVar"><l>continue repeating</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doUntil"><block s="reportVariadicGreaterThan"><list><block var="character index par"/><block s="reportTextAttribute"><l><option>length</option></l><block var="expression string par"/></block></list></block><script><block s="doSetVar"><l>continue repeating</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doDeclareVariables"><list><l>character by index par</l></list></block><block s="doSetVar"><l>character by index par</l><block s="reportLetter"><block var="character index par"/><block var="expression string par"/></block></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="character by index par"/><l> </l></list></block><block s="reportVariadicEquals"><list><block var="character by index par"/><custom-block s="code %code"><l>&#xD;</l></custom-block></list></block></list></block><script><block s="doChangeVar"><l>character index par</l><l>1</l></block><block s="doSetVar"><l>continue repeating</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="doIf"><block s="reportNot"><block var="continue repeating"/></block><script><block s="doIf"><block s="reportIsA"><block var="character by index par"/><l><option>number</option></l></block><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportVariadicOr"><list><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>number checker</l></custom-block><list><block var="processing token name par"/></list></block><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>letter checker</l></custom-block><list><block var="processing token name par"/></list></block><block s="reportVariadicEquals"><list><block var="processing token name par"/><l>-</l></list></block></list></block></block><block s="reportNot"><block s="reportVariadicEquals"><list><block var="processing token name par"/><custom-block s="blank"></custom-block></list></block></block></list></block><script><block s="doAddToList"><block var="processing token name par"/><block var="tokenized result par"/></block><block s="doSetVar"><l>processing token name par</l><custom-block s="blank"></custom-block></block></script><list></list></block><block s="doSetVar"><l>processing token name par</l><block s="reportJoinWords"><list><block var="processing token name par"/><block var="character by index par"/></list></block></block></script><list><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="character by index par"/><l>.</l></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block var="character by index par"/><l>-</l></list></block><block s="reportVariadicEquals"><list><block var="processing token name par"/><custom-block s="blank"></custom-block></list></block><block s="reportVariadicOr"><list><block s="reportListContainsItem"><block s="reportNewList"><list><l>+</l><l>-</l><l>*</l><l>/</l><l>^</l><l>(</l></list></block><block s="reportListItem"><l><option>last</option></l><block var="tokenized result par"/></block></block><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="tokenized result par"/></block><l>0</l></list></block></list></block></list></block></list></block><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportVariadicAnd"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block s="reportTextSplit"><block var="processing token name par"/><l><option>letter</option></l></block></block></block></block><block s="reportNot"><block s="reportVariadicEquals"><list><block var="processing token name par"/><custom-block s="blank"></custom-block></list></block></block></list></block><script><block s="doAddToList"><block var="processing token name par"/><block var="tokenized result par"/></block><block s="doSetVar"><l>processing token name par</l><custom-block s="blank"></custom-block></block></script><list></list></block><block s="doSetVar"><l>processing token name par</l><block s="reportJoinWords"><list><block var="processing token name par"/><block var="character by index par"/></list></block></block></script><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>letter checker</l></custom-block><list><block var="character by index par"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>letter checker</l></custom-block><list><block var="processing token name par"/></list></block></block><block s="reportNot"><block s="reportVariadicEquals"><list><block var="processing token name par"/><custom-block s="blank"></custom-block></list></block></block></list></block><script><block s="doAddToList"><block var="processing token name par"/><block var="tokenized result par"/></block><block s="doSetVar"><l>processing token name par</l><custom-block s="blank"></custom-block></block></script><list></list></block><block s="doSetVar"><l>processing token name par</l><block s="reportJoinWords"><list><block var="processing token name par"/><block var="character by index par"/></list></block></block></script><l><bool>true</bool></l><script><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="processing token name par"/><custom-block s="blank"></custom-block></list></block></block><script><block s="doAddToList"><block var="processing token name par"/><block var="tokenized result par"/></block><block s="doSetVar"><l>processing token name par</l><custom-block s="blank"></custom-block></block></script><list></list></block><block s="doAddToList"><block var="character by index par"/><block var="tokenized result par"/></block></script></list></block><block s="doChangeVar"><l>character index par</l><l>1</l></block></script><list></list></block></script></block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="processing token name par"/><custom-block s="blank"></custom-block></list></block></block><script><block s="doAddToList"><block var="processing token name par"/><block var="tokenized result par"/></block></script><list></list></block><block s="doReport"><block var="tokenized result par"/></block></script></block></script><list><l>expression string par</l></list></block></custom-block></list></block></block></script></block-definition><block-definition s="reset regex library" type="command" category="Calculator tools"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>regex library</l><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><l>alphabet contains letter</l><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block s="reportUnicodeAsLetter"><block s="reportVariadicSum"><list><block s="reportUnicode"><block var="letter to convert to index"/></block><block s="reportNumbers"><l>0</l><l>25</l></block></list></block></block><block var="letter to match"/></block></autolambda><list><l>letter to match</l><l>letter to convert to index</l></list></block></custom-block><custom-block s="key: %txt value: %s"><l>matches letter</l><block s="reifyPredicate"><script><block s="doDeclareVariables"><list><l>alphabet contains letter par</l></list></block><block s="doSetVar"><l>alphabet contains letter par</l><custom-block s="get value of %l with key: %txt"><block var="regex library"/><l>alphabet contains letter</l></custom-block></block><block s="doReport"><block s="reportVariadicOr"><list><block s="evaluate"><block var="alphabet contains letter par"/><list><block var="letter to match"/><l>A</l></list></block><block s="evaluate"><block var="alphabet contains letter par"/><list><block var="letter to match"/><l>a</l></list></block><block s="reportVariadicEquals"><list><block var="letter to match"/><l>_</l></list></block><block s="reportVariadicAnd"><list><block var="flag"/><block s="reportIsA"><block var="letter to match"/><l><option>number</option></l></block></list></block></list></block></block></script><list><l>letter to match</l><l>flag</l></list></block></custom-block></list></block></block></script></block-definition><block-definition s="$reset-1-255-0-0 $all-1-255-0-0" type="command" category="Calculator tools"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>calculator</l><l>(reset)</l></block><block s="doSetVar"><l>lexer</l><l>(reset)</l></block><block s="doSetVar"><l>parser</l><l>(reset)</l></block><block s="doSetVar"><l>regex library</l><l>(reset)</l></block><block s="doSetVar"><l>tokenizer</l><l>(reset)</l></block></script></block-definition><block-definition s="define function %&apos;function name&apos; = %&apos;expression input&apos; with input variable of %&apos;input variable&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%txt" initial="1"></input><input type="%txt" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>tokenized</l><l>parsed function</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>tokenized</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="tokenizer"/><l>tokenize</l></custom-block><list><block var="expression input"/></list></block><comment w="90" collapsed="false">parses the function string to define. it parses to object</comment></block><custom-block s="reset lexer, tokens: %l"><block var="tokenized"/></custom-block><custom-block s="reset parser"></custom-block><block s="doSetVar"><l>parsed function</l><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="parser"/><l>parse expression</l></custom-block><list></list></block></block><block s="doAddToList"><block s="reportNewList"><list><block var="function name"/><block var="input variable"/><block var="parsed function"/><block var="expression input"/></list></block><block var="custom function definitions"/></block><block s="doBroadcast"><l>update function list</l><list></list></block></script></block></script></block-definition><block-definition s="get value by key with base key %&apos;base key&apos; base value %&apos;base value&apos; and target key %&apos;target key&apos; in %&apos;table&apos;" type="reporter" category="lists"><header></header><code></code><translations>ko:주어져 있는 키 _ 와 값 _ 에 대하여 찾을 값의 키 _ 에 해당하는 값 구하기 ( 리스트 _ 에 대한)&#xD;</translations><inputs><input type="%txt" initial="1"></input><input type="%s" initial="1"></input><input type="%txt" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>first row of table</l><l>value pairs</l><l>base key index</l><l>target key index</l></list></block><block s="doSetVar"><l>first row of table</l><block s="reportListItem"><l>1</l><block var="table"/></block></block><block s="doSetVar"><l>base key index</l><block s="reportListIndex"><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicEquals"><list><l></l><block var="base key"/></list></block></autolambda><list></list></block><block var="first row of table"/></block></block></block><block s="doSetVar"><l>target key index</l><block s="reportListIndex"><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicEquals"><list><l></l><block var="target key"/></list></block></autolambda><list></list></block><block var="first row of table"/></block></block></block><block s="doSetVar"><l>value pairs</l><block s="reportCDR"><block var="table"/></block></block><block s="doReport"><block s="reportListItem"><block var="target key index"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="base key index"/><l/></block><block var="base value"/></list></block></autolambda><list></list></block><block var="value pairs"/></block></block></block></script></block-definition><block-definition s="call %&apos;function input&apos; with input variable value of %&apos;input variable value&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%n" initial="1"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>input variable</l><l>function content</l></list></block><block s="doSetVar"><l>input variable</l><custom-block s="get value by key with base key %txt base value %s and target key %txt in %l"><l>function name</l><block var="function input"/><l>input variable</l><block var="custom function definitions"/></custom-block></block><block s="doSetVar"><l>function content</l><custom-block s="get value by key with base key %txt base value %s and target key %txt in %l"><l>function name</l><block var="function input"/><l>content</l><block var="custom function definitions"/></custom-block></block><block s="doReport"><block s="evaluate"><custom-block s="get value of %l with key: %txt"><block var="calculator"/><l>calculate object</l></custom-block><list><block var="function content"/><block s="reportNewList"><list><custom-block s="key: %txt value: %s"><block var="input variable"/><block var="input variable value"/></custom-block></list></block></list></block></block></script></block></script></block-definition><block-definition s="ask for function props and define it" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>function props</l><l>option</l><l>function name</l><l>input variable name</l><l>function contents</l></list></block><block s="doSetVar"><l>option</l><block s="reportNewList"><list><l>function options</l><block s="reportNewList"><list><l>name a function</l><l>name an input variable</l><l>define function contents</l><l>done</l></list></block></list></block></block><block s="doAsk"><block var="option"/></block><block s="doUntil"><block s="reportVariadicEquals"><list><block s="getLastAnswer"></block><l>done</l></list></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="getLastAnswer"></block><l>name a function</l></list></block><script><block s="doAsk"><l>enter function name</l></block><block s="doSetVar"><l>function name</l><block s="getLastAnswer"></block></block></script><list><block s="reportVariadicEquals"><list><block s="getLastAnswer"></block><l>name an input variable</l></list></block><script><block s="doAsk"><l>enter input variable name</l></block><block s="doSetVar"><l>input variable name</l><block s="getLastAnswer"></block></block></script><block s="reportVariadicEquals"><list><block s="getLastAnswer"></block><l>define function contents</l></list></block><script><block s="doAsk"><block s="reportJoinWords"><list><l>enter function contents in terms of &apos;</l><block var="input variable name"/><l>&apos;</l></list></block></block><block s="doSetVar"><l>function contents</l><block s="getLastAnswer"></block></block></script></list></block><block s="doAsk"><block var="option"/></block></script></block><custom-block s="define function %txt = %txt with input variable of %txt"><block var="function name"/><block var="function contents"/><block var="input variable name"/></custom-block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="1" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="2987"><pentrails>data:image/png;base64,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</pentrails><costumes><list id="2988"><item><ref mediaID="Parametric plotter using natural expression input_Stage_cst_XY Grid"></ref></item></list></costumes><sounds><list struct="atomic" id="2989"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="100" y="100.00000000000001" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="21,0,128,1" pen="tip" id="2994"><costumes><list struct="atomic" id="2995"></list></costumes><sounds><list struct="atomic" id="2996"></list></sounds><blocks></blocks><variables></variables><scripts><script x="555" y="81"><block s="receiveKey"><l><option>r</option></l><list></list></block><block s="doDeleteFromList"><l><option>all</option></l><block var="custom function definitions"/></block><block s="doAddToList"><block var="first row"/><block var="custom function definitions"/></block><block s="doBroadcast"><l>update function list</l><list></list></block><block s="doStopThis"><l><option>all</option></l></block></script><script x="10" y="10"><block s="receiveGo"></block><custom-block s="Please use this code before evaluating in the first time."></custom-block><block s="doDeclareVariables"><list><l>options</l></list></block><block s="doWarp"><script><block s="doShowVar"><l>custom function definitions as string</l></block><block s="show"></block><block s="up"></block><block s="clear"></block><block s="gotoXY"><l>-200</l><l>100</l></block><block s="setColor"><color>21,0,128,1</color></block><block s="doDeleteFromList"><l><option>all</option></l><block var="custom function definitions"/></block><block s="doAddToList"><block var="first row"/><block var="custom function definitions"/></block><block s="doBroadcast"><l>update function list</l><list></list></block></script></block><block s="doSetVar"><l>options</l><block s="reportNewList"><list><l>Which one would you like to define?</l><block s="reportNewList"><list><l>Custom function</l><l>Function to graph</l></list></block></list></block></block><block s="doAsk"><block var="options"/></block><block s="doUntil"><block s="reportVariadicEquals"><list><block s="getLastAnswer"></block><l>Function to graph</l></list></block><script><custom-block s="ask for function props and define it"></custom-block><block s="doAsk"><block var="options"/></block></script></block><block s="doSetVar"><l>position plot</l><block s="reportNewList"><list></list></block></block><block s="doAsk"><l>Enter expression to plot. (x(t)-position)</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="position plot"/></block><block s="doAsk"><l>Enter expression to plot. (y(t)-position)</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="position plot"/></block><block s="doAsk"><l>Enter the starting point of t-value.</l></block><block s="doAddToList"><custom-block s="calculate %txt %group%s"><block s="getLastAnswer"></block><list></list></custom-block><block var="position plot"/></block><block s="doAsk"><l>Enter the ending point of t-value.</l></block><block s="doAddToList"><custom-block s="calculate %txt %group%s"><block s="getLastAnswer"></block><list></list></custom-block><block var="position plot"/></block><block s="doAsk"><l>Enter the interval count.</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="position plot"/></block><block s="doHideVar"><l>custom function definitions as string</l></block><block s="hide"></block><block s="doWarp"><script><block s="write"><block s="reportJoinWords"><list><l>x(t)=</l><block s="reportListItem"><l>1</l><block var="position plot"/></block></list></block><l>10</l></block><block s="gotoXY"><l>-200</l><l>88</l></block><block s="write"><block s="reportJoinWords"><list><l>y(t)=</l><block s="reportListItem"><l>2</l><block var="position plot"/></block></list></block><l>10</l></block><block s="gotoXY"><l>-200</l><l>76</l></block><block s="write"><block s="reportJoinWords"><list><l>start=</l><block s="reportListItem"><l>3</l><block var="position plot"/></block><l>, end=</l><block s="reportListItem"><l>4</l><block var="position plot"/></block><l>, intervals=</l><block s="reportListItem"><l>5</l><block var="position plot"/></block></list></block><l>10</l></block></script></block><custom-block s="plot x: %txt y: %txt with %n intervals from %n to %n"><block s="reportListItem"><l>1</l><block var="position plot"/></block><block s="reportListItem"><l>2</l><block var="position plot"/></block><block s="reportListItem"><l>5</l><block var="position plot"/></block><block s="reportListItem"><l>3</l><block var="position plot"/></block><block s="reportListItem"><l>4</l><block var="position plot"/></block></custom-block></script><script x="459" y="381.0000000000001"><block s="receiveMessage"><l>update function list</l><list></list></block><block s="doWarp"><script><block s="doDeleteFromList"><l><option>all</option></l><block var="custom function definitions as string"/></block><block s="doForEach"><l>custom function</l><block s="reportCDR"><block var="custom function definitions"/></block><script><block s="doAddToList"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="custom function"/></block><l>(</l><block s="reportListItem"><l>2</l><block var="custom function"/></block><l>)=</l><block s="reportListItem"><l>4</l><block var="custom function"/></block></list></block><block var="custom function definitions as string"/></block></script></block></script></block></script><script x="488" y="257.16666666666674"><block s="doSetVar"><l>first row</l><block s="reportNewList"><list><l>function name</l><l>input variable</l><l>content</l><l>content as string</l></list></block></block><custom-block s="$reset-1-255-0-0 $all-1-255-0-0"></custom-block></script></scripts></sprite><sprite name="test blocks" idx="2" x="89" y="-124" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="163.20000000000002,29.37599999999999,0,1" pen="tip" id="3241"><costumes><list struct="atomic" id="3242"></list></costumes><sounds><list struct="atomic" id="3243"></list></sounds><blocks></blocks><variables></variables><scripts></scripts></sprite><watcher var="position plot" style="normal" x="10" y="46.00000399999999" color="243,118,29" hidden="true"/><watcher var="custom function definitions" style="normal" x="266" y="15.00000399999999" color="243,118,29" extX="185" extY="72" hidden="true"/><sprite name="calculator" idx="3" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="80,80,80,1" pen="tip" id="3249"><costumes><list struct="atomic" id="3250"></list></costumes><sounds><list struct="atomic" id="3251"></list></sounds><blocks></blocks><variables></variables><scripts><script x="29" y="205"><block s="receiveGo"></block><block s="hide"></block><block s="gotoXY"><l>0</l><l>0</l></block></script><script x="458" y="317"><block s="bubble"><custom-block s="--- JSON Blocks ---"></custom-block></block></script><script x="279" y="541"><custom-block s="$reset-1-255-0-0 $all-1-255-0-0"></custom-block></script><script x="20" y="10"><block s="receiveGo"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="hide"></block></script><script x="169" y="478.83333333333337"><block s="bubble"><custom-block s="calculate %txt %group%s"><l>round(sin(30)*2)</l><list></list></custom-block></block></script><script x="162" y="410"><custom-block s="Please use this code before evaluating in the first time."></custom-block></script></scripts></sprite><watcher var="custom function definitions as string" style="normal" x="246" y="15.000005999999985" color="243,118,29" extX="184" extY="134" hidden="true"/><watcher var="first row" style="normal" x="10" y="139.00000599999998" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="position plot"><list struct="atomic" id="3279">sqrt(t)*100,t^2*100,0,1,100</list></variable><variable name="custom function definitions"><list id="3280"><item><list struct="atomic" id="3281">function name,input variable,content,content as string</list></item></list></variable><variable name="regex library"><l>(reset)</l></variable><variable name="tokenizer"><l>(reset)</l></variable><variable name="lexer"><l>(reset)</l></variable><variable name="parser"><l>(reset)</l></variable><variable name="calculator"><l>(reset)</l></variable><variable name="custom function definitions as string"><list struct="atomic" id="3282"></list></variable><variable name="first row"><list struct="atomic" id="3283">function name,input variable,content,content as string</list></variable></variables></scene></scenes></project><media name="Parametric plotter using natural expression input" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><costume name="XY Grid" center-x="240" center-y="180" image="data:image/png;base64,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" mediaID="Parametric plotter using natural expression input_Stage_cst_XY Grid"/></media></snapdata>