<snapdata remixID="9959792"><project name="sentencegenerator" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes>n to add a noun&#xD;v to add a verb&#xD;j to add an adjective&#xD;d to add an adverb&#xD;m to add a name&#xD;p to add a preposition&#xD;&#xD;spacebar to generate a sentence</notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" 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" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="210.97198016826923" y="10"><block s="receiveKey"><l><option>space</option></l></block><block s="doSayFor"><custom-block s="GenSentence"></custom-block><l>2.5</l></block></script><script x="10" y="25.00000000000003"><block s="receiveKey"><l><option>n</option></l></block><block s="doAsk"><l>What noun to add?</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="nouns"/></block></script><script x="15" y="123.66666666666666"><block s="receiveKey"><l><option>v</option></l></block><block s="doAsk"><l>What verb to add?</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="verbs"/></block></script><script x="11" y="230.66666666666677"><block s="receiveKey"><l><option>j</option></l></block><block s="doAsk"><l>What adjective to add?</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="adjectives"/></block></script><script x="12" y="331.66666666666674"><block s="receiveKey"><l><option>d</option></l></block><block s="doAsk"><l>What adverb to add?</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="adverb"/></block></script><script x="18" y="424.66666666666674"><block s="receiveKey"><l><option>m</option></l></block><block s="doAsk"><l>What name to add?</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="names"/></block></script><script x="22" y="521.6666666666667"><block s="receiveKey"><l><option>p</option></l></block><block s="doAsk"><l>What preposition to add?</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="preposition"/></block></script><script x="234.97198016826928" y="75.00000000000003"><block s="receiveGo"></block><block s="doSetVar"><l>nouns</l><block s="reportNewList"><list><l>slice of cheese</l><l>frog</l><l>table</l><l>apple</l></list></block></block><block s="doSetVar"><l>verbs</l><block s="reportNewList"><list><l>hits</l><l>spins</l><l>walks</l></list></block></block><block s="doSetVar"><l>adjectives</l><block s="reportNewList"><list><l>blue</l><l>loud</l><l>rough</l></list></block></block><block s="doSetVar"><l>articles</l><block s="reportNewList"><list><l>the</l><l>a</l></list></block></block><block s="doSetVar"><l>preposition</l><block s="reportNewList"><list><l>under</l><l>over</l><l>on</l><l>next to</l></list></block></block><block s="doSetVar"><l>adverb</l><block s="reportNewList"><list><l>slowly</l><l>quickly</l><l>sadly</l><l>gladly</l></list></block></block><block s="doSetVar"><l>names</l><block s="reportNewList"><list><l>Bob</l><l>Sam</l><l>John</l></list></block></block><block s="doSetVar"><l>voweltable</l><block s="reportNewList"><list><l>a</l><l>e</l><l>i</l><l>o</l><l>u</l></list></block></block><block s="doSetVar"><l>partofspeechtables</l><block s="reportNewList"><list><block var="adjectives"/><block var="adverb"/><block var="articles"/><block var="nouns"/><block var="preposition"/><block var="names"/><block var="verbs"/></list></block></block></script><script x="263" y="384.66666666666674"><block s="receiveKey"><l><option>x</option></l></block><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doAsk"><l>which part of speech to remove from?</l></block><block s="doSetVar"><l>a</l><custom-block s="var %s"><block s="getLastAnswer"></block></custom-block></block><block s="doAsk"><l>which item to remove from list?</l></block><block s="doSetVar"><l>b</l><block s="getLastAnswer"></block></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doDeleteFromList"><block var="b"/><block var="a"/></block></script><l>error</l><script><block s="doSayFor"><l>Invalid Request</l><l>2</l></block></script></custom-block></script></scripts></sprite><watcher var="verbs" style="normal" x="10" y="31.000001999999995" color="243,118,29" extX="80" extY="70"/><watcher var="adjectives" style="normal" x="10" y="52.00000399999999" color="243,118,29" extX="80" extY="70"/><watcher var="articles" style="normal" x="10" y="73.00000599999998" color="243,118,29" extX="80" extY="70"/><watcher var="preposition" style="normal" x="10" y="94.00000799999998" color="243,118,29" extX="80" extY="70"/><watcher var="adverb" style="normal" x="10" y="115.00000999999997" color="243,118,29" extX="80" extY="70"/><watcher var="voweltable" style="normal" x="10" y="229.00001399999996" color="243,118,29" extX="80" extY="70"/><watcher var="nouns" style="normal" x="122" y="7" color="243,118,29" extX="80" extY="70"/><watcher var="partofspeechtables" style="normal" x="364" y="211.00001599999996" color="243,118,29" extX="200" extY="137"/><watcher var="names" style="normal" x="10" y="136.00001199999997" color="243,118,29" extX="80" extY="70"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="GenSentence" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>sentence</l></list></block><block s="doSetVar"><l>sentence</l><block s="reportJoinWords"><list><custom-block s="getNounwithArticleOrProperNoun"></custom-block><l> </l><block s="reportListItem"><l><option>any</option></l><block var="adverb"/></block><l> </l><block s="reportListItem"><l><option>any</option></l><block var="verbs"/></block><l> </l><custom-block s="getNounwithArticleOrProperNoun"></custom-block></list></block></block><block s="doIf"><block s="reportLessThan"><l>1</l><block s="reportRandom"><l>1</l><l>2</l></block></block><script><block s="doSetVar"><l>sentence</l><block s="reportJoinWords"><list><block var="sentence"/><l> </l><custom-block s="genPropositionPhrase"></custom-block></list></block></block></script></block><block s="doReport"><block var="sentence"/></block></script></block-definition><block-definition s="genPropositionPhrase" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l></list></block><block s="doSetVar"><l>a</l><block s="reportListItem"><l><option>any</option></l><block var="preposition"/></block></block><block s="doSetVar"><l>b</l><custom-block s="getNounwithArticleOrProperNoun"></custom-block></block><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block var="a"/><l> </l><block var="b"/></list></block></block><block s="doReport"><block var="c"/></block></script></block-definition><block-definition s="getNounwithArticleOrProperNoun" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>phrase</l><l>b</l><l>c</l></list></block><block s="doIfElse"><block s="reportLessThan"><l>1</l><block s="reportRandom"><l>1</l><l>2</l></block></block><script><block s="doSetVar"><l>b</l><block s="reportListItem"><l><option>any</option></l><block var="articles"/></block></block><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block s="reportListItem"><l><option>any</option></l><block var="adjectives"/></block><l> </l><block s="reportListItem"><l><option>any</option></l><block var="nouns"/></block></list></block></block><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block var="b"/><l>a</l></block><block s="reportListContainsItem"><block var="voweltable"/><block s="reportLetter"><l>1</l><block var="c"/></block></block></block><script><block s="doSetVar"><l>b</l><l>an</l></block></script></block><block s="doSetVar"><l>phrase</l><block s="reportJoinWords"><list><block var="b"/><l> </l><block var="c"/></list></block></block></script><script><block s="doSetVar"><l>phrase</l><block s="reportListItem"><l><option>any</option></l><block var="names"/></block></block></script></block><block s="doReport"><block var="phrase"/></block></script></block-definition><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;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="let %upvar be %s"><l>reset</l><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>var oldHandleError = proc.handleError,&#xD;    oldCatchingErrors = proc.isCatchingErrors;&#xD;&#xD;return function(){&#xD; proc.handleError = oldHandleError;&#xD; proc.isCatchingErrors = oldCatchingErrors;&#xD;}</l></block><list></list></block></custom-block><block s="doCallCC"><block s="reifyScript"><script><block s="doRun"><block s="reportJSFunction"><list><l>reset</l><l>action</l><l>handler</l><l>proc</l></list><l>proc.isCatchingErrors = true;&#xD;proc.handleError = function(error, element){&#xD; reset();&#xD; proc.context = handler;&#xD; proc.context.variables.setVar("error", error);&#xD;}&#xD;&#xD;try{&#xD; proc.evaluate(action, new List(), true);&#xD;}&#xD;catch(e){&#xD; proc.handleError(e, null);&#xD;} </l></block><list><block var="reset"/><block var="action"/><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script><block s="doRun"><block var="handler"/><list></list></block><block s="doRun"><block var="return"/><list></list></block></script><list></list></block><list></list></block></script><list></list></block></list></block></script><list><l>return</l></list></block></block><block s="doRun"><block var="reset"/><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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="183.33333333333334" collapsed="false">LET (FOO) BE (5)&#xD;is equivalent to&#xD;SCRIPT VARIABLES (FOO)&#xD;SET (FOO) TO (5)</comment><header></header><code></code><translations>pt:cria a variável de guião _ com valor _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></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></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="create %&apos;scope&apos; var %&apos;names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>script</l></block><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (!proc.homeContext.variables.vars[varName]) proc.homeContext.variables.addVar(varName);</l></block><list><block var="each item"/></list></block></script></block></script><script><block s="doDeclareVariables"><list><l>global</l></list></block><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>sprite</l></block><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>global</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (global &amp;&amp; !proc.homeContext.variables.parentFrame.parentFrame.vars[varName]) this.addVariable(varName, true);&#xD;if (!global &amp;&amp; !proc.homeContext.variables.parentFrame.vars[varName]) this.addVariable(varName, false);</l></block><list><block var="each item"/><block var="global"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block></script></block-definition><block-definition s="delete var %&apos;names&apos;" type="command" category="variables"><comment x="0" y="0" w="217" collapsed="false">This block deletes all the variables with the names given (inside input list).&#xD;&#xD;Each name will make only one variable deletion, and this will be the variable found following the scope order: &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;If we have a &quot;testing&quot; sprite variable and also a &quot;testing&quot; global one, deleting &quot;testing&quot; will delete only the sprite one (Yes! we can also do &quot;delete var (testing, testing)&quot; to delete both.&#xD;&#xD;If one variable does not exists (in any scope) an error happens, stopping block action in that point. You can check it before with the &quot;does var (name) exists?&quot;block. </comment><header></header><code></code><translations>pt:remove as variáveis _&#xD;ca:esborra les variables _&#xD;es:borrar variables _&#xD;de:löschen var _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (typeof proc.homeContext.variables.vars[varName] !== &apos;undefined&apos;) {&#xD;    delete proc.homeContext.variables.vars[varName];&#xD;} else if (this.deletableVariableNames().indexOf(varName) != -1) {&#xD;    this.deleteVariable(varName);&#xD;} else {&#xD;    throw new Error("variable doesn&apos;t exist: " + varName);&#xD;}</l></block><list><block var="each item"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block-definition><block-definition s="set var %&apos;name&apos; to %&apos;value&apos;" type="command" category="variables"><comment x="0" y="0" w="240.4931640625" collapsed="false">This block sets the given value (last input) to the variable named with the name givent (var input).&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>ca:assigna a _ el valor _&#xD;es:asignar a _ el valor _&#xD;pt:altera _ para _&#xD;de:setze var _ auf _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>value</l><l>proc</l></list><l>if ((typeof varName) != "string") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;proc.homeContext.variables.setVar(varName, value);</l></block><list><block var="name"/><block var="value"/></list></block></script></block-definition><block-definition s="var %&apos;name&apos;" type="reporter" category="variables"><comment x="0" y="0" w="178.00000000000003" collapsed="false">This block reports the value of the variable with the name given.&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>pt:o valor de _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.getVar(varName);</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="does var %&apos;name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.silentFind(varName)? true:false;</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="show var %&apos;name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns on (show) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:mostra la variable _&#xD;es:mostrar variable _&#xD;pt:mostra a variável _&#xD;de:zeige var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><block var="name"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>    var varFrame = proc.homeContext.variables,&#xD;        stage,&#xD;        watcher,&#xD;        target,&#xD;        label,&#xD;        others,&#xD;        isGlobal,&#xD;        name = varName;&#xD;&#xD;    if (name instanceof Context) {&#xD;        if (name.expression.selector === &apos;reportGetVar&apos;) {&#xD;            name = name.expression.blockSpec;&#xD;        } else {&#xD;            proc.doChangePrimitiveVisibility(name.expression, false);&#xD;            return;&#xD;        }&#xD;    }&#xD;    if (proc.homeContext.receiver) {&#xD;        stage = proc.homeContext.receiver.parentThatIsA(StageMorph);&#xD;        if (stage) {&#xD;            target = varFrame.silentFind(name);&#xD;            if (!target) {return; }&#xD;            // first try to find an existing (hidden) watcher&#xD;            watcher = detect(&#xD;                stage.children,&#xD;                morph =&gt; morph instanceof WatcherMorph &amp;&amp;&#xD;                    morph.target === target &amp;&amp;&#xD;                        morph.getter === name&#xD;            );&#xD;            if (watcher !== null) {&#xD;                watcher.show();&#xD;                watcher.fixLayout(); // re-hide hidden parts&#xD;                return;&#xD;            }&#xD;            // if no watcher exists, create a new one&#xD;            isGlobal = contains(&#xD;                proc.homeContext.receiver.globalVariables().names(),&#xD;                varName&#xD;            );&#xD;            if (isGlobal || target.owner) {&#xD;                label = name;&#xD;            } else {&#xD;                label = name + &apos; &apos; + localize(&apos;(temporary)&apos;);&#xD;            }&#xD;            watcher = new WatcherMorph(&#xD;                label,&#xD;                SpriteMorph.prototype.blockColor.variables,&#xD;                target,&#xD;                name&#xD;            );&#xD;            watcher.setPosition(stage.position().add(10));&#xD;            others = stage.watchers(watcher.left());&#xD;            if (others.length &gt; 0) {&#xD;                watcher.setTop(others[others.length - 1].bottom());&#xD;            }&#xD;            stage.add(watcher);&#xD;            watcher.fixLayout();&#xD;        }&#xD;    }</l></block><list><block var="name"/></list></block></script></block></script></block-definition><block-definition s="hide var %&apos;name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns off (hide) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:amaga la variable _&#xD;es:esconder variable _&#xD;pt:esconde a variável _&#xD;de:verstecke var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><block var="name"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>    // to delete all temporary watchers, use the primitive "hide" with no inputs&#xD;    var varFrame = proc.homeContext.variables,&#xD;        stage,&#xD;        watcher,&#xD;        target,&#xD;        name = varName;&#xD;&#xD;    if (name instanceof Context) {&#xD;        if (name.expression.selector === &apos;reportGetVar&apos;) {&#xD;            name = name.expression.blockSpec;&#xD;        } else {&#xD;            proc.doChangePrimitiveVisibility(name.expression, true);&#xD;            return;&#xD;        }&#xD;    }&#xD;    if (!name) {&#xD;        proc.doRemoveTemporaries();&#xD;        return;&#xD;    }&#xD;    if (proc.homeContext.receiver) {&#xD;        stage = proc.homeContext.receiver.parentThatIsA(StageMorph);&#xD;        if (stage) {&#xD;            target = varFrame.find(name);&#xD;            watcher = detect(&#xD;                stage.children,&#xD;                morph =&gt; morph instanceof WatcherMorph &amp;&amp;&#xD;                    morph.target === target &amp;&amp;&#xD;                        morph.getter === name&#xD;            );&#xD;            if (watcher !== null) {&#xD;                if (watcher.isTemporary()) {&#xD;                    watcher.destroy();&#xD;                } else {&#xD;                    watcher.hide();&#xD;                }&#xD;            }&#xD;        }&#xD;    }&#xD;</l></block><list><block var="name"/></list></block></script></block></script></block-definition></blocks><variables><variable name="nouns"><list struct="atomic" id="653">slice of cheese,frog,table,apple</list></variable><variable name="verbs"><list struct="atomic" id="654">hits,spins,walks</list></variable><variable name="adjectives"><list struct="atomic" id="655">blue,loud,rough</list></variable><variable name="articles"><list struct="atomic" id="656">the,a</list></variable><variable name="preposition"><list struct="atomic" id="657">under,over,on,next to</list></variable><variable name="adverb"><list struct="atomic" id="658">slowly,quickly,sadly,gladly</list></variable><variable name="voweltable"><list struct="atomic" id="659">a,e,i,o,u</list></variable><variable name="partofspeechtables"><list id="660"><item><ref id="655"></ref></item><item><ref id="658"></ref></item><item><ref id="656"></ref></item><item><ref id="653"></ref></item><item><ref id="657"></ref></item><item><list struct="atomic" id="661">Bob,Sam,John,Joey</list></item><item><ref id="654"></ref></item></list></variable><variable name="names"><ref id="661"></ref></variable></variables></project><media name="sentencegenerator" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>