unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Sample functions for String Parsers in Lisp
@ 2009-10-13 10:34 Nordlöw
  2009-10-13 12:47 ` Pascal J. Bourguignon
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Nordlöw @ 2009-10-13 10:34 UTC (permalink / raw)
  To: help-gnu-emacs

Has anybody any good sample code in elisp that shows how to
conveniently do parsing of code contained in a string?

Reason: I am writing a parser that converts Emacs regexps (back) into
rx expressions. I need this for my file magic pattern matcher in order
to read as little data as possible from the file (locality) and do
several matchings in parallel.

I think the main loop should be string-iteration-driven using while()
and aref() and length() I presume.

Any suggestions?,
Nordlöw


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Sample functions for String Parsers in Lisp
  2009-10-13 10:34 Sample functions for String Parsers in Lisp Nordlöw
@ 2009-10-13 12:47 ` Pascal J. Bourguignon
  2009-10-13 16:19   ` Helmut Eller
  2009-10-13 23:18 ` Andreas Politz
  2009-10-14  1:59 ` LanX
  2 siblings, 1 reply; 5+ messages in thread
From: Pascal J. Bourguignon @ 2009-10-13 12:47 UTC (permalink / raw)
  To: help-gnu-emacs

Nordlöw <per.nordlow@gmail.com> writes:

> Has anybody any good sample code in elisp that shows how to
> conveniently do parsing of code contained in a string?
>
> Reason: I am writing a parser that converts Emacs regexps (back) into
> rx expressions. I need this for my file magic pattern matcher in order
> to read as little data as possible from the file (locality) and do
> several matchings in parallel.
>
> I think the main loop should be string-iteration-driven using while()
> and aref() and length() I presume.
>
> Any suggestions?,

1- Read the Dragon Book.
   http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886

2- Use a parser generator.  
   http://cedet.sourceforge.net/info/semantic.html


-- 
__Pascal Bourguignon__


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Sample functions for String Parsers in Lisp
  2009-10-13 12:47 ` Pascal J. Bourguignon
@ 2009-10-13 16:19   ` Helmut Eller
  0 siblings, 0 replies; 5+ messages in thread
From: Helmut Eller @ 2009-10-13 16:19 UTC (permalink / raw)
  To: help-gnu-emacs

* Pascal J. Bourguignon [2009-10-13 14:47+0200] writes:

> Nordlöw <per.nordlow@gmail.com> writes:
>> Any suggestions?,
>
> 1- Read the Dragon Book.
>    http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886
>
> 2- Use a parser generator.  
>    http://cedet.sourceforge.net/info/semantic.html

3. Use parsing expression grammars:
http://www.emacswiki.org/emacs/peg.el

Helmut


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Sample functions for String Parsers in Lisp
  2009-10-13 10:34 Sample functions for String Parsers in Lisp Nordlöw
  2009-10-13 12:47 ` Pascal J. Bourguignon
@ 2009-10-13 23:18 ` Andreas Politz
  2009-10-14  1:59 ` LanX
  2 siblings, 0 replies; 5+ messages in thread
From: Andreas Politz @ 2009-10-13 23:18 UTC (permalink / raw)
  To: help-gnu-emacs

Nordlöw <per.nordlow@gmail.com> writes:

> Reason: I am writing a parser that converts Emacs regexps (back) into
> rx expressions. I need this for my file magic pattern matcher in order
> to read as little data as possible from the file (locality) and do
> several matchings in parallel.
>
[...]

> Any suggestions?,
> Nordlöw

Yes, save yourself the headache and make the assumption, that all magic
pattern are fully contained in the first n bytes of the file.

-ap





^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Sample functions for String Parsers in Lisp
  2009-10-13 10:34 Sample functions for String Parsers in Lisp Nordlöw
  2009-10-13 12:47 ` Pascal J. Bourguignon
  2009-10-13 23:18 ` Andreas Politz
@ 2009-10-14  1:59 ` LanX
  2 siblings, 0 replies; 5+ messages in thread
From: LanX @ 2009-10-14  1:59 UTC (permalink / raw)
  To: help-gnu-emacs

> Any suggestions?,
> Nordlöw

Do you speak Perl?

If yes you may wanna have a look at the structure of the YAPE module
and try to port the parser.

http://search.cpan.org/dist/YAPE-Regex-Explain/Explain.pm

IMHO you just have to get alog with the backslasheritis of elisp...

Good luck
  Rolf


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-10-14  1:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-13 10:34 Sample functions for String Parsers in Lisp Nordlöw
2009-10-13 12:47 ` Pascal J. Bourguignon
2009-10-13 16:19   ` Helmut Eller
2009-10-13 23:18 ` Andreas Politz
2009-10-14  1:59 ` LanX

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).