# 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: ## 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 . 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.