Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- TYPE_INT = 1
- TYPE_STR = 2
- TYPE_FLO = 3
- ID_FUNC = 4
- ID_INT_VAR = 5
- ID_STR_VAR = 6
- ID_FLO_VAR = 7
- L_BRAC = 8
- R_BRAC = 9
- L_S_BRAC = 10
- R_S_BRAC = 11
- L_C_BRAC = 12
- R_C_BRAC = 13
- IF_ID1 = 14
- IF_ID2 = 15
- IF_ID3 = 16
- IF_ID4 = 17
- PF = 18
- SF = 19
- ID_ARR = 20
- EL = 21
- EQ = 22
- PLUS = 23
- MINUS = 24
- RULES = [[TYPE_INT,ID_FUNC,L_BRAC,R_BRAC,L_C_BRAC,[[TYPE_INT,ID_INT_VAR,EL],
- [TYPE_STR,ID_STR_VAR,EL],
- [TYPE_FLO,ID_FLO_VAR,EL]],R_C_BRAC],
- [TYPE_STR,ID_FUNC,L_BRAC,R_BRAC,L_C_BRAC,[[TYPE_INT,ID_INT_VAR,EL],
- [TYPE_STR,ID_STR_VAR,EL],
- [TYPE_FLO,ID_FLO_VAR,EL]],R_C_BRAC],
- [TYPE_FLO,ID_FUNC,L_BRAC,R_BRAC,L_C_BRAC,[[TYPE_INT,ID_INT_VAR,EL],
- [TYPE_STR,ID_STR_VAR,EL],
- [TYPE_FLO,ID_FLO_VAR,EL]],R_C_BRAC],
- [TYPE_INT,ID_INT_VAR,EL],
- [TYPE_STR,ID_STR_VAR,EL],
- [TYPE_FLO,ID_FLO_VAR,EL]]
- MEMORY = []
- def parse(txt):
- _TXT = ''
- TOKENS = []
- CMD = 0
- TYPE = 0
- BACKUP = ''
- for i in txt:
- if i != ' ':
- if i.isalpha():
- _TXT += i
- print(_TXT)
- if _TXT == 'int': TOKENS.append(TYPE_INT); TYPE = 1; _TXT = ''; continue
- elif _TXT == 'string': TOKENS.append(TYPE_STR); TYPE = 2; _TXT = ''; continue
- elif _TXT == 'float': TOKENS.append(TYPE_FLO); TYPE = 3; _TXT = ''; continue
- if i == '(':
- if _TXT != '':
- MEMORY.append((_TXT,ID_FUNC))
- TOKENS.append(ID_FUNC)
- TOKENS.append(L_BRAC)
- TOKENS.append(R_BRAC)
- TYPE = 0
- BACKUP = ''; _TXT = ''
- elif i == '[':
- if _TXT != '':
- MEMORY.append((_TXT,ID_ARR))
- TOKENS.append(ID_ARR)
- TOKENS.append(L_S_BRAC)
- TOKENS.append(R_S_BRAC)
- TYPE = 0
- BACKUP = '';_TXT = ''
- elif i == ';':
- if _TXT != '':
- if TYPE == 1:
- TOKENS.append(ID_INT_VAR)
- MEMORY.append((_TXT,ID_INT_VAR))
- BACKUP = ''; TYPE = 0; _TXT = ''
- elif TYPE == 2:
- TOKENS.append(ID_STR_VAR)
- MEMORY.append((_TXT,ID_STR_VAR))
- BACKUP = ''; TYPE = 0; _TXT = ''
- elif TYPE == 3:
- TOKENS.append(ID_FLO_VAR)
- MEMORY.appendd((_TXT,ID_FLO_VAR))
- BACKUP = ''; TYPE = 0; _TXT = '';
- TOKENS.append(EL)
- elif i == '{':
- TOKENS.append(L_C_BRAC)
- elif i == '}':
- TOKENS.append(R_C_BRAC)
- else:
- if TYPE == 1:
- BACKUP = _TXT
- _TXT = ''
- elif TYPE == 2:
- BACKUP = _TXT
- _TXT = ''
- elif TYPE == 3:
- BACKUP = _TXT
- _TXT = ''
- else:
- _TXT = ''
- return TOKENS
- txt = 'int main;'
- print(parse(txt))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement