100 lines
3.1 KiB
Markdown
100 lines
3.1 KiB
Markdown
# Language Proposal
|
|
|
|
In this class we will have a series of labs focus developing and implementing an interpreter for a known language.
|
|
In this lab you will start the process by researching the language definition for your language.
|
|
You will gather code examples and language definitions for specific features.
|
|
|
|
## Language Choices
|
|
|
|
Please select one of the following languages (that has not been selected by someone else) for your language interpreter lab project:
|
|
|
|
|
|
ADA 80
|
|
Algol 68
|
|
COBOL
|
|
Dartmouth BASIC
|
|
Dart
|
|
F#
|
|
Fortran 77
|
|
MUMPS
|
|
Perl
|
|
Rust
|
|
Smalltalk
|
|
Swift
|
|
|
|
|
|
The following are also options, but carry a 5% penalty since they are more familiar:
|
|
|
|
|
|
C++
|
|
JavaScript
|
|
Ruby
|
|
|
|
|
|
## Code Example
|
|
|
|
To help guide the features needed in our interpreter, please find the code to implement these tasks.
|
|
|
|
* Hello World!
|
|
* Use the quadratic function to solve an equation
|
|
* Sort a list of integers (using any algorithm; keep it simple)
|
|
|
|
These code snippets will be used as a test case in your interpreter.
|
|
If you did not write this code, please cite the source.
|
|
|
|
Please create files in the `lab-2` folder to hold the snippets of code.
|
|
Use the `lab-2/LANGUAGE.md` to describe the input and output for these code snippets.
|
|
|
|
## Review The Code Snippets
|
|
|
|
What features are needed to implement this code?
|
|
|
|
Identifiers
|
|
Special words
|
|
Literal
|
|
Math Operators
|
|
Relational Operators
|
|
Delimiters
|
|
Lists
|
|
Loops
|
|
Branching
|
|
|
|
For each feature write down the definition for that feature. For example, create a list of special words (or reserved words) used by your code.
|
|
For something like Identifiers, what are the naming rules for an identifier? Please cite sources for language definition.
|
|
|
|
A Partial Example
|
|
|
|
An partial example report has been posted for the Python language.
|
|
See the example report: <https://gitlab.cs.wallawalla.edu/cptr354/language-interpreter-lab-python>
|
|
|
|
|
|
## Criteria
|
|
|
|
The following things will be looked for when grading your report:
|
|
|
|
* Code Snippet — Hello World code, input, and resulting output
|
|
* Code Snippet — Quadratic equation code, input, and resulting output
|
|
* Code Snippet — Integer sorting code, input, and resulting output
|
|
* Language Features — List of required language features
|
|
* Language Definitions — For each feature, define the syntax and rules to implement the feature
|
|
* Report skills — Easy to follow and writing quality
|
|
|
|
Your report and code should be in a forked project from <https://gitlab.cs.wallawalla.edu/cptr354/language-interpreter-lab>. Follow the `README.md` to configure your project.
|
|
|
|
## Grading Rubric
|
|
|
|
The grading will be over the following categories.
|
|
|
|
Points Description
|
|
----------- ------------------------------------
|
|
20 points Code Snippet — Quadratic equation
|
|
20 points Code Snippet — Integer sorting
|
|
10 points Language Features
|
|
40 points Language Definitions
|
|
10 points Report formatting and readability
|
|
|
|
## Turn In
|
|
|
|
Please submit the URL of your gitlab project to D2L's Brightspace with your report.
|
|
On gitlab update the `lab-2` folder to have your report and code snippets before the due date.
|