in a programming language compiler the lexical analyzer processes a text file containing the module source code to generate a sequence of tokens. These tokens are fed into a syntax analyzer which generates the corresponding parsing tree. After that, the parsing tree is sent to the code generator, which reads the trees and produces the object code files. Finally, the code generator sends the generated object files to the optimized object code. Based on this description, you are required to design the software architecture of the compiler. The design should show any data passed between components. batch sequence