Portál AbcLinuxu, 11. května 2025 10:06
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.