def __call__(cls: Enum, value, names=None, *, module=None, qualname=None, type=None, start=1): if names is None: return cls._create_instance(value) return cls._create_(value, names, module=module, qualname=qualname, type=type, start=start)
possible_tokens = ['ARRAY', 'BOOLEAN', 'BREAK', 'CHAR', 'CONTINUE', 'DO', 'ELSE', 'FALSE', 'FUNCTION', 'IF', 'INTEGER', 'OF', 'STRING', 'STRUCT', 'TRUE', 'TYPE', 'VAR', 'WHILE', 'COLON', 'SEMI_COLON', 'COMMA', 'EQUALS', 'LEFT_SQUARE', 'RIGHT_SQUARE', 'LEFT_BRACES', 'RIGHT_BRACES', 'LEFT_PARENTHESIS', 'RIGHT_PARENTHESIS', 'AND', 'OR', 'LESS_THAN', 'GREATER_THAN', 'LESS_OR_EQUAL', 'GREATER_OR_EQUAL', 'NOT_EQUAL', 'EQUAL_EQUAL', 'PLUS', 'PLUS_PLUS', 'MINUS', 'MINUS_MINUS', 'TIMES', 'DIVIDE', 'DOT', 'NOT', 'CHARACTER', 'NUMERAL', 'STRINGVAL', 'ID', 'UNKNOWN'] possible_tokens_ids = ['array', 'boolean', 'break', 'char', 'continue', 'do', 'else', 'false', 'function', 'if', 'integer', 'of', 'string', 'struct', 'true', 'type', 'var', 'while', ':', ';', ',', '=', '[', ']', '"', '"', '(', ')', '&&', '||', '<', '>', '<=', '>=', '!=', '==', '+', '++', '-', '--', '*', '/', '.', '!', 'character', 'numeral', 'stringval', 'id'] Tokens = Enum._create_('Tokens', possible_tokens, None, int) def searchKeyWord(text): if possible_tokens_ids.__contains__(text.lower()): return possible_tokens_ids.index(text.lower())+1 else: return Tokens.ID.value def searchName(text): if possible_tokens.__contains__(text.upper()): return possible_tokens.index(text.upper()) else: return -1
'RIGHT_SQUARE', 'LEFT_BRACES', 'RIGHT_BRACES', 'LEFT_PARENTHESIS', 'RIGHT_PARENTHESIS', 'AND', 'OR', 'LESS_THAN', 'GREATER_THAN', 'LESS_OR_EQUAL', 'GREATER_OR_EQUAL', 'NOT_EQUAL', 'EQUAL_EQUAL', 'PLUS', 'PLUS_PLUS', 'MINUS', 'MINUS_MINUS', 'TIMES', 'DIVIDE', 'DOT', 'NOT', 'CHARACTER', 'NUMERAL', 'STRINGVAL', 'ID', 'UNKNOWN' ] possible_tokens_ids = [ 'array', 'boolean', 'break', 'char', 'continue', 'do', 'else', 'false', 'function', 'if', 'integer', 'of', 'string', 'struct', 'true', 'type', 'var', 'while', ':', ';', ',', '=', '[', ']', '"', '"', '(', ')', '&&', '||', '<', '>', '<=', '>=', '!=', '==', '+', '++', '-', '--', '*', '/', '.', '!', 'character', 'numeral', 'stringval', 'id' ] Tokens = Enum._create_('Tokens', possible_tokens, None, int) def searchKeyWord(text): if possible_tokens_ids.__contains__(text.lower()): return possible_tokens_ids.index(text.lower()) + 1 else: return Tokens.ID.value def searchName(text): if possible_tokens.__contains__(text.upper()): return possible_tokens.index(text.upper()) else: return -1
__author__ = 'Kaike' from models import * from enum import Enum ## kind tKinds = ["NO_KIND_DEF", "VAR_", "PARAM_", "FUNCTION_", "FIELD_", "ARRAY_TYPE_", "STRUCT_TYPE_", "ALIAS_TYPE_", "SCALAR_TYPE_" , "UNIVERSAL_"] Kinds = Enum._create_('Kinds', tKinds, None, int) int_ = Object(-1, None, Kinds.SCALAR_TYPE_) char_ = Object(-1, None, Kinds.SCALAR_TYPE_) bool_ = Object(-1, None, Kinds.SCALAR_TYPE_) string_ = Object(-1, None, Kinds.SCALAR_TYPE_) universal_ = Object(-1, None, Kinds.SCALAR_TYPE_) def IS_TYPE_KIND(k): return k == Kinds.ARRAY_TYPE_ or k == Kinds.STRUCT_TYPE_ or k == Kinds.ALIAS_TYPE_ or k == Kinds.SCALAR_TYPE_ def CheckTypes(self, t1, t2): if(t1 == t2): return True elif(t1 == universal_ or t2 == universal_): return True elif(t1.eKind == Kinds.UNIVERSAL_ or t2.eKind == Kinds.UNIVERSAL_): return True elif(t1.eKind == Kinds.ALIAS_TYPE_ and t2.eKind != Kinds.ALIAS_TYPE_):