output 			-> ( out-of-band-record )* [ result-record ] "(gdb)" nl
result-record 		-> [ token ] "^" result-class ( "," result )* nl
out-of-band-record 	-> async-record | stream-record
async-record 		-> exec-async-output | status-async-output | notify-async-output
exec-async-output 	-> [ token ] "*" async-output
status-async-output 	-> [ token ] "+" async-output
notify-async-output 	-> [ token ] "=" async-output
async-output 		-> async-class ( "," result )* nl
result-class 		-> "done" | "running" | "connected" | "error" | "exit"
async-class 		-> "stopped" | others (where others will be added depending on the needs--this is still in development).
result 			-> variable "=" value
variable 		-> string
value 			-> const | tuple | list
const 			-> c-string
tuple 			-> "{}" | "{" result ( "," result )* "}"
list 			-> "[]" | "[" value ( "," value )* "]" | "[" result ( "," result )* "]"
stream-record 		-> console-stream-output | target-stream-output | log-stream-output
console-stream-output 	-> "~" c-string
target-stream-output 	-> "@" c-string
log-stream-output 	-> "&" c-string
nl 			-> CR | CR-LF
token 			-> any sequence of digits.

transformations 

1. (out-of-band-record)* -> out_of_band_record_list
	out-of-band-record-list  -> out-of-band-record-list out-of-band-record | epsilon

2. [result-record]
	opt-result-record -> result-record | epsilon

3. [token]
	opt-token -> token | epsilon

4. ( "," result )*
	result-list-prime -> result-list | epsilon
	result-list       -> result-list "," result | "," result

5. ( "," value )*
	value-list-prime -> value-list | epsilon
	value-list       -> value-list "," value | "," value 

output 			-> oob_record_list opt_result_record "(gdb)" nl
oob_record_list 	-> oob_record_list oob_record nl | epsilon
opt_result_record       -> result_record nl | epsilon
result_record 		-> opt_token "^" result_class result_list_prime
oob_record 		-> async_record | stream_record
async_record 		-> opt_token async_record_class async_output
async_record_class      -> "*" | "+" | "="
async_output 		-> async_class result_list_prime
result_class 		-> "done" | "running" | "connected" | "error" | "exit"
async_class 		-> "stopped" 
result_list_prime 	-> result_list | epsilon
result_list       	-> result_list "," result | "," result
result 			-> variable "=" value
variable 		-> string
value_list_prime        -> value_list | epsilon
value_list              -> value_list "," value | "," value 
value 			-> c_string | tuple | list
tuple 			-> "{}" | "{" result result_list_prime "}"
list 			-> "[]" | "[" value value_list_prime "]" | "[" result result_list_prime "]"
stream_record 		-> stream_record_class c_string
stream_record_class     -> "~" | "@" | "&"
nl 			-> CR | CR_LF
opt_token               -> token | epsilon
token 			-> any sequence of digits.

Some more changes

opt_output_list         -> epsilon | output_list
output_list             -> output | output_list output
output 			-> opt_oob_record_list opt_result_record "(gdb)" nl
opt_oob_record_list 	-> epsilon | opt_oob_record_list oob_record nl 
opt_result_record       -> epsilon | result_record nl
result_record 		-> opt_token "^" result_class 
result_record 		-> opt_token "^" result_class "," opt_result_list
oob_record 		-> async_record | stream_record
async_record 		-> opt_token async_record_class async_output
async_record_class      -> "*" | "+" | "="
async_output 		-> async_class "," opt_result_list
result_class 		-> "done" | "running" | "connected" | "error" | "exit"
async_class 		-> "stopped" 
opt_result_list 	-> epsilon | result_list
result_list             -> result | result_list "," result
result 			-> variable "=" value
variable 		-> string
value_list              -> value | value_list "," value
value 			-> c_string | tuple | list
tuple 			-> "{}" | "{" result_list "}"
list 			-> "[]" | "[" value_list "]" | "[" result_list "]"
stream_record 		-> stream_record_class c_string
stream_record_class     -> "~" | "@" | "&"
nl 			-> CR | LF | CR LF
opt_token               -> epsilon | token 
token 			-> any sequence of digits.

More changes

opt_output_list         -> epsilon | output_list
output_list             -> output | output_list output
output 			-> opt_oob_record_list opt_result_record "(gdb)" nl
opt_oob_record_list 	-> epsilon | opt_oob_record_list oob_record nl 
opt_result_record       -> epsilon | result_record nl
result_record 		-> opt_token "^" result_class 
result_record 		-> opt_token "^" result_class "," result_list
oob_record 		-> async_record | stream_record
async_record 		-> opt_token async_record_class async_class
async_record 		-> opt_token async_record_class async_class "," result_list
async_record_class      -> "*" | "+" | "="
result_class 		-> "done" | "running" | "connected" | "error" | "exit"
async_class 		-> "stopped" 
result_list             -> result | result_list "," result
result 			-> variable "=" value
variable 		-> STRING
value_list              -> value | value_list "," value
value 			-> C_STRING | tuple | list
tuple 			-> "{}" | "{" result_list "}"
list 			-> "[]" | "[" value_list "]" | "[" result_list "]"
stream_record 		-> stream_record_class C_STRING
stream_record_class     -> "~" | "@" | "&"
nl 			-> CR | LF | CR LF
opt_token               -> epsilon | TOKEN 
epsilon                 ->
