DINO A Friendly ‘Dinosaur’ Language for Kids Final Project Report Author: Manu JainTable of Contents 1. Introduction___________________________________________________________ 4 1.1. What is DINO _______________________________________________________ 4 1.2. Purpose_____________________________________________________________ 4 1.3. Basic Idea___________________________________________________________ 4 1.4. Evolution of Concepts_________________________________________________ 4 2. Language Tutorial______________________________________________________ 4 2.1. Basics ______________________________________________________________ 4 2.2. A Simple Program____________________________________________________ 4 2.3. A More Complex Program_____________________________________________ 5 3. Language Manual ______________________________________________________ 6 3.1. Introduction_________________________________________________________ 6 3.2. Syntax Notation______________________________________________________ 6 3.3. The Big Picture ______________________________________________________ 6 3.4. Language Rules______________________________________________________ 6 3.5. Lexical Conventions __________________________________________________ 7 3.5.1. Tokens __________________________________________________________________ 7 3.5.2. Comments _______________________________________________________________ 7 3.5.3. Identifiers________________________________________________________________ 7 3.5.4. Keywords________________________________________________________________ 7 3.5.5. Constants ________________________________________________________________ 8 3.5.6. Operators ________________________________________________________________ 8 3.6. Meaning of Identifiers ________________________________________________ 8 3.6.1. Basic Types ______________________________________________________________ 8 3.6.2. Derived Types ____________________________________________________________ 8 3.7. Conversions _________________________________________________________ 9 3.8. Expressions _________________________________________________________ 9 3.8.1. Primary Expressions _______________________________________________________ 9 3.8.2. Function Call _____________________________________________________________ 9 3.8.3. Dino Method Call ________________________________________________________ 10 3.8.4. Dino Property Accessor____________________________________________________ 10 3.8.5. Multiplicative Operators ___________________________________________________ 10 3.8.6. Additive Operators _______________________________________________________ 10 3.8.7. Increment and Decrement Operators__________________________________________ 10 3.8.8. Relational Operators ______________________________________________________ 11 3.8.9. Equality Operators________________________________________________________ 11 3.8.10. Assignment Expression__________________________________________________ 11 3.9. Definitions _________________________________________________________ 12 3.9.1. Function Definition _______________________________________________________ 12 3.9.2. Dino Method Definition ___________________________________________________ 12 3.9.3. Property Definition _______________________________________________________ 13 3.10. Variable Creation ___________________________________________________ 133.10.1. Creating Integers_______________________________________________________ 13 3.10.2. Creating Strings _______________________________________________________ 13 3.10.3. Creating Dinosaurs _____________________________________________________ 13 3.10.4. Creating Lists _________________________________________________________ 13 3.11. Statements _________________________________________________________ 14 3.11.1. Selection Statement_____________________________________________________ 14 3.11.2. Iteration Statement _____________________________________________________ 14 3.12. External Declarations________________________________________________ 15 4. Project Plan __________________________________________________________ 15 4.1. Process ____________________________________________________________ 15 4.2. Programming Style__________________________________________________ 15 4.3. Show your project timeline ___________________________________________ 15 4.4. Roles and Responsibilities ____________________________________________ 16 4.5. Software Development Environment ___________________________________ 16 5. Architectural Design___________________________________________________ 17 5.1. Major Components__________________________________________________ 17 5.2. Developers _________________________________________________________ 17 6. Test Plan_____________________________________________________________ 17 6.1. Hello World Test with String Literal ___________________________________ 17 6.2. Hello World Test with String Variable__________________________________ 17 6.3. Integer Operators Test _______________________________________________ 18 6.4. Simple Dino Test____________________________________________________ 19 6.5. Complex Dino Test __________________________________________________ 20 6.6. Do-Times Test ______________________________________________________ 21 7. Lessons Learned ______________________________________________________ 21 7.1. Beneath the Covers __________________________________________________ 21 7.2. It’s not Easy to Make it Simple ________________________________________ 22 7.3. OCaml Really is Different!____________________________________________ 22 7.4. Be Less Ambitious___________________________________________________ 22 7.5. Develop All Parts Together Iteratively __________________________________ 22 7.6. Working Alone is Boring _____________________________________________ 23 8. Appendix – Code Listing _______________________________________________ 23 8.1. Scanner.mll ________________________________________________________ 23 8.2. Parser.mly _________________________________________________________ 24 8.3. AST.ml ____________________________________________________________ 27 8.4. Interpret.ml ________________________________________________________ 29 8.5. Dino.ml____________________________________________________________ 321. Introduction 1.1. What is DINO DINO is intended to be a fun, easy-to-learn language for kids. It is created by the author as a project for
View Full Document