anchor.diff:                      print >>f, "#define %s (0+*ip->%s)" % (to_c(name), to_c(name))
                   else:
                       print >>f, "#define %s (*ip->%s)" % (to_c(name), to_c(name))
  -        for name, type, array, dir, value in params:
  +
  +        for name, type, array, dir, value in pin_ptrs:
               print >>f, "#undef %s" % to_c(name)
               if array:
                   print >>f, "#define %s(i) (ip->%s[i])" % (to_c(name), to_c(name))
  
positive.code:         "component" NAME OptString";" {{ comp(NAME, OptString); }}
      rule Declaration:
          "pin" PINDIRECTION TYPE HALNAME OptArrayIndex OptSAssign OptString ";"  {{ pin(HALNAME, TYPE, OptArrayIndex, PINDIRECTION, OptString, OptSAssign) }}
        | "param" PARAMDIRECTION TYPE HALNAME OptArrayIndex OptSAssign OptString ";" {{ param(HALNAME, TYPE, OptArrayIndex, PARAMDIRECTION, OptString, OptSAssign) }}
        | "instanceparam" MPTYPE HALNAME OptSAssign OptString ";" {{ instanceparam(HALNAME, MPTYPE, OptString, OptSAssign) }}
        | "moduleparam" MPTYPE HALNAME OptSAssign OptString ";" {{ moduleparam(HALNAME, MPTYPE, OptString, OptSAssign) }}
        | "function" NAME OptFP OptString ";"       {{ function(NAME, OptFP, OptString) }}
        | "variable" NAME STARREDNAME OptArrayIndex OptSAssign ";" {{ variable(NAME, STARREDNAME, OptArrayIndex, OptSAssign) }}
        | "option" NAME OptValue ";"   {{ option(NAME, OptValue) }}
        | "see_also" String ";"   {{ see_also(String) }}
        | "notes" String ";"   {{ notes(String) }}
        | "description" String ";"   {{ description(String) }}
        | "special_format_doc" String ";"   {{ special_format_doc(String) }}            
        | "license" String ";"   {{ license(String) }}
        | "author" String ";"   {{ author(String) }}
        | "include" Header ";"   {{ include(Header) }}
        | "modparam" NAME {{ NAME1=NAME; }} NAME OptSAssign OptString ";" {{ modparam(NAME1, NAME, OptSAssign, OptString) }}
  
      rule Header: STRING {{ return STRING }} | HEADER {{ return HEADER }}
  
negative.code: #    along with this program; if not, write to the Free Software
  #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  
  import os, sys, tempfile, shutil, getopt, time, re
  BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
  sys.path.insert(0, os.path.join(BASE, "lib", "python"))
  