Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 30, 2010 20:25:46

Carzil
От:
Зарегистрирован: 2010-05-26
Сообщения: 106
Репутация: +  0  -
Профиль   Отправить e-mail  

Wanted: ошибка!

Код:

import func
import func
def tokenizer(lexems, keywords, tokens, id, digit, types):
for lexem in lexems:
if lexem in keywords:
tokens.append("keyword")
elif lexem in types:
tokens.append("type")
elif lexem == "(":
tokens.append("par_open")
elif lexem == ")":
tokens.append("par_close")
elif lexem == "{":
tokens.append("br_open")
elif lexem == "}":
tokens.append("br_close")
elif lexem == "[":
tokens.append("sq_open")
elif lexem == "]":
tokens.append("sq_close")
elif lexem == ",":
tokens.append("comma")
elif lexem == ";":
tokens.append("semicolon")
elif lexem == "+":
tokens.append("add")
elif lexem == "-":
tokens.append("sub")
elif lexem == "++":
tokens.append("inc")
elif lexem == "--":
tokens.append("dec")
elif lexem == ".=":
tokens.append("conc")
elif lexem == "+=":
tokens.append("add_")
elif lexem == "-=":
tokens.append("sub_")
elif lexem == "*=":
tokens.append("mul_")
elif lexem == "*":
tokens.append("mul")
elif lexem == "/":
tokens.append("div")
elif lexem == "=":
tokens.append("var_def")
elif lexem == "==":
tokens.append("cmp")
elif lexem == "<=":
tokens.append("loe")
elif lexem == ">=":
tokens.append("gor")
elif lexem == "!=":
tokens.append("ne")
elif lexem == '"' or lexem == "'":
tokens.append("quote")
elif lexem == "main":
tokens.append("main")
elif lexem == "call":
tokens.append("call")
elif func.IsAlpha(lexem[0]):
id.append(lexem)
tokens.append("name")
elif func.IsDigit(lexem[0]):
digit.append(lexem)
tokens.append("digit")
elif lexem[0] == "'" or lexem[0] == '"':
tokens.append("string")
else:
tokens.append("error")
Ошибка:
 File "token.py", line 28
elif lexem == "++":
^
SyntaxError: invalid syntax
Помогите!! Уже 2 дня потратил на то, чтобы отыскать ошибку! :(



Отредактировано (Авг. 30, 2010 20:26:55)

Офлайн

#2 Авг. 30, 2010 20:50:21

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Wanted: ошибка!

индусс детектед =)

оформите все словарем:

lex_tok = {
...
'-':'sub',
'+':'add',
...
}
и делайте
...
tokens.append(lex_tok[lexem])
...
Вот ошибка и пропадет.



Офлайн

#3 Авг. 30, 2010 20:56:55

Carzil
От:
Зарегистрирован: 2010-05-26
Сообщения: 106
Репутация: +  0  -
Профиль   Отправить e-mail  

Wanted: ошибка!

Хорошая идея, спасибо. Но всё-таки, почему ошибка?



Отредактировано (Авг. 30, 2010 21:05:03)

Офлайн

#4 Авг. 30, 2010 20:58:56

ivadim
От:
Зарегистрирован: 2010-08-17
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Wanted: ошибка!

Cтранно, но у меня работает. у меня python 2.6



Офлайн

#5 Авг. 30, 2010 21:34:09

Carzil
От:
Зарегистрирован: 2010-05-26
Сообщения: 106
Репутация: +  0  -
Профиль   Отправить e-mail  

Wanted: ошибка!

Нашёл! В отступах дело….



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version