Hi all,
  I'm programming a simple templating system. The simplest expression
I have to manage is:
" bla bla bla .. $FUNC ( bla bla bla.. ) bla bla.."

Here my code:

tokens = (  'OTHER', 'FUNC'   )

def t_FUNC(t):
    r'\$FUNC'
    return t

def t_OTHER(t):
    r'[^ $]+'
    return t

t_ignore = " \t"

def t_error(t):
    print("Illegal character '%s'" % t.value[0])
    t.lexer.skip(1)

import ply.lex as lex
lex.lex()

def p_expression(p):
    '''expression : OTHER expression
              | func expression
              | empty'''
    pass

def p_func(p):
    "func : FUNC '(' expression ')'"

def p_empty(p):
    'empty :'
    pass


def p_error(p):
    if p:
        print("Syntax error at '%s'" % p.value)
    else:
        print("Syntax error at EOF")

import ply.yacc as yacc
yacc.yacc(debug=1)

yacc.parse(' bla bla $FUNC( bli bli ) ')


But I get the "Syntax error at '(' " error. Probably the "(" is
interpreted as "OTHER" and not as "func".
How can I solve?
I have the same problem with "FUNC"; it must start with "$"; if I
remove it (or if I put it into "OTHER" definition) the "FUNC" word is
interpreted as a "OTHER" token.

It's a precedence issue?

Thanks
Alessandro

--

You received this message because you are subscribed to the Google Groups 
"ply-hack" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/ply-hack?hl=en.


Reply via email to