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 回答