reasoning-gym/reasoning_gym/code/contrib/bfit/Compiler/Token.py
2025-01-30 15:42:11 +01:00

70 lines
1.6 KiB
Python

class Token:
INT = "INT"
VOID = "VOID"
TRUE = "TRUE"
FALSE = "FALSE"
AND = "AND"
OR = "OR"
NOT = "NOT"
RETURN = "RETURN"
IF = "IF"
ELSE = "ELSE"
WHILE = "WHILE"
FOR = "FOR"
DO = "DO"
BREAK = "BREAK"
CONTINUE = "CONTINUE"
SWITCH = "SWITCH"
CASE = "CASE"
DEFAULT = "DEFAULT"
COLON = "COLON"
SEMICOLON = "SEMICOLON"
COMMA = "COMMA"
LPAREN = "LPAREN"
RPAREN = "RPAREN"
LBRACE = "LBRACE"
RBRACE = "RBRACE"
LBRACK = "LBRACK"
RBRACK = "RBRACK"
ASSIGN = "ASSIGN"
TERNARY = "TERNARY"
RELOP = "RELOP"
BINOP = "BINOP"
INCREMENT = "INCREMENT"
DECREMENT = "DECREMENT"
UNARY_MULTIPLICATIVE = "UNARY_MULTIPLICATIVE"
BITWISE_SHIFT = "BITWISE_SHIFT"
BITWISE_NOT = "BITWISE_NOT"
BITWISE_AND = "BITWISE_AND"
BITWISE_OR = "BITWISE_OR"
BITWISE_XOR = "BITWISE_XOR"
WHITESPACE = "WHITESPACE"
ID = "ID"
NUM = "NUM"
STRING = "STRING"
CHAR = "CHAR"
PRINT = "PRINT"
COMMENT = "COMMENT"
UNIDENTIFIED = "UNIDENTIFIED"
def __init__(self, type, line, column, data=None, original_tokens=None):
self.type = type
self.line = line
self.column = column
self.data = data
self.original_tokens = original_tokens
def __str__(self):
result = self.type
if self.data:
result += " " + self.data
result += " (line %s column %s)" % (self.line, self.column)
if self.original_tokens:
result += " (original tokens: " + ", ".join([str(t) for t in self.original_tokens]) + ")"
return result