Re: [cedet-semantic] using define-lex
Brought to you by:
zappo
From: Eric L. <er...@si...> - 2015-10-29 01:26:38
|
Hi, I also use Emacs 24 that I get from Ubuntu. The complete set of steps is along the lines of: 1) Use Emacs 24 - yours is fine 2) Download CEDET from git on sourceforge 3) Follow "INSTALL" file that came from CEDET download This includes a line about putting this line: (load-file "/home/user/cedet/cedet-devel-load.el") into your .emacs file 4) Pull up a .wy file, and it should be in the correct mode. I hope that helps. Eric On 10/28/2015 08:48 PM, Arnab Chakraborty wrote: > Thanks, Eric, for the helpful tips. I am following your advice and > trying the > .wy to -wy.el path. However, I cannot get myself into the *wisent-mode*. > Googleing wisent-mode is not producing any help either. Where is this > mode defined? > > I loaded *java-tags.wy* hoping that the .wy extension will automatically > bring me to the correct mode. It didn't. I manually "*load-file*"-ed > *grammar.elc* and *wisent.elc*. This allowed a new mode > semantic-grammar-mode which I turned on manually. C-c C-c was bound to > *semantic-grammar-create-package* > which looked kind of hopeful. But upon hitting that key I get > *semantic-grammar-parsetable-builder-default: > `semantic-grammar-parsetable-builder' not defined* > > I am using emacs 24.1 that I "apt-get install"-ed in Ubuntu 12.10, if > that is relevant. > > > Thanks and regards, > > Arnab > > On Wed, Oct 28, 2015 at 4:57 PM, Eric Ludlam <er...@si... > <mailto:er...@si...>> wrote: > > On 10/27/2015 09:54 PM, Arnab Chakraborty wrote: > > Hi Eric, > > Thanks a lot for your help. But still some points are not > clear to me. > Let me tell you the simple grammar I am working with. > > ;;First the grammar as a elisp structure. The language just > consists of > lists of ;;the token "number". > (setq g '( (number) > () > (line > ((number) (format "%s" $1)) > ((line number) (format "%s %s" $1 $2)) > ) > ) > ) > > ;;;Convert to an automaton > (setq a (wisent-grammar-compile g)) > > ;;;Create a lexer > (define-lex mylex "" semantic-number-analyzer) > > ;;;Try to put them together (it is here that I get error, saying > that > ;;;mylex does not fit the bill. > (wisent-parse a mylex) > > > I have not tried using a .wy file yet, because I have not yet > figured > out how to convert a .wy file to an elisp structure. So java.wy etc > are not helping me yet. > > > I see. I'm less familiar with this level of use of wisent, and now I > know what you meant by using a grammar without the semantic > infrastructure. > > I'm pretty sure what you want is possible, but all the > documentation, and what I know about it is rigged up to bind a > parser into a buffer with a series of buffer local variables. Then > the helper functions that parse sections of a buffer will all have > the correct context needed to start parsing. > > If your goal is to eventually parse buffer contents, then you should > definitely start with the .wy files. The basic process for > converting a .wy file into a -wy.el file is bound to a key in > wisent-mode, so when you are editing the grammar, you press C-c C-c, > and it gets converted to lisp, and also creates all the other needed > variables. For example, you will need both the grammar, the keyword > table, to tokens table, plus the individual token analyzers needed > for the lexer, all of which can be derived directly from your .wy > file. It will also create a function to install your grammar into > a buffer. > > If you still want to construct your grammar by hand, calc-wy.el is > the simplest example in the collection that shows what variables you > need, and how to bind it together to a buffer, and wisent-calc shows > how to make sure the buffer is fully setup by calling misc init > functions. I don't really know the internals of the wisent function > stack to avoid using an intermediate buffer. > > Eric > > |