espresso
play

Espresso Somdeep Dey Rohit Gurunath Jianfeng Qian Oliver Willens - PowerPoint PPT Presentation

Espresso Somdeep Dey Rohit Gurunath Jianfeng Qian Oliver Willens Overview Introduction & Background Planning & Schedule Development Environment Syntax Architecture Testing Demonstration


  1. Espresso Somdeep Dey Rohit Gurunath Jianfeng Qian Oliver Willens

  2. Overview ● Introduction & Background Planning & Schedule ● Development Environment ● Syntax ● ● Architecture Testing ● Demonstration ●

  3. Introduction What is the Idea behind Espresso? A Object-Oriented programming language inspired by Java, stripped down and ● augmented.

  4. Goals ● Intuition. Easy to just start coding for experienced programmers. A great platform to learn for beginners. Transparency. ● The LLVM IR code allows the user to understand the nuts and bolts of their program. ● Flexibility. Espresso allows for broad purpose use, rather than single-domain application. The language is portable and robust.

  5. Development Environment Version Operating Text Editing Virtualization Control System

  6. Project Timeline Proposal “Hello World!” ✓ Sep 28 - Oct 26 Oct 27 - Nov 20 Nov 21 - Dec 11 Dec 12 - Dec 20 Language Ref. Manual Comprehensive Pipeline

  7. Git History 129 Commits

  8. Guidelines

  9. Syntax Comments Operators Arrays //This is an Espresso Comment + //add i nt[10] arr; - //sub /* * //mult Arr = {1,2,3,4,5,6,7,8,9,10}; / //div So is this = //assign Float[1] precise_arr; == //eq */ !- //neq precise_arr[0] = 0.0002; < //lt <= //leq > //gt >= //geq && //and || //or ! //not

  10. Loops Branching Classes int i; while (i < 2){ Class BankCount{ print_int(item); for (i=1;i<10;i++){ break ; int saving; print_int(i); } String name; } BankCount(class BankCount self, String n, int a){ for (int i=0; i<4;i++){ self.name = n; if (arr[i] > 0) self.Saving = a; print_int(data[i]); } int x = 0; } while (i<10){ bool withdraw(class BankCount self, print_int(x); int first_positive(int[] arr){ int a){ for(int i=0;i<4;i++){ if (a < 0){ x++; if(arr[i] > 0} return false; } return arr[i]; } return -1; else if( self .saving > a){ { self .saving -= a; return true; } } }

  11. Lambda class work class animal { { int a; char b; void main() bool x; { char getChar(lambda lfunc) { int b; return #lfunc('a'); int c; } int d; int[10] arr; int perform() this.a = 100; { class animal an; int i; lambda : char lfunc(char a) { i = 5; return a; } i = 1; print_char (an.getChar(lfunc)); return i*2; } } } }

  12. Architecture AST SAST .es File Scanner Parser Semant Codegen LLVM

  13. Testing Our MO: Test-Driven Development Unit Testing Integration Testing Automation Small test programs were We created a large and /testall.sh written throughout the comprehensive test suite, development process, built to test features we designed to test the most didn’t think of during the recently added feature. development process, and to make sure the newest feature doesn’t negatively affect any of the previous ones.

Recommend


More recommend