Re: using define-lex
Eric Ludlam <[email protected]> Wed, 28 Oct 2015 21:26:29 -0400
| Newsgroups | gmane.emacs.semantic |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]
> <mailto:[email protected]>> 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
>
>
------------------------------------------------------------------------------