1

Jack という言語 (Java に似ています) 用のコンパイラを構築しています。トークナイザーに取り組んでいますが、ファイル内のトークンが整数かどうかを判断しようとして問題が発生しています。言語とシンボルで予約語を実装する方法は次のとおりです。

def tokenType(self):
    if self.token in ['class', 'constructor', 'function', 'method', 'field', 'static', 'var', 'int', 'char', 'boolean', 'void', 'true', 'false', 'null', 'this', 'let', 'do', 'if', 'else', 'while', 'return']:
        return 'KEYWORD'

    elif self.token in ['{', '}', '(', ')', '[', ']',  '.', ',', ';', '+', '-', '*' ,'/', '&', '|', '<', '>', '=', '~']:
        return 'SYMBOL'

ただし、トークンが 0 ~ 32767 の整数であるかどうかを判断する方法がわかりません。値の範囲を簡単に検索する方法はありますか?

4

2 に答える 2

4
elif self.token.isdigit() and 0 <= int(self.token) < 32768:
    return 'INTEGER'
于 2013-04-07T20:08:20.233 に答える
0

こんな感じですか?

elif self.token.isdigit():
    return 'INTEGER_LITERAL'
于 2013-04-07T20:07:10.090 に答える