Thread: [cedet-semantic] trouble with semantic-bovinate
Brought to you by:
zappo
From: Jesse A. <al...@st...> - 2007-04-07 08:35:18
|
I'm writing a bovine grammar for a new language and am testing it out on a simple example. After some initial difficulty, I managed to get a correct parse of my simple example file in the sense that when I run `semantic-debug', I can interactively step through the parse, and I reach the end (the entire file is parsed correctly). Nonetheless, what puzzles me is that calling `bovinate' results in what seems to be an infinite loop. (If I don't hit C-g relatively soon after calling `bovinate', my entire emacs process is consumed and must be killed.) What might be going on? I'm puzzled as to why I can get a successful parse in the sense that I can step through a successful parse using `semantic-debug', but `bovinate' doesn't terminate. Thank for your help, Jesse -- Jesse Alama (al...@st...) *950: Too many schemes (http://www.mizar.org) |
From: Eric M. L. <er...@si...> - 2007-04-07 13:36:35
|
A good way to figure out what's wrong w/ an infinite loop is to use: M-x toggle-debug-on-quit RET and then hit C-g once it gets wedged. Otherwise I can't really predict what might be wrong. Good Luck Eric >>> Jesse Alama <al...@st...> seems to think that: >I'm writing a bovine grammar for a new language and am testing it out >on a simple example. After some initial difficulty, I managed to get >a correct parse of my simple example file in the sense that when I run >`semantic-debug', I can interactively step through the parse, and I >reach the end (the entire file is parsed correctly). Nonetheless, >what puzzles me is that calling `bovinate' results in what seems to be >an infinite loop. (If I don't hit C-g relatively soon after calling >`bovinate', my entire emacs process is consumed and must be killed.) >What might be going on? I'm puzzled as to why I can get a successful >parse in the sense that I can step through a successful parse using >`semantic-debug', but `bovinate' doesn't terminate. > >Thank for your help, > >Jesse > -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |
From: Jesse A. <al...@st...> - 2007-04-07 16:29:11
|
It turns out that my initial assessment of what's going on with `semantic-debug' was mistaken. I had assumed that, once I stepped through my test file using semantic-debug and seeing that the productions that I intended to be followed were in fact followed, everything was OK in the sense that the file is now parsed correctly. But there's more to it than that. Surprisingly, after reaching the end of my file, hitting SPACE in the semantic-debug interface brings me back to my initial starting rule, but, according to the green highlighted text, parsing is starting at the *second* token, not the first token! It seems that once an initial parse was "successful", it starts over again at the second token. Naturally, starting with the initial rule at the second token results in an unparseable token stream. At the end of this "second round" of parsing, semantic-debug stops and every token is flagged with a red underline. I'm pretty sure that my grammar is OK, that is, I'm pretty sure that my grammar doesn't admit of this kind of unintended sequence of productions. What might be going on? Thanks, Jesse "Eric M. Ludlam" <er...@si...> writes: > A good way to figure out what's wrong w/ an infinite loop is to use: > > M-x toggle-debug-on-quit RET > > and then hit C-g once it gets wedged. Otherwise I can't really > predict what might be wrong. > > Good Luck > Eric > >>>> Jesse Alama <al...@st...> seems to think that: >>I'm writing a bovine grammar for a new language and am testing it out >>on a simple example. After some initial difficulty, I managed to get >>a correct parse of my simple example file in the sense that when I run >>`semantic-debug', I can interactively step through the parse, and I >>reach the end (the entire file is parsed correctly). Nonetheless, >>what puzzles me is that calling `bovinate' results in what seems to be >>an infinite loop. (If I don't hit C-g relatively soon after calling >>`bovinate', my entire emacs process is consumed and must be killed.) >>What might be going on? I'm puzzled as to why I can get a successful >>parse in the sense that I can step through a successful parse using >>`semantic-debug', but `bovinate' doesn't terminate. >> >>Thank for your help, >> >>Jesse >> -- Jesse Alama (al...@st...) *950: Too many schemes (http://www.mizar.org) |
From: Eric M. L. <er...@si...> - 2007-04-07 17:52:17
|
Semantic-debug will show you stepping over the various rules, but if the last spot where you hit SPACE is a missmatch, then the entire parsing stack unwinds, and that first token is considered unparseable. The parser then moves to the next token hoping it will get a match. I thought the debugger printed out status, but it does not. You should start w/ semantic-lex-debug, or semantic-lex-test-region to get the lexical tokens being provided. Knowing what they are will help you identify if a given highlighted frame in semantic-debug is a match or a fail. I'm guessing the last rule you hit SPC on is a failed match, but the debugger isn't indicating that. Eric >>> Jesse Alama <al...@st...> seems to think that: >It turns out that my initial assessment of what's going on with >`semantic-debug' was mistaken. I had assumed that, once I stepped >through my test file using semantic-debug and seeing that the >productions that I intended to be followed were in fact followed, >everything was OK in the sense that the file is now parsed correctly. >But there's more to it than that. Surprisingly, after reaching the >end of my file, hitting SPACE in the semantic-debug interface brings >me back to my initial starting rule, but, according to the green >highlighted text, parsing is starting at the *second* token, not the >first token! It seems that once an initial parse was "successful", it >starts over again at the second token. Naturally, starting with the >initial rule at the second token results in an unparseable token >stream. At the end of this "second round" of parsing, semantic-debug >stops and every token is flagged with a red underline. I'm pretty >sure that my grammar is OK, that is, I'm pretty sure that my grammar >doesn't admit of this kind of unintended sequence of productions. >What might be going on? > >Thanks, > >Jesse > >"Eric M. Ludlam" <er...@si...> writes: > >> A good way to figure out what's wrong w/ an infinite loop is to use: >> >> M-x toggle-debug-on-quit RET >> >> and then hit C-g once it gets wedged. Otherwise I can't really >> predict what might be wrong. >> >> Good Luck >> Eric >> >>>>> Jesse Alama <al...@st...> seems to think that: >>>I'm writing a bovine grammar for a new language and am testing it out >>>on a simple example. After some initial difficulty, I managed to get >>>a correct parse of my simple example file in the sense that when I run >>>`semantic-debug', I can interactively step through the parse, and I >>>reach the end (the entire file is parsed correctly). Nonetheless, >>>what puzzles me is that calling `bovinate' results in what seems to be >>>an infinite loop. (If I don't hit C-g relatively soon after calling >>>`bovinate', my entire emacs process is consumed and must be killed.) >>>What might be going on? I'm puzzled as to why I can get a successful >>>parse in the sense that I can step through a successful parse using >>>`semantic-debug', but `bovinate' doesn't terminate. >>> >>>Thank for your help, >>> >>>Jesse >>> > > |