Beispiel #1
0
 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)
Beispiel #2
0

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


Beispiel #3
0
    '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
Beispiel #4
0
__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_):