Design programming language that is used for any particular application (e.g.
robotics, actions in a vacuum cleaner, a drawing tool on Windows, a home security
system, driving a car, etc.). Your language should be significantly different from the
Tiny+ language .
2. Describe your language informally in English (2 or 3 paragraphs in your report): main
purpose of the language and application domain.
3. Design an unambiguous context free grammar for your language, including all regular
definitions.
4. 5 terminals, 5 non-terminals,5 productions (each string of terminals/nonterminals in the RHS of a production, which is separated by “|”, counts as a production). That is, “A B |
C” counts as two productions.
5. Your grammar should resolve at least one case of ambiguity (i.e., precedence of addition/multiplication or the dangling-else problem). In your
report, address that case of ambiguity and describe how you resolve it.
6. Your programming language should also include a “read” and “write or print” statement,
so that you let the user input data from the console and see a printed output of the result
of the program.
7. Implement your compiler using a parser generator (JFlex+JavaCUP+Translator). Once
you implement it your new programming language should include two commands:
“compile [login to view URL]”, which will parse your source program “[login to view URL]” and produce
a compiled called “[login to view URL]”. This file will contain a Java class.
“run [login to view URL]” which will run the executable program (i.e., will run the Java class).
8. Write at least two programs in your language. Compile them and run them. In your
report, include your inputs, outputs and the results (screenshots of the
compilation/running process