Last active
February 16, 2017 15:38
-
-
Save tjvr/26e69b7e0a68c674e47c4f0ae7e7e452 to your computer and use it in GitHub Desktop.
tosh for nearley
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
line -> thing {% id %} | |
thing -> block {% id %} | |
| r_parens {% id %} | |
| b_parens {% id %} | |
n -> n4 {% id %} | |
sb -> join {% id %} | |
| n4 {% id %} | |
| s0 {% id %} | |
b -> b8 {% id %} | |
c -> r_parens {% id %} | |
| c0 {% id %} | |
r_parens -> "(" _ r_value _ ")" {% d => d[2] %} | |
r_value -> join {% id %} | |
| n4 {% id %} | |
b_parens -> "<" _ b8 _ ">" {% d => d[2] %} | |
predicate -> simple_predicate {% id %} | |
join -> "join" __ jpart __ jpart {% d => ["concatenate:with:", d[2], d[4]] %} | |
jpart -> s0 {% id %} | |
| "_" {% d => "" %} | |
| join {% id %} | |
| r_parens {% id %} | |
| b_parens {% id %} | |
predicate -> "touching" __ "color" __ c _ "?" {% d => ["touchingColor:", d[4]] %} | |
| "color" __ c __ "is" __ "touching" __ c _ "?" {% d => ["color:sees:", d[2], d[8]] %} | |
b8 -> b_and {% id %} | |
| b_or {% id %} | |
| b7 {% id %} | |
b_and -> b_and __ "and" __ b7 {% d => ["&", d[0], d[4]] %} | |
| b7 __ "and" __ b7 {% d => ["&", d[0], d[4]] %} | |
b_or -> b_or __ "or" __ b7 {% d => ["|", d[0], d[4]] %} | |
| b7 __ "or" __ b7 {% d => ["|", d[0], d[4]] %} | |
b7 -> "not" __ b7 {% d => ["not", d[2]] %} | |
| b6 {% id %} | |
b6 -> sb _ "<" _ sb {% d => ["<", d[0], d[4]] %} | |
| sb _ ">" _ sb {% d => [">", d[0], d[4]] %} | |
| sb _ "=" _ sb {% d => ["=", d[0], d[4]] %} | |
| m_list __ "contains" __ sb _ "?" {% d => ["list:contains:", d[0], d[4]] %} | |
| predicate {% id %} | |
| b2 {% id %} | |
b2 -> b_parens {% id %} | |
| b0 {% id %} | |
n4 -> n4 _ "+" _ n3 {% d => ["+", d[0], d[4]] %} | |
| n4 _ "-" _ n3 {% d => ["-", d[0], d[4]] %} | |
| n3 {% id %} | |
n3 -> n3 _ "*" _ n2 {% d => ["*", d[0], d[4]] %} | |
| n3 _ "/" _ n2 {% d => ["/", d[0], d[4]] %} | |
| n3 _ "mod" _ n2 {% d => ["%", d[0], d[4]] %} | |
| n2 {% id %} | |
n2 -> "round" __ n2 {% d => ["rounded", d[2]] %} | |
| m_mathOp __ "of" __ n2 {% d => ["computeFunction:of:", d[0], d[4]] %} | |
| "pick" __ "random" __ n4 __ "to" __ n2 {% d => ["randomFrom:to:", d[4], d[8]] %} | |
| m_attribute __ "of" __ m_spriteOrStage {% d => ["getAttribute:of:", d[0], d[4]] %} | |
| "distance" __ "to" __ m_spriteOrMouse {% d => ["distanceTo:", d[4]] %} | |
| "length" __ "of" __ s2 {% d => ["stringLength:", d[4]] %} | |
| "letter" __ n __ "of" __ s2 {% d => ["letter:of:", d[2], d[6]] %} | |
| n1 {% id %} | |
n1 -> simple_reporter {% id %} | |
| r_parens {% id %} | |
| b_parens {% id %} | |
| n0 {% id %} | |
s2 -> s0 {% id %} | |
| n1 {% id %} | |
n0 -> "-" _ number {% d => -d[0] %} | |
| number {% d => +d[0] %} | |
| "_" {% d => 0 %} | |
s0 -> string {% id %} | |
b0 -> "<>" {% d => false %} | |
c0 -> color {% id %} | |
_greenFlag -> "flag" | |
| "green" __ "flag" | |
_turnLeft -> "ccw" | |
| "left" | |
_turnRight -> "cw" | |
| "right" | |
c0 -> "red" {% id %} | |
| "orange" {% id %} | |
| "yellow" {% id %} | |
| "green" {% id %} | |
| "blue" {% id %} | |
| "purple" {% id %} | |
| "black" {% id %} | |
| "white" {% id %} | |
| "pink" {% id %} | |
| "brown" {% id %} | |
m_attribute -> "x" __ "position" {% d => "x position" %} | |
| "y" __ "position" {% d => "y position" %} | |
| "direction" {% id %} | |
| "costume" __ "#" {% d => "costume #" %} | |
| "costume" __ "name" {% d => "costume name" %} | |
| "backdrop" __ "#" {% d => "backdrop #" %} | |
| "backdrop" __ "name" {% d => "backdrop name" %} | |
| "size" {% id %} | |
| "volume" {% id %} | |
| "_" {% d => "" %} | |
m_backdrop -> jpart {% id %} | |
| "_" {% d => "" %} | |
m_broadcast -> jpart {% id %} | |
| "_" {% d => "" %} | |
m_costume -> jpart {% id %} | |
| "_" {% d => "" %} | |
m_effect -> "color" {% id %} | |
| "fisheye" {% id %} | |
| "whirl" {% id %} | |
| "pixelate" {% id %} | |
| "mosaic" {% id %} | |
| "brightness" {% id %} | |
| "ghost" {% id %} | |
| "_" {% d => "" %} | |
m_key -> "space" {% id %} | |
| "up" __ "arrow" {% d => "up arrow" %} | |
| "down" __ "arrow" {% d => "down arrow" %} | |
| "right" __ "arrow" {% d => "right arrow" %} | |
| "left" __ "arrow" {% d => "left arrow" %} | |
| "any" {% id %} | |
| "a" {% id %} | |
| "b" {% id %} | |
| "c" {% id %} | |
| "d" {% id %} | |
| "e" {% id %} | |
| "f" {% id %} | |
| "g" {% id %} | |
| "h" {% id %} | |
| "i" {% id %} | |
| "j" {% id %} | |
| "k" {% id %} | |
| "l" {% id %} | |
| "m" {% id %} | |
| "n" {% id %} | |
| "o" {% id %} | |
| "p" {% id %} | |
| "q" {% id %} | |
| "r" {% id %} | |
| "s" {% id %} | |
| "t" {% id %} | |
| "u" {% id %} | |
| "v" {% id %} | |
| "w" {% id %} | |
| "x" {% id %} | |
| "y" {% id %} | |
| "z" {% id %} | |
| "0" {% id %} | |
| "1" {% id %} | |
| "2" {% id %} | |
| "3" {% id %} | |
| "4" {% id %} | |
| "5" {% id %} | |
| "6" {% id %} | |
| "7" {% id %} | |
| "8" {% id %} | |
| "9" {% id %} | |
| "_" {% d => "" %} | |
m_list -> ListName | |
| "_" {% d => "" %} | |
m_location -> jpart {% id %} | |
| "mouse-pointer" {% d => "_mouse_" %} | |
| "random" __ "position" {% d => "_random_" %} | |
| "_" {% d => "" %} | |
m_mathOp -> "abs" {% id %} | |
| "floor" {% id %} | |
| "ceiling" {% id %} | |
| "sqrt" {% id %} | |
| "sin" {% id %} | |
| "cos" {% id %} | |
| "tan" {% id %} | |
| "asin" {% id %} | |
| "acos" {% id %} | |
| "atan" {% id %} | |
| "ln" {% id %} | |
| "log" {% id %} | |
| "e" _ "^" {% d => "e ^" %} | |
| "10" _ "^" {% d => "10 ^" %} | |
| "_" {% d => "" %} | |
m_rotationStyle -> "left-right" {% id %} | |
| "don't" __ "rotate" {% d => "don't rotate" %} | |
| "all" __ "around" {% d => "all around" %} | |
| "_" {% d => "" %} | |
m_scene -> jpart {% id %} | |
| "_" {% d => "" %} | |
m_sound -> jpart {% id %} | |
| "_" {% d => "" %} | |
m_spriteOnly -> jpart {% id %} | |
| "myself" {% d => "_myself_" %} | |
| "_" {% d => "" %} | |
m_spriteOrMouse -> jpart {% id %} | |
| "mouse-pointer" {% d => "_mouse_" %} | |
| "_" {% d => "" %} | |
m_spriteOrStage -> jpart {% id %} | |
| "Stage" {% d => "_stage_" %} | |
| "_" {% d => "" %} | |
m_stageOrThis -> "Stage" {% d => "_stage_" %} | |
| "this" __ "sprite" {% d => "this sprite" %} | |
| "_" {% d => "" %} | |
m_stop -> "all" {% id %} | |
| "this" __ "script" {% d => "this script" %} | |
| "other" __ "scripts" __ "in" __ "sprite" {% d => "other scripts in sprite" %} | |
| "_" {% d => "" %} | |
m_timeAndDate -> "year" {% id %} | |
| "month" {% id %} | |
| "date" {% id %} | |
| "day" __ "of" __ "week" {% d => "day of week" %} | |
| "hour" {% id %} | |
| "minute" {% id %} | |
| "second" {% id %} | |
| "_" {% d => "" %} | |
m_touching -> jpart {% id %} | |
| "mouse-pointer" {% d => "_mouse_" %} | |
| "edge" {% d => "_edge_" %} | |
| "_" {% d => "" %} | |
m_triggerSensor -> "loudness" {% id %} | |
| "timer" {% id %} | |
| "video" __ "motion" {% d => "video motion" %} | |
| "_" {% d => "" %} | |
m_var -> VariableName | |
| "_" {% d => "" %} | |
m_varName -> VariableName | |
| "_" {% d => "" %} | |
m_videoMotionType -> "motion" {% id %} | |
| "direction" {% id %} | |
| "_" {% d => "" %} | |
m_videoState -> "off" {% id %} | |
| "on" {% id %} | |
| "on-flipped" {% id %} | |
| "_" {% d => "" %} | |
d_direction -> n {% id %} | |
d_drum -> n {% id %} | |
d_instrument -> n {% id %} | |
d_listDeleteItem -> "last" {% id %} | |
| "all" {% id %} | |
| n {% id %} | |
d_listItem -> "last" {% id %} | |
| "random" {% id %} | |
| n {% id %} | |
d_note -> n {% id %} | |
m_attribute -> jpart {% id %} | |
block -> "move" __ n __ "steps" {% d => ["forward:", d[2]] %} | |
| "turn" __ _turnRight __ n __ "degrees" {% d => ["turnRight:", d[2], d[4]] %} | |
| "turn" __ _turnLeft __ n __ "degrees" {% d => ["turnLeft:", d[2], d[4]] %} | |
| "point" __ "in" __ "direction" __ d_direction {% d => ["heading:", d[6]] %} | |
| "point" __ "towards" __ m_spriteOrMouse {% d => ["pointTowards:", d[4]] %} | |
| "go" __ "to" __ "x:" __ n __ "y:" __ n {% d => ["gotoX:y:", d[6], d[10]] %} | |
| "go" __ "to" __ m_location {% d => ["gotoSpriteOrMouse:", d[4]] %} | |
| "glide" __ n __ "secs" __ "to" __ "x:" __ n __ "y:" __ n {% d => ["glideSecs:toX:y:elapsed:from:", d[2], d[10], d[14]] %} | |
| "change" __ "x" __ "by" __ n {% d => ["changeXposBy:", d[6]] %} | |
| "set" __ "x" __ "to" __ n {% d => ["xpos:", d[6]] %} | |
| "change" __ "y" __ "by" __ n {% d => ["changeYposBy:", d[6]] %} | |
| "set" __ "y" __ "to" __ n {% d => ["ypos:", d[6]] %} | |
| "set" __ "rotation" __ "style" __ m_rotationStyle {% d => ["setRotationStyle", d[6]] %} | |
| "say" __ sb __ "for" __ n __ "secs" {% d => ["say:duration:elapsed:from:", d[2], d[6]] %} | |
| "say" __ sb {% d => ["say:", d[2]] %} | |
| "think" __ sb __ "for" __ n __ "secs" {% d => ["think:duration:elapsed:from:", d[2], d[6]] %} | |
| "think" __ sb {% d => ["think:", d[2]] %} | |
| "show" {% d => ["show"] %} | |
| "hide" {% d => ["hide"] %} | |
| "switch" __ "costume" __ "to" __ m_costume {% d => ["lookLike:", d[6]] %} | |
| "next" __ "costume" {% d => ["nextCostume"] %} | |
| "next" __ "backdrop" {% d => ["nextScene"] %} | |
| "switch" __ "backdrop" __ "to" __ m_backdrop {% d => ["startScene", d[6]] %} | |
| "switch" __ "backdrop" __ "to" __ m_backdrop __ "and" __ "wait" {% d => ["startSceneAndWait", d[6]] %} | |
| "change" __ m_effect __ "effect" __ "by" __ n {% d => ["changeGraphicEffect:by:", d[2], d[8]] %} | |
| "set" __ m_effect __ "effect" __ "to" __ n {% d => ["setGraphicEffect:to:", d[2], d[8]] %} | |
| "clear" __ "graphic" __ "effects" {% d => ["filterReset"] %} | |
| "change" __ "size" __ "by" __ n {% d => ["changeSizeBy:", d[6]] %} | |
| "set" __ "size" __ "to" __ n __ "%" {% d => ["setSizeTo:", d[6]] %} | |
| "go" __ "to" __ "front" {% d => ["comeToFront"] %} | |
| "go" __ "back" __ n __ "layers" {% d => ["goBackByLayers:", d[4]] %} | |
| "play" __ "sound" __ m_sound {% d => ["playSound:", d[4]] %} | |
| "play" __ "sound" __ m_sound __ "until" __ "done" {% d => ["doPlaySoundAndWait", d[4]] %} | |
| "stop" __ "all" __ "sounds" {% d => ["stopAllSounds"] %} | |
| "play" __ "drum" __ d_drum __ "for" __ n __ "beats" {% d => ["playDrum", d[4], d[8]] %} | |
| "rest" __ "for" __ n __ "beats" {% d => ["rest:elapsed:from:", d[4]] %} | |
| "play" __ "note" __ d_note __ "for" __ n __ "beats" {% d => ["noteOn:duration:elapsed:from:", d[4], d[8]] %} | |
| "set" __ "instrument" __ "to" __ d_instrument {% d => ["instrument:", d[6]] %} | |
| "change" __ "volume" __ "by" __ n {% d => ["changeVolumeBy:", d[6]] %} | |
| "set" __ "volume" __ "to" __ n __ "%" {% d => ["setVolumeTo:", d[6]] %} | |
| "change" __ "tempo" __ "by" __ n {% d => ["changeTempoBy:", d[6]] %} | |
| "set" __ "tempo" __ "to" __ n __ "bpm" {% d => ["setTempoTo:", d[6]] %} | |
| "clear" {% d => ["clearPenTrails"] %} | |
| "stamp" {% d => ["stampCostume"] %} | |
| "pen" __ "down" {% d => ["putPenDown"] %} | |
| "pen" __ "up" {% d => ["putPenUp"] %} | |
| "set" __ "pen" __ "color" __ "to" __ c {% d => ["penColor:", d[8]] %} | |
| "change" __ "pen" __ "hue" __ "by" __ n {% d => ["changePenHueBy:", d[8]] %} | |
| "set" __ "pen" __ "hue" __ "to" __ n {% d => ["setPenHueTo:", d[8]] %} | |
| "change" __ "pen" __ "shade" __ "by" __ n {% d => ["changePenShadeBy:", d[8]] %} | |
| "set" __ "pen" __ "shade" __ "to" __ n {% d => ["setPenShadeTo:", d[8]] %} | |
| "change" __ "pen" __ "size" __ "by" __ n {% d => ["changePenSizeBy:", d[8]] %} | |
| "set" __ "pen" __ "size" __ "to" __ n {% d => ["penSize:", d[8]] %} | |
| "when" __ _greenFlag __ "clicked" {% d => ["whenGreenFlag", d[2]] %} | |
| "when" __ m_key __ "key" __ "pressed" {% d => ["whenKeyPressed", d[2]] %} | |
| "when" __ "this" __ "sprite" __ "clicked" {% d => ["whenClicked"] %} | |
| "when" __ "backdrop" __ "switches" __ "to" __ m_backdrop {% d => ["whenSceneStarts", d[8]] %} | |
| "when" __ m_triggerSensor __ ">" __ n {% d => ["whenSensorGreaterThan", d[2], d[6]] %} | |
| "when" __ "I" __ "receive" __ m_broadcast {% d => ["whenIReceive", d[6]] %} | |
| "broadcast" __ m_broadcast {% d => ["broadcast:", d[2]] %} | |
| "broadcast" __ m_broadcast __ "and" __ "wait" {% d => ["doBroadcastAndWait", d[2]] %} | |
| "wait" __ n __ "secs" {% d => ["wait:elapsed:from:", d[2]] %} | |
| "repeat" __ n {% d => ["doRepeat", d[2]] %} | |
| "forever" {% d => ["doForever"] %} | |
| "if" __ b __ "then" {% d => ["doIfElse", d[2]] %} | |
| "wait" __ "until" __ b {% d => ["doWaitUntil", d[4]] %} | |
| "repeat" __ "until" __ b {% d => ["doUntil", d[4]] %} | |
| "stop" __ m_stop {% d => ["stopScripts", d[2]] %} | |
| "when" __ "I" __ "start" __ "as" __ "a" __ "clone" {% d => ["whenCloned"] %} | |
| "create" __ "clone" __ "of" __ m_spriteOnly {% d => ["createCloneOf", d[6]] %} | |
| "delete" __ "this" __ "clone" {% d => ["deleteClone"] %} | |
| "ask" __ sb __ "and" __ "wait" {% d => ["doAsk", d[2]] %} | |
| "turn" __ "video" __ m_videoState {% d => ["setVideoState", d[4]] %} | |
| "set" __ "video" __ "transparency" __ "to" __ n __ "%" {% d => ["setVideoTransparency", d[8]] %} | |
| "reset" __ "timer" {% d => ["timerReset"] %} | |
| "set" __ m_var __ "to" __ sb {% d => ["setVar:to:", d[2], d[6]] %} | |
| "change" __ m_var __ "by" __ n {% d => ["changeVar:by:", d[2], d[6]] %} | |
| "show" __ "variable" __ m_var {% d => ["showVariable:", d[4]] %} | |
| "hide" __ "variable" __ m_var {% d => ["hideVariable:", d[4]] %} | |
| "add" __ sb __ "to" __ m_list {% d => ["append:toList:", d[2], d[6]] %} | |
| "delete" __ d_listDeleteItem __ "of" __ m_list {% d => ["deleteLine:ofList:", d[2], d[6]] %} | |
| "if" __ "on" __ "edge," __ "bounce" {% d => ["bounceOffEdge"] %} | |
| "insert" __ sb __ "at" __ d_listItem __ "of" __ m_list {% d => ["insert:at:ofList:", d[2], d[6], d[10]] %} | |
| "replace" __ "item" __ d_listItem __ "of" __ m_list __ "with" __ sb {% d => ["setLine:ofList:to:", d[4], d[8], d[12]] %} | |
| "show" __ "list" __ m_list {% d => ["showList:", d[4]] %} | |
| "hide" __ "list" __ m_list {% d => ["hideList:", d[4]] %} | |
simple_reporter -> "x" __ "position" {% d => ["xpos"] %} | |
| "y" __ "position" {% d => ["ypos"] %} | |
| "direction" {% d => ["heading"] %} | |
| "costume" __ "#" {% d => ["costumeIndex"] %} | |
| "size" {% d => ["scale"] %} | |
| "backdrop" __ "name" {% d => ["sceneName"] %} | |
| "backdrop" __ "#" {% d => ["backgroundIndex"] %} | |
| "volume" {% d => ["volume"] %} | |
| "tempo" {% d => ["tempo"] %} | |
simple_predicate -> "touching" __ m_touching _ "?" {% d => ["touching:", d[2]] %} | |
simple_reporter -> "answer" {% d => ["answer"] %} | |
simple_predicate -> "key" __ m_key __ "pressed" _ "?" {% d => ["keyPressed:", d[2]] %} | |
| "mouse" __ "down" _ "?" {% d => ["mousePressed"] %} | |
simple_reporter -> "mouse" __ "x" {% d => ["mouseX"] %} | |
| "mouse" __ "y" {% d => ["mouseY"] %} | |
| "loudness" {% d => ["soundLevel"] %} | |
| "video" __ m_videoMotionType __ "on" __ m_stageOrThis {% d => ["senseVideoMotion", d[2], d[6]] %} | |
| "timer" {% d => ["timer"] %} | |
| "current" __ m_timeAndDate {% d => ["timeAndDate", d[2]] %} | |
| "days" __ "since" __ number {% d => ["timestamp", d[4]] %} | |
| "username" {% d => ["getUserName"] %} | |
| "item" __ d_listItem __ "of" __ m_list {% d => ["getLine:ofList:", d[2], d[6]] %} | |
| "length" __ "of" __ m_list {% d => ["lineCountOfList:", d[4]] %} | |
simple_reporter -> VariableName {% d => ['readVariable', d[0]] %} | |
block -> "else" {% d => ["else"] %} | |
| "end" {% d => ["end"] %} | |
| "..." {% d => ["ellips"] %} | |
_ -> [ ]:* {% d => null %} | |
__ -> [ ]:+ {% d => null %} | |
string -> "'hello'" | |
number -> [0-9]:+ {% d => d.join('') %} | |
number -> [0-9]:+ [.] [0-9]:+ {% d => d.join('') %} | |
color -> [#] [0-9a-z] [0-9a-z] [0-9a-z] [0-9a-z] [0-9a-z] [0-9a-z] | |
| [#] [0-9a-z] [0-9a-z] [0-9a-z] | |
VariableName -> "foo" | |
ListName -> "list" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment