Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.45 KB | None | 0 0
  1. import os
  2.  
  3. TYPE_INT = 1
  4. TYPE_STR = 2
  5. TYPE_FLO = 3
  6. ID_FUNC = 4
  7. ID_INT_VAR = 5
  8. ID_STR_VAR = 6
  9. ID_FLO_VAR = 7
  10. L_BRAC = 8
  11. R_BRAC = 9
  12. L_S_BRAC = 10
  13. R_S_BRAC = 11
  14. L_C_BRAC = 12
  15. R_C_BRAC = 13
  16. IF_ID1 = 14
  17. IF_ID2 = 15
  18. IF_ID3 = 16
  19. IF_ID4 = 17
  20. PF = 18
  21. SF = 19
  22. ID_ARR = 20
  23. EL = 21
  24. EQ = 22
  25. PLUS = 23
  26. MINUS = 24
  27. RULES = [[TYPE_INT,ID_FUNC,L_BRAC,R_BRAC,L_C_BRAC,[[TYPE_INT,ID_INT_VAR,EL],
  28.                                                    [TYPE_STR,ID_STR_VAR,EL],
  29.                                                    [TYPE_FLO,ID_FLO_VAR,EL]],R_C_BRAC],
  30.          [TYPE_STR,ID_FUNC,L_BRAC,R_BRAC,L_C_BRAC,[[TYPE_INT,ID_INT_VAR,EL],
  31.                                                    [TYPE_STR,ID_STR_VAR,EL],
  32.                                                    [TYPE_FLO,ID_FLO_VAR,EL]],R_C_BRAC],
  33.          [TYPE_FLO,ID_FUNC,L_BRAC,R_BRAC,L_C_BRAC,[[TYPE_INT,ID_INT_VAR,EL],
  34.                                                    [TYPE_STR,ID_STR_VAR,EL],
  35.                                                    [TYPE_FLO,ID_FLO_VAR,EL]],R_C_BRAC],
  36.          [TYPE_INT,ID_INT_VAR,EL],
  37.          [TYPE_STR,ID_STR_VAR,EL],
  38.          [TYPE_FLO,ID_FLO_VAR,EL]]
  39. MEMORY = []
  40.  
  41. def parse(txt):
  42.     _TXT = ''
  43.     TOKENS = []
  44.     CMD = 0
  45.     TYPE = 0
  46.     BACKUP = ''
  47.     for i in txt:
  48.         if i != ' ':
  49.             if i.isalpha():
  50.                 _TXT += i
  51.             print(_TXT)
  52.             if _TXT == 'int': TOKENS.append(TYPE_INT); TYPE = 1; _TXT = ''; continue
  53.             elif _TXT == 'string': TOKENS.append(TYPE_STR); TYPE = 2; _TXT = ''; continue
  54.             elif _TXT == 'float': TOKENS.append(TYPE_FLO); TYPE = 3; _TXT = ''; continue
  55.            
  56.             if i == '(':
  57.                 if _TXT != '':
  58.                     MEMORY.append((_TXT,ID_FUNC))
  59.                     TOKENS.append(ID_FUNC)
  60.                     TOKENS.append(L_BRAC)
  61.                     TOKENS.append(R_BRAC)
  62.                     TYPE = 0
  63.                     BACKUP = ''; _TXT = ''
  64.             elif i == '[':
  65.                 if _TXT != '':
  66.                     MEMORY.append((_TXT,ID_ARR))
  67.                     TOKENS.append(ID_ARR)
  68.                     TOKENS.append(L_S_BRAC)
  69.                     TOKENS.append(R_S_BRAC)
  70.                     TYPE = 0
  71.                     BACKUP = '';_TXT = ''
  72.             elif i == ';':
  73.                 if _TXT != '':
  74.                     if TYPE == 1:
  75.                         TOKENS.append(ID_INT_VAR)
  76.                         MEMORY.append((_TXT,ID_INT_VAR))
  77.                         BACKUP = ''; TYPE = 0; _TXT = ''
  78.                     elif TYPE == 2:
  79.                         TOKENS.append(ID_STR_VAR)
  80.                         MEMORY.append((_TXT,ID_STR_VAR))
  81.                         BACKUP = ''; TYPE = 0; _TXT = ''
  82.                     elif TYPE == 3:
  83.                         TOKENS.append(ID_FLO_VAR)
  84.                         MEMORY.appendd((_TXT,ID_FLO_VAR))
  85.                         BACKUP = ''; TYPE = 0; _TXT = '';
  86.                 TOKENS.append(EL)
  87.             elif i == '{':
  88.                 TOKENS.append(L_C_BRAC)
  89.             elif i == '}':
  90.                 TOKENS.append(R_C_BRAC)
  91.         else:
  92.             if TYPE == 1:
  93.                 BACKUP = _TXT
  94.                 _TXT = ''
  95.             elif TYPE == 2:
  96.                 BACKUP = _TXT
  97.                 _TXT = ''
  98.             elif TYPE == 3:
  99.                 BACKUP = _TXT
  100.                 _TXT = ''
  101.             else:
  102.                 _TXT = ''
  103.     return TOKENS
  104.  
  105. txt = 'int main;'
  106. print(parse(txt))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement