[Parsing] How do I process loops with PLY?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • F. GEIGER

    #1

    [Parsing] How do I process loops with PLY?

    I'm rather new to high level parsing with lex/yacc (and realy impressed so
    far).

    I'd like to parse *and execute* files like this:

    A=12
    B=23
    G X=A Y=B Z=34 # Move to X, Y, Z
    G Z=0

    etc.

    No problems so far.

    But when loops enter the game, things seem to become more difficult:

    A=12
    B=23
    C=45
    D=56
    DX=0

    FOR C # Exec the following lines C times
    G X=A+DX Y=B Z=34 # Move to X, Y, Z

    # more statements...

    DX=DX+67
    NEXT

    How can I tell PLY to go back to the beginning of the FOR-loop's body to
    execute it C-1 more times? A syntax checker would not need to do that, but
    an interpreter (which actually I am building) has to.

    Any hints are welcome.

    Kind regards
    Franz GEIGER


  • Edwin Young

    #2
    Re: [Parsing] How do I process loops with PLY?

    "F. GEIGER" <f.geiger@vol.a t> writes:
    [color=blue]
    > But when loops enter the game, things seem to become more difficult:
    >
    > A=12
    > B=23
    > C=45
    > D=56
    > DX=0
    >
    > FOR C # Exec the following lines C times
    > G X=A+DX Y=B Z=34 # Move to X, Y, Z
    >
    > # more statements...
    >
    > DX=DX+67
    > NEXT
    >
    > How can I tell PLY to go back to the beginning of the FOR-loop's
    > body to execute it C-1 more times? A syntax checker would not need
    > to do that, but an interpreter (which actually I am building) has
    > to.[/color]

    Typically, you would separate parsing from executing the code. Use PLY
    to parse the whole thing once and produce a data structure
    representing the code (usually called an 'abstract syntax tree') then
    write an interpreter which uses that tree as its input.

    Regards,
    --
    Edwin

    Comment

    Working...