Grammar filename: grammars/Smalltalk/Smalltalk-80.txt digit : -[>- '0' ->]- [>- '1' ->] [>- '2' ->] [>- '3' ->] [>- '4' ->] [>- '5' ->] [>- '6' ->] [>- '7' ->] [>- '8' ->] [>- '9' ->] digits : -{>- digit --->}- {<-----------<} number : -[>----------------->]--[>------->]-- digits --[>----------------->]--[>------------------------------>]- [>- digits -- 'r' ->] [>- '-' ->] [>- '.' -- digits ->] [>- 'e' --[>------->]-- digits ->] [>- '-' ->] letter : -[>- 'A' -- "[...]" -- 'Z' ->]- [>- 'a' -- "[...]" -- 'z' ->] special_character : -[>- '+' ->]- [>- '/' ->] [>- '\' ->] [>- '*' ->] [>- '~' ->] [>- '<' ->] [>- '>' ->] [>- '=' ->] [>- '@' ->] [>- '%' ->] [>- '|' ->] [>- '&' ->] [>- '?' ->] [>- '!' ->] [>- ',' ->] character : -[>-[>- '[' ->]--------------->]- [ [>- ']' ->] ] [ [>- '{' ->] ] [ [>- '}' ->] ] [ [>- '(' ->] ] [ [>- ')' ->] ] [ [>- '^' ->] ] [ [>- ';' ->] ] [ [>- '$' ->] ] [ [>- '#' ->] ] [ [>- ':' ->] ] [ [>- '.' ->] ] [ [>- "'" ->] ] [>-[>- digit ------------->]->] [>- letter ------------>] [>- special_character ->] return_operator : - '^' - assignment_operator : - ":=" - identifier : - letter --{>-[------------------]->}- {>-[>- letter ->]->} { [>- digit -->] } {<----------------<} symbol : -[>- identifier ------>]- [>- binary_selector ->] [>-{>- keyword --->}->] {<-------------<} symbol_constant : - '#' -- symbol - character_constant : - '$' --[>- character ->]- [>- "'" ------->] [>- '"' ------->] string : - "'" --{>-[----------------------------]->}-- "'" - {>-[>- character -------->]->} { [>-[>- "'" -- "'" ->]->] } { [>- '"' -------->] } {<--------------------------<} comment : - '"' --{>-[----------------------------]->}-- '"' - {>-[>- character -------->]->} { [>-[>- '"' -- '"' ->]->] } { [>- "'" -------->] } {<--------------------------<} array : - '(' --{>-[------------------------------]->}-- ')' - {>-[>- number ------------->]->} { [>- symbol ------------->] } { [>- string ------------->] } { [>- character_constant ->] } { [>- array -------------->] } {<----------------------------<} array_constant : - '#' -- array - literal : -[>- number ------------->]- [>- symbol_constant ---->] [>- character_constant ->] [>- string ------------->] [>- array_constant ----->] variable_name : - identifier - unary_selector : - identifier - binary_selector : -[>- '-' --------------->]--[>--------------------->]- [>- special_character ->] [>- special_character ->] keyword : - identifier -- ':' - primary : -[>- variable_name ------------>]- [>- literal ------------------>] [>- block -------------------->] [>- '(' -- expression -- ')' ->] unary_object_description : -[>- primary ----------->]- [>- binary_expression ->] binary_object_description : -[>- unary_object_description ->]- [>- binary_expression -------->] unary_expression : - unary_object_description -- binary_expression - binary_expression : - binary_object_description -- binary_selector -- unary_object_description - keyword_expression : - unary_object_description --{>- keyword -- binary_object_description --->}- {<------------------------------------------<} message_expression : -[>- unary_expression --->]- [>- binary_expression -->] [>- keyword_expression ->] cascaded_message_expression : - message_expression --{>-[---------------------------------------------------------------]->}- {>- ';' --[>- unary_selector ------------------------------->]->} { [>- binary_selector -- unary_object_description -->] } { [>-{>- keyword -- binary_object_description --->}->] } { {<------------------------------------------<} } {<-------------------------------------------------------------<} expression : -[>------------------------------------------------>]--[>- primary --------------------->]- [>-{>- variable_name -- assignment_operator --->}->] [>- message_expression ---------->] {<------------------------------------------<} [>- cascaded_message_expression ->] statements : -[>- return_operator -- expression --[>------->]-------->]- [ [>- '.' ->] ] [>- expression --[>--------------------------------->]->] [>- '.' --{>-[----------------]->}->] {>- statements ->} {<--------------<} block : - '[' --[>-[>----------------------------------------------------->]->]-- ']' - [ [>-{>- ':' -- variable_name --->}-- '|' -- statements ->] ] [ {<--------------------------<} ] [>- statements ---------------------------------------------->] temporaries : - '|' --{>-[-------------------]->}-- '|' - {>- variable_name ->} {<-----------------<} message_pattern : -[>- unary_selector ------------------->]- [>- binary_selector ------------------>] [>-{>- keyword -- variable_name --->}->] {<------------------------------<} method : - message_pattern --[>- temporaries -- statements ->]- [>-[>-------------->]---------->] [>- statements ->]