*** dict <node,graph> x;
*** x[n];
DICT LT NODE COMMA GRAPH GT ID SEMI ID LBRACKET ID RBRACKET SEMI

*** dict <num,num> x; (primitive example)
*** a = x[0];
*** SUPPOSED TO FAIL: 2 = x[0];
*** x[n+1];
*** x[2-2];
*** x[a*b];
*** x[(a+c)/2];
DICT LT NUM COMMA NUM GT ID SEMI 
ID ASSIGN ID LPAREN LITERAL RPAREN SEMI
f** LITERAL ASSIGN ID LPAREN LITERAL RPAREN SEMI
ID LBRACKET ID PLUS LITERAL RBRACKET SEMI 
ID LBRACKET LITERAL MINUS LITERAL RBRACKET SEMI 
ID LBRACKET ID TIMES ID RBRACKET SEMI 
ID LBRACKET LPAREN ID PLUS ID RPAREN DIVIDE LITERAL RBRACKET SEMI  

*** dict <string,num> x = {'one':x, y:z+i}
DICT LT STRING COMMA NUM GT ID ASSIGN LBRACE LITERAL COLON ID COMMA ID COLON ID PLUS ID RBRACE SEMI

