see http://processing.org/reference/index.html for names. ** filtered at tokenization phase /* ... */ : multiline comment /** ... */ : doc comment // : single line comment ** generative syntax *** Structure . (dot) : expression part member_access := "." identifier super : expression keyword setup() : function exit() : function class : declaration class_declaration := "class" identifier ... "{" class_member_list "}" void : type_name size() : function false : expression keyword noLoop() : function this : expression keyword true : expression keyword new : expression part new_object := "new" identifier "(" function_args ")" comma : expression part delay() : function {} (curly braces) : expression part draw() : function loop() : function implements : declaration part implementation_indication := "implements" identifier redraw() : function ; (semicolon) : expression part [] (array access) : expression part array_access := "[" expression "]" extends : declaration part derivation_indication := "extends" identifier null : expression keyword () (parenthesis) : expression part return : expression part return_statement := "return" expression = (assign) : expression part assignment := variable "=" expression *** Environment function -> frameRate(), noCursor(), cursor() static variable -> frameRate, screen, width, height, frameCount *** Data type name -> color, char, float, int, boolean, byte, String, Array, Object function -> (everything else) *** Control < (less than) : expression part less_than_expr := expression "<" expression <= (less than or equal to) : expression part less_eq_expr := expression "<=" expression > (greater than) : expression part greater_than_expr := expression ">" expression >= (greater than or equal to) : expression part greater_eq_expr := expression ">=" expression == (equality) : expression part eq_expr := expression "==" expression != (inequality) : expression part eq_expr := expression "!=" expression for : expression part for_statement := "for" "(" for_initializers ";" expression ";" for_continuations ")" statement_block while : expression part while_statement := "while" "(" expression ")" statement_block break : statement break_statement := "break" switch : statement switch_statement := "switch" "(" expression ")" "{" switch_case_list "}" case : expression part switch_case := "case" constant ":" statement_list | "default" ":" statement_list // ends with break_statement // must end with break_statement (default : expression part) else : expression part if : statement if_statement := "if" "(" expression ")" || (logical or) : expression logical_or_expression := expression "||" expression && (logical and) : expression logical_and_expression := expression "&&" expression ! (logical not) : expression logical_not_expression := "!" expression *** Shape function -> everything *** Input static variable -> mouseButton, mousePressed, mouseX, mouseY, pmouseX, pmouseY keyCode, key, keyPressed function -> everything else *** Output, Transform, Color function -> everything *** Image PImage : type name pixels : static variable (array) function -> everything else *** Typography PFont : type name function -> everything else *** Math + (plus) : expression part add_expression := expression "+" expression - (minus) : expression part / expression part subtract_expression := expression "-" expression numeric_negation_expression := "-" expression * (multiply) : expression part multiply_expression := expression "*" expression / (divide) : expression part divide_expression := expression "/" expression % (modulo) : expression part modulo_expression := expression "%" expression += (add assign) : statement add_assignment := expression "+=" expression -= (subtract assign) : statement subtract_assignment := expression "-=" expression ++ (increment) : statement increment_statement := expression "++" // FIXME: no pre-positioned increment? -- (decrement) : statement decrement_statement := expression "--" // FIXME: no pre-positioned increment? static variable -> HALF_PI, TWO_PI, PI function -> everything else