Portál AbcLinuxu, 9. listopadu 2025 00:12
nejakyprikaz: abc yacc: Syntax error at line 1, token=OTHERCOMMANDAle ocekaval bych:
nejakyprikaz: abc jinyprikaz: xyzZde je program:
import ply.yacc as yacc
import ply.lex as lex
data = "define { nejakyprikaz abc; jinyprikaz xyz; }"
tokens = [
'LPAREN',
'RPAREN',
'COLON',
'ARGUMENT',
]
reserved = {
'define' : 'DEFINE',
'nejakyprikaz' : 'SOMECOMMAND',
'jinyprikaz': 'OTHERCOMMAND',
}
tokens += reserved.values()
t_LPAREN = r'{'
t_RPAREN = r'}'
t_COLON = r';'
t_ignore = ' \t\n'
def t_ARGUMENT(t):
r'[a-z0-9]+'
t.type = reserved.get(t.value, 'ARGUMENT')
return t
def p_start(p):
'start : DEFINE LPAREN commands RPAREN'
pass
def p_commands(p):
"""commands : command COLON
| commands"""
pass
def p_command(p):
"""command : some_command
| other_command"""
pass
def p_some_command(p):
'some_command : SOMECOMMAND ARGUMENT'
print 'nejakyprikaz:', p[2]
def p_other_command(p):
'other_command : OTHERCOMMAND ARGUMENT'
print 'jinyprikaz:', p[2]
debug = False
lex.lex(debug=debug)
yacc.yacc(debug=debug)
yacc.parse(data)
Netusite, co tam mam tak spatne, ze se to nechova podle ocekavani?
Na otázku zatím nikdo bohužel neodpověděl.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.