On the 12th of April I wrote:
> While the latest releases builds properly for me, I'm still seeing a
> number of problems when trying to edit, compile, and test my .wy file.
> All errors are triggered by idle parsing.
> I see:
> o a type-error: wisent-parse-stream: Wrong type argument: arrayp, nil
> When this error is reported in the mini-buffer, Emacs hangs until I
> interrupt it. The backtrace of such an interrupt is appended to this
> email. Note that I am editing *only* a .wy file at the time of
> failure. The .wy file compiles fine until the bug begins to appear.
> o an idle error: "Lexical Analyzer: hang detected LEX: nil : START:
> END: 201"
> The first problem is particularly irritating because once it begins
> happening I cannot even save a buffer that is under semantic's wing
> without manually disabling the idle-timer.
> I see the code for the second error in define-lex, but it seems (?)
> that this is legacy debug code? Perhaps I'm triggering something
> Also, I believe the function semantic-lex-keyword-p is incorrectly
> documented. While it does return a non-nil if a keyword with NAME
> exists, it actually returns the keyword symbol itself, and other
> functions, particularly example lexer components, depends upon this
These problems are still plaguing me. Does no one have any comment or
input on these issues?
My earlier problem I mentioned in my (unanswered) message of 31 March
resolved by calling a helper function which was edebug-defined and
inserting explicit (debug) calls in various semantic-lex functions to
determine what was going on inside of semantic.
It turns out that all of my trouble stemmed from the fact that it was
not clear that (one of) the postcondition(s) of function resulting from
the use of the various define-lex-*-analyzer macros was that the point
*must* be moved forward.
For example, when using define-lex-regex-analyzer, it is currently
assumed that the regexp that one provides necessarily implies that the
lexer component will do the job of lexing the match and moving the
point forward. This is not mentioned in the docs. I was assuming
(incorrectly) that multiple lexer components could match the same token
stream and only the correct one would push new tokens on the stack and
advance the point and the others could just return nil.
I think that the docs for the family of define-lex-* functions should
be revised to make this distinction clear.
Joseph R. Kiniry ID 78860581 ICQ
SOS Group, University of Nijmegen http://www.cs.kun.nl/~kiniry/
Board Chair: NICE