CVSROOT:        /home/x-cvs
Module name:    xc
Changes by:     [EMAIL PROTECTED]       02/11/02 14:58:11

Log message:
  o Fixed a bug in the regex library, was checking one byte after the end
    of the string when matching Eow, the result would only be guaranteed to
    be true for null terminated strings.
  o Fixed several problems in the bytecode compiler, including:
    + was not compiling functions with &key parameters
    + was not working properly when calling bytecode from bytecode
        Now there is a new opcode XBC_BYTECALL, to allow fastly calling
        bytecode from bytecode. This needs a review, because there are
        some problems:
        + function may be redefined. the bytecode will call the old
          definition, and the old definition is gc-protected in the
          toplevel bytecode. this is not the better solution, if a
          function is redefined, the bytecode should be updated.
        + default argument values and &aux parameters should be
          processed in the function body, not in the caller.
  o Added lisp functions find, find-if and find-if-not, sharing most of
    the code with the definitions of position{,-if,-if-not}.
  o Fixed lisp function search, algorithm was completely wrong.
  o Added a completely new (experimental) code for indentation. Basically
    it uses regex to get tokens, and then allows searching "high-level"
    patterns in the result, while scanning the file backwards, tokens
    are generated with definitions like:
    (indtoken "\\<if\\>" :c-if)
    (indtoken "(" :oparen :nospec t)
    (indtoken ")" :cparen :nospec t)
    ...
    and then rules are created to search the patterns, rules have a
    format like:
    (indreduce :parens
        t
        ((:oparen (not oparen) :cparen))
    )
    (indreduce :if
        t
        ((:c-if :parens))
    )
    The indentation is calculated in 3 steps, one step to search for tokens
    with regex patterns, one "reduction" step, to search for high-level
    patterns (in this step the parsers may terminate, rejecting tokens if
    it thinks a safe-place was found; a safe-place is a point from where
    it can calculate indentation based on the indentation of this safe place),
    and a last step where user code is called for every final token.
    See the file progmodes/c.lsp for a sample of the concept, and the file
    indent.lsp for the indent-macro defintion. The user code attached to the
    rules is the argument for several macros, so that it is possible to
    bytecode compile the resulting parser/matcher.

Modified files:
      xc/programs/xedit/lisp/:
        TODO bytecode.c bytecode.h compile.c core.c core.h 
        internal.h lisp.c package.c 
      xc/programs/xedit/lisp/modules/:
        Imakefile syntax.lsp 
      xc/programs/xedit/lisp/modules/progmodes/:
        c.lsp 
      xc/programs/xedit/lisp/re/:
        re.c 
Added files:
      xc/programs/xedit/lisp/modules/:
        indent.lsp 
  
  Revision      Changes    Path
  1.6           +22 -1     xc/programs/xedit/lisp/TODO
  1.8           +189 -26   xc/programs/xedit/lisp/bytecode.c
  1.3           +5 -1      xc/programs/xedit/lisp/bytecode.h
  1.4           +68 -36    xc/programs/xedit/lisp/compile.c
  1.53          +93 -47    xc/programs/xedit/lisp/core.c
  1.25          +5 -1      xc/programs/xedit/lisp/core.h
  1.34          +2 -1      xc/programs/xedit/lisp/internal.h
  1.64          +12 -5     xc/programs/xedit/lisp/lisp.c
  1.14          +4 -2      xc/programs/xedit/lisp/package.c
  1.11          +1 -0      xc/programs/xedit/lisp/modules/Imakefile
  1.9           +6 -3      xc/programs/xedit/lisp/modules/syntax.lsp
  1.13          +697 -957  xc/programs/xedit/lisp/modules/progmodes/c.lsp
  1.6           +3 -2      xc/programs/xedit/lisp/re/re.c

_______________________________________________
Cvs-commit mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/cvs-commit

Reply via email to