diff --git a/Codes/Python version/Assignment-A2 (Macro)/Code-A2.py b/Codes/Python version/Assignment-A2 (Macro)/Code-A2.py new file mode 100644 index 0000000..ebc2b1e --- /dev/null +++ b/Codes/Python version/Assignment-A2 (Macro)/Code-A2.py @@ -0,0 +1,86 @@ +# Assignment-A2 (Pass 1 and pass 2 macro processor) +try: + source= open('source.txt', 'r') + dum = source.readline() + print("File is read successfully.") + source.seek(0) +except FileNotFoundError: + print('\n\n\nsource.txt file not found.\nOpen Macroprocessor Folder in VSC[not the main folder]\n\n\n') +except IOError: + print('The source file has an IO error') + + +MDT =[] +MNT =[] + +def macroman(line): + name = line.split()[1] #A concise way to get the 2nd word-> name of macro. index =1. first split and then get 2nd word + entry = [] + entry.append(line.strip()) #append the macro definition line + while True: + line=source.readline().upper() + if not line: + print('No MEND found for: ', name) + return + if 'MACRO' in line: + macroman(line) + elif 'MEND' in line: + global MDT, MNT + entry.append(line.strip()) #MEND line appended too + MNT.append([len(MNT)+1, name, len(MDT)+1]) # Eg. 1 Fibo 50 + MDT = MDT + entry + return + else: + entry.append(line.strip()) + + +def pass1(): + global MDT, MNT + while True: + line = source.readline().upper() + if not line:break + if 'MACRO' in line: + macroman(line) + print('\nMNT:') + for a in MNT: + print(a) + print('\n\nMDT:') + i=0 + for a in MDT: + i=i+1 + print (i, ' ',a) + +pass1() +#pass 2 starts here: +def inserter(sline, name): + global MDT, MNT + sline = '' + for a in MNT: + if a[1] == name: + add = a[2] + break + while True: + if 'MEND' in MDT[add]: + break + sline += MDT[add] + '\n' + add+=1 + return sline + +def pass2(): + source.seek(0) + output = open('output.txt', 'w') + output.close() + output = open('output.txt', 'a+') + while True: + sline= source.readline().upper() + if not sline:break + for a in MNT: + if a[1] in sline and 'MACRO' not in sline: + sline=inserter(sline, a[1]) + d = sline.strip() + if d not in MDT: + output.write(sline) + print('done.') + + +pass2() diff --git a/Codes/Python version/Assignment-A2 (Macro)/source.txt b/Codes/Python version/Assignment-A2 (Macro)/source.txt new file mode 100644 index 0000000..5cb83e8 --- /dev/null +++ b/Codes/Python version/Assignment-A2 (Macro)/source.txt @@ -0,0 +1,21 @@ +macro add num1, num2 +a1 +maCro sub num1, num2 +s1 +s2 +s3 +mend +a2 +mend +The code above should not come in output coz it's just definitions. +The actual code begins from here. +sure, you can write any shit in the file. +start 1000 +mover areg, 50 +movem breg, 100 +I am now calling first function. The following line should be replaced by the body: +add areg, 30 +dbms_output.print_line('Present Ma'am!') +equ areg, 40 +add 5,6 +sub 3,4 diff --git a/Codes/Python version/README.md b/Codes/Python version/README.md index 0154394..3526945 100644 --- a/Codes/Python version/README.md +++ b/Codes/Python version/README.md @@ -9,7 +9,7 @@ --- - [Assignment-A1 (Pass 1 and pass 2 assembler)](https://git.kska.io/sppu-te-comp-content/SystemsProgrammingAndOperatingSystem/src/branch/main/Codes/Python%20version/Assignment-A1%20%28Assembler%29) -- [Assignment-A2 (Pass 1 and pass 2 macro)](https://git.kska.io/sppu-te-comp-content/SystemsProgrammingAndOperatingSystem/src/branch/main/Codes/Group%20A/Code-A2.py) - This code is from "Codes/Group A" folder +- [Assignment-A2 (Pass 1 and pass 2 macro)](https://git.kska.io/sppu-te-comp-content/SystemsProgrammingAndOperatingSystem/src/branch/main/Codes/Python%20version/Assignment-A2%20%28Macro%29) // Alternate version available in [Codes/Group A](https://git.kska.io/sppu-te-comp-content/SystemsProgrammingAndOperatingSystem/src/branch/main/Codes/Group%20A/Code-A2.py) folder. - [Assignment-A3 (DLL)](https://git.kska.io/sppu-te-comp-content/SystemsProgrammingAndOperatingSystem/src/branch/main/Codes/Group%20A/Assignment-A3) - This code is from "Codes/Group A" folder - [Assignment-A4 (Mutex and Semaphore)](https://git.kska.io/sppu-te-comp-content/SystemsProgrammingAndOperatingSystem/src/branch/main/Codes/Group%20B/Code-B4.cpp) - This code is from "Codes/Group B" folder - [Assignment-A5 (CPU scheduling)](https://git.kska.io/sppu-te-comp-content/SystemsProgrammingAndOperatingSystem/src/branch/main/Codes/Python%20version/Assignment-A5%20%28CPU%20Scheduling%29)