nonassoc

試したが、失敗…(原因不明)

#!/usr/bin/env python

import ply.lex as lex

tokens = (
  'A',
)

t_A = r'A'
t_ignore = " \t"

literals = ['+', '<']

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

lex.lex()


import ply.yacc as yacc

precedence = (
    ('nonassoc', '<'),
    ('left',     '+'),
    )

def p_input(p):
    'input : exp'

def p_exp(p):
    '''exp : A
           | exp '+' exp
           | exp '<' exp'''
    if len(p) == 4:
        p[0] = "|%s %s %s|" % (p[1], p[2], p[3])
        print p[0]
    else:
        p[0] = p[1]

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

yacc.yacc()


while 1:
    try:
        s = raw_input('input > ')
    except EOFError:
        break
    if not s: continue
    yacc.parse(s)

で、

input > A+A
|A + A|
input > A+A+A
|A + A|
||A + A| + A|
input > A<A
|A < A|
input > A<A<A
|A < A|
|A < |A < A||
input > A<A+A
|A + A|
|A < |A + A||