Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
courses:cs331-201701:project [2018/09/11 15:05]
sellis [Specifications]
courses:cs331-201701:project [2018/11/01 15:06] (current)
sellis [Table]
Line 12: Line 12:
 ==== Schedule ==== ==== Schedule ====
  
-       ^ Component ​                ​^ ​ Date released ​            ​^ ​ Date due                ^  Grade   ​^ ​Specification ​ ^ +      ​ Component ​                ​^ ​ Date released ​            ​^ ​ Date due                ^  Grade   ​^  ​Specification ​                               ​
-|  I     ​| Lexical analyser (lexer) ​ |  Tuesday, 11th September ​  ​| ​ Friday, 21st September ​ |  4       ​| ​               +|  I     Lexical analyser (lexer) ​ |  Tuesday, 11th September ​  ​| ​ Friday, 21st September ​ |  4       ​| ​ ​[[Lexer|Lexical Analyser]] ​                  
-|  II    | Parser ​                   |  Thursday, 20th September ​ |  Sunday, 30th September ​ |  3       ​| ​               +|  II   ​ Parser ​                   |  Thursday, 20th September ​ |  Sunday, 30th September ​ |  3       ​| ​ ​[[Parser|Parser]] ​                           ​
-|  III   ​| Symbol table routines ​    ​| ​ Tuesday, 2nd October ​     |  Friday, 12th October ​   |  1       ​| ​               | +|  III   Symbol table routines ​    ​| ​ Tuesday, 2nd October ​     |  Friday, 12th October ​   |  1       ​| ​ ​[[SymbolTable|Symbol Tables]] ​               
-|  IV    | Semantic actions I        | Tuesday, 9th October ​      ​| Friday, 26th October ​    ​|  2       ​| ​               +|       ​| ​                           |                            |                          |          |  [[SemAct|Semantic Actions (General Notes)]]  ​
-|  V     ​| Semantic actions II       ​| ​ Tuesday, 23rd October ​    ​| ​ Friday, 2nd November ​   |  4       ​| ​               +|  IV   ​ Semantic actions I        |  Tuesday, 9th October ​      Friday, 26th October ​   |  2       ​| ​ ​[[SemAct_1|Semantic Actions (Phase 1)]]      ​
-|  VI    | Semantic actions III      |  Thursday, 1st November ​   |  Sunday, 11th November ​  ​| ​ 5       ​| ​               +|  V     Semantic actions II       ​| ​ Tuesday, 23rd October ​    ​| ​ Friday, 2nd November ​   |  4       ​| ​ ​[[SemAct_2|Semantic Actions (Phase 2)]]      ​
-|  VII   ​| Semantic actions IV       | Tuesday, 20th November ​    ​| Tuesday, 4th December ​   |  5       ​| ​               +|  VI   ​ Semantic actions III      |  Thursday, 1st November ​   |  Sunday, 11th November ​  ​| ​ 5       ​| ​ ​[[SemAct_3|Semantic Actions (Phase 3)]]      ​
-                                                                          **Subtotal** ​|||  **24** ​ |                +|  VII   Semantic actions IV       ​| ​ Tuesday, 20th November ​    Tuesday, 4th December ​  ​|  5       ​| ​                                              ​
- VIII  | Complete ​compiler ​        |                            |  Friday, 14th December ​  ​| ​ 36      |                +      ​                           ​| ​                           |             **Subtotal** |  **24** ​ |                                               ​
-                                                                             ​**TOTAL** ​|||  **60** ​ |                |+| VIII  |  Complete ​Compiler ​        | Tuesday, 4th December ​     ​|  Friday, 14th December ​  ​| ​ 36      |                                               ​
 +      ​                           ​| ​                           |                ​**TOTAL** |  **60** ​ |                                               ​|
  
-==== Grading ​====+==== Programming Languages ​====
  
-The project counts for 60% of your total grade for this courseThis comprises:+You may write this project either in **Java** or **Python**.
  
-  * 24%/60% (i.e. 40% of the total for the project) for development phase submissions;​ +  * If you wish to code in Java, I recommend [[https://​www.jetbrains.com/​idea/download/|IntelliJ IDEA]]. (Click '​Download'​ and then select '​Community'​.)
-  * 36%/60% (i.e. 60% of the total for the project) for the final submission. +
- +
-<​html><​p></​html>​ +
- +
-After each phase submission, I will provide a grade for the work together with some feedback on your code. You will then have an opportunity ​to review your code in the light of these suggestions,​ to make any improvements or squash bugs I may have found. +
- +
-With the exception of the final submission, I will not penalise work in later phases for uncorrected bugs in earlier work. Please remember, however, that this project is incremental in nature, so bugs in earlier phases can have a substantial impact on later work. +
- +
-==== Development Notes ==== +
- +
-=== Programming Language === +
- +
-The project must be implemented in **Java** or **Python**. +
-  * If you use Java, I recommend [[https://​www.jetbrains.com/​idea/​|IntelliJ IDEA]]. (Click '​Download'​ and then select '​Community ​Edition'.)+
   * If you use Python, I recommend [[https://​www.jetbrains.com/​pycharm/​|PyCharm]]. (Click '​Download Now' and then select '​Community'​.) ​   * If you use Python, I recommend [[https://​www.jetbrains.com/​pycharm/​|PyCharm]]. (Click '​Download Now' and then select '​Community'​.) ​
 <​html><​p></​html>​ <​html><​p></​html>​
Line 58: Line 45:
  
 === Parser === === Parser ===
 +
 +The function of the parser is to ensure that the stream of tokens conforms to the rules of the language; that is, that the input is syntactically correct.
 +
 +[[parser|Full specification.]]
  
 === Symbol Table === === Symbol Table ===
  
 === Semantic Actions === === Semantic Actions ===
 +
 +The semantic action subsystem is the part responsible for generating the intermediate code which can be run using The Vassar Interpreter. (We output intermediate code for several reasons.) This subsystem accepts tokens from the parser when triggered by symbols in an augmented version of the Vascal grammar: these points are where there is sufficient information for there to be semantic meaning and therefore an operation can be performed. ​
 +
 +As this is a significant portion of the project, it has been split into 4 separate phases.
 +
 +== Semantic Actions (Phase I) ==
 +
 +In this phase, you will implement eight basic semantic actions responsible for processing variable declarations in the code.
 +
 +[[semact_1|Full specification.]]
  
 === Complete Compiler === === Complete Compiler ===
  
 +
 +==== Resources ====
 +
 +  - [[https://​www.cs.vassar.edu/​~cs331/​code/​src|Source code samples.]]
 +  - [[https://​www.cs.vassar.edu/​~cs331/​code/​lex|Tokenised files.]]
 ==== Submission Guidelines ==== ==== Submission Guidelines ====