[pypy-dev] rlib parsing

Leonardo Santagada santagada at gmail.com
Tue Apr 19 04:47:48 CEST 2011


IIRC you have to parse your grammar definition before your entry point

for example in the module level somewhere you do

try:
    t = GFILE.read(mode='U')
    regexs, rules, ToAST = parse_ebnf(t)
except ParseError,e:
    print e.nice_error_message(filename=str(GFILE),source=t)
    raise

parsef = make_parse_function(regexs, rules, eof=True)

then parsef can be used inside your entry point. What I mean is,
parse_ebnf and make_parse_function are not RPython, so they need to
run before translation take place (remember that the pypy translator
runs after import time, and it translates rpython from live python
objects in memory).

On Mon, Apr 18, 2011 at 10:15 PM, Ian Overgard <ian.overgard at gmail.com> wrote:
> Hey guys,
>
> I was playing around with using the parser generator in rlib, but I'm having
> some trouble figuring out how to get it to work in rpython (I did get one
> working in normal python though). Is there a resource on using it somewhere,
> or maybe just a few pointers? (I realize it's probably in a pretty beta
> state, but so far it seems like the only parser-generator that's runnable in
> rpython without really big changes). I was reading this:
> http://codespeak.net/pypy/dist/pypy/doc/rlib.html#full-example but it seems
> to cut off rather abruptly.
>
> It seems like you do something along the lines of instantiating one in
> normal python, then asking it for its string representation and generating a
> source file from that. Is that accurate? Or did I just manage to confuse
> myself terribly while reading the prolog example?
>
> Thanks!
> Ian
>
> _______________________________________________
> pypy-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/pypy-dev
>



-- 
Leonardo Santagada



More information about the Pypy-dev mailing list