code: private void parseMacro( TokenList tokens , Sequence sequence ) {
          Macro macro = new Macro();
  
          TokenList.Token t = tokens.getFirst().next;
  
          if( t.word == null ) {
              throw new ParseError("Expected the macro's name after "+tokens.getFirst().word);
          }
          List<TokenList.Token> variableTokens = new ArrayList<TokenList.Token>();
  
          macro.name = t.word;
          t = t.next;
          t = parseMacroInput(variableTokens, t);
          for( TokenList.Token a : variableTokens ) {
              if( a.word == null) throw new ParseError("expected word in macro header");
              macro.inputs.add(a.word);
          }
          t = t.next;
          if( t == null || t.getSymbol() != Symbol.ASSIGN)
              throw new ParseError("Expected assignment");
          t = t.next;
          macro.tokens = new TokenList(t,tokens.last);
  
          sequence.addOperation(macro.createOperation(macros));
      }
docs: Parse a macro defintion.
  
  "macro NAME( var0 , var1 ) = 5+var0+var1'