================================================================================ Simple variable assignment ================================================================================ set x to 5 -------------------------------------------------------------------------------- (source_file (set_statement target: (identifier) value: (number (integer)))) ================================================================================ String literal ================================================================================ set message to "Hello, World!" -------------------------------------------------------------------------------- (source_file (set_statement target: (identifier) value: (string))) ================================================================================ Simple if statement ================================================================================ if x > 5 then return true end if -------------------------------------------------------------------------------- (source_file (if_statement condition: (binary_expression left: (identifier) right: (number (integer))) (return_statement value: (boolean)))) ================================================================================ Repeat loop with times ================================================================================ repeat 5 times set x to x + 1 end repeat -------------------------------------------------------------------------------- (source_file (repeat_statement (repeat_times count: (number (integer)) (set_statement target: (identifier) value: (binary_expression left: (identifier) right: (number (integer))))))) ================================================================================ Tell statement ================================================================================ tell application "Finder" activate end tell -------------------------------------------------------------------------------- (source_file (tell_statement target: (application_expression name: (string)) (expression_statement (identifier)))) ================================================================================ List literal ================================================================================ set myList to {1, 2, 3} -------------------------------------------------------------------------------- (source_file (set_statement target: (identifier) value: (list (number (integer)) (number (integer)) (number (integer))))) ================================================================================ Record literal ================================================================================ set myRecord to {name:"John", age:30} -------------------------------------------------------------------------------- (source_file (set_statement target: (identifier) value: (record (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (number (integer)))))) ================================================================================ Line comment ================================================================================ -- This is a comment set x to 5 -------------------------------------------------------------------------------- (source_file (comment) (set_statement target: (identifier) value: (number (integer)))) ================================================================================ Block comment ================================================================================ (* This is a block comment *) set x to 5 -------------------------------------------------------------------------------- (source_file (comment) (set_statement target: (identifier) value: (number (integer)))) ================================================================================ Hash comment single line ================================================================================ # This is a hash comment set x to 5 -------------------------------------------------------------------------------- (source_file (comment) (set_statement target: (identifier) value: (number (integer)))) ================================================================================ Hash comment inline ================================================================================ set x to 5 # inline comment -------------------------------------------------------------------------------- (source_file (set_statement target: (identifier) value: (number (integer))) (comment)) ================================================================================ missing value property initialization ================================================================================ property _bundle : missing value -------------------------------------------------------------------------------- (source_file (property_statement name: (identifier) value: (missing_value))) ================================================================================ missing value comparison ================================================================================ if x is missing value then set x to 10 end if -------------------------------------------------------------------------------- (source_file (if_statement condition: (binary_expression left: (identifier) right: (missing_value)) (set_statement target: (identifier) value: (number (integer))))) ================================================================================ Line continuation with ¬ character ================================================================================ set myList to {1, ¬ 2, 3} -------------------------------------------------------------------------------- (source_file (set_statement target: (identifier) value: (list (number (integer)) (number (integer)) (number (integer))))) ================================================================================ Line continuation with ¬ in property record ================================================================================ property mods : {¬ {name:"cmd", symbol:"⌘", value:1048576}, ¬ {name:"opt", symbol:"⌥", value:524288}, ¬ {name:"ctrl", symbol:"⌃", value:262144}¬ } -------------------------------------------------------------------------------- (source_file (property_statement name: (identifier) value: (list (record (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (number (integer)))) (record (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (number (integer)))) (record (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (number (integer))))))) ================================================================================ Complex multi-line record with continuations ================================================================================ set config to {¬ enabled:true, ¬ timeout:30, ¬ servers:{¬ production:"prod.example.com", ¬ staging:"stage.example.com"¬ }¬ } -------------------------------------------------------------------------------- (source_file (set_statement target: (identifier) value: (record (record_entry key: (identifier) value: (boolean)) (record_entry key: (identifier) value: (number (integer))) (record_entry key: (identifier) value: (record (record_entry key: (identifier) value: (string)) (record_entry key: (identifier) value: (string)))))))