A compiler for the Simple Integer Language, written using Lex and Yacc
Switch branches/tags
Nothing to show
Pull request Compare This branch is 14 commits behind addy689:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



A compiler for the Simple Integer Language (SIL) that reads a SIL source program, and generates instructions for a target machine known as the Simple Integer Machine (SIM).
Source Language (SIL) description can be found at [http://athena.nitc.ac.in/~kmurali/Compiler/sil.html]
Target Machine (SIM) Architecture description can be found at [http://athena.nitc.ac.in/~kmurali/Compiler/sim.html]

Author :

Contributors :

License :

  • The code is licensed under the MIT License

# Repository Information

Folder Listing

	<td>SILCompiler</td><td>Contains compiler source programs that are used to compile and generate SIM code for a SIL source program</td>

	<td>SILCompiler/LexYaccFiles</td><td>Contains a Lex file <i>SIL.l</i> (for lexically analysing SIL source program) and a Yacc file <i>SIL.y</i> (for parsing SIL source program)</td>

	<td>Main</td><td>Contains a <i>Makefile</i> for compiling the compiler source programs, SIL source program files <i>SILsource{1-4}</i>, and a file <i>SIMCode</i> (target file for the instructions that the compiler generates)</td>

	<td>Main/SIM_Simulator</td><td>Contains the simulator for SIM</td>


  1. Compile the compiler source programs using the Makefile present in Main/. In the terminal, write

     $ cd Main/
    $ make all
  2. Using the object file sil that is created, compile any of the SIL source programs present in Main/. In the terminal, write

     $ ./sil SILsource1
  3. The SIL source program will be executed. Also, the SIM instructions that are generated will be stored in file SIMcode

  4. The instructions in the file SIMcode are executed using the SIM simulator present in Main/SIM_Simulator/. To execute the generated SIM instructions, write in the terminal

     $ cd SIM_Simulator/
    $ make all
    $ ./sim ../SIMcode