anchor.diff:  
   grammar Smalltalk;
   
  -script : sequence EOF;
  -sequence : ws temps? ws statements? ws;
  +script : ws sequence EOF;
  +sequence : temps? ws statements? ws;
   ws : (SEPARATOR | COMMENT)*;
   temps : PIPE (ws IDENTIFIER)* ws PIPE;
   statements : answer # StatementAnswer
  
positive.code: subexpression : OPEN_PAREN ws expression ws CLOSE_PAREN;
  literal : runtimeLiteral | parsetimeLiteral;
  runtimeLiteral : dynamicDictionary | dynamicArray | block;
  block : BLOCK_START blockParamList? sequence? ws BLOCK_END;
  blockParamList : (ws BLOCK_PARAM)+ ws PIPE?;
  dynamicDictionary : DYNDICT_START ws expressions? ws DYNARR_END;
  dynamicArray : DYNARR_START ws expressions? ws DYNARR_END;
  
negative.code: expression : assignment | cascade | keywordSend | binarySend | primitive;
  expressions : expression expressionList*;
  expressionList : ws PERIOD ws expression;
  cascade : ws (keywordSend | binarySend) (ws SEMI_COLON ws message)+;
  message : binaryMessage | unaryMessage | keywordMessage;
  assignment : variable ws ASSIGNMENT ws expression;
  variable : IDENTIFIER;
  