*** list<num> x; list<graph> y;
LIST LT NUM GT ID SEMI LIST LT GRAPH GT ID SEMI

*** list<num> x = [1,2,3,4,5]
LIST LT NUM GT ID ASSIGN LBRACKET LITERAL COMMA LITERAL COMMA LITERAL RBRACKET SEMI

*** list<node> nodes = [x, y, z] (complex datatype example)
LIST LT NODE GT ID ASSIGN LBRACKET ID COMMA ID RBRACKET SEMI

*** list<string> strs = [x, y, z] (primitive example)
LIST LT STRING GT ID ASSIGN LBRACKET ID COMMA ID COMMA ID COMMA ID RBRACKET SEMI

*** a = strs[0];
*** strs[a+5];
*** strs[b-c];
*** strs[2/(b*c)];
ID ASSIGN ID LBRACKET LITERAL RBRACKET SEMI
ID LBRACKET LITERAL RBRACKET SEMI 
ID LBRACKET ID PLUS LITERAL RBRACKET SEMI 
ID LBRACKET ID MINUS ID RBRACKET SEMI 
ID LBRACKET LITERAL DIVIDE LPAREN ID TIMES ID RPAREN RBRACKET SEMI
