+ All Categories
Home > Documents > Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Date post: 03-Jan-2022
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
14
Espresso Somdeep Dey Rohit Gurunath Jianfeng Qian Oliver Willens
Transcript
Page 1: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Espresso

Somdeep DeyRohit GurunathJianfeng QianOliver Willens

Page 2: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

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

Page 3: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

IntroductionWhat is the Idea behind Espresso?

● A Object-Oriented programming language inspired by Java, stripped down and augmented.

Page 4: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

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.

Page 5: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Development Environment

Version Control Text Editing Operating

System Virtualization

Page 6: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Dec 12 - Dec 20 Oct 27 - Nov 20 Nov 21 - Dec 11 Sep 28 - Oct 26

Project Timeline

Proposal

Language Ref. Manual

“Hello World!”

Comprehensive Pipeline

Page 7: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Git History129 Commits

Page 8: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Guidelines

Page 9: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Syntax

//This is an Espresso Comment

/*

So is this

*/

Comments Operators Arrays

+ //add- //sub* //mult/ //div= //assign== //eq!- //neq< //lt<= //leq> //gt>= //geq&& //and|| //or! //not

int[10] arr;

Arr = {1,2,3,4,5,6,7,8,9,10};

Float[1] precise_arr;

precise_arr[0] = 0.0002;

Page 10: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

int i;for (i=1;i<10;i++){

print_int(i);}

int x = 0;while(i<10){

print_int(x);x++;

}

Loops Branching Classes

while (i < 2){print_int(item);

break;}

for (int i=0; i<4;i++){if (arr[i] > 0)

print_int(data[i]);}

int first_positive(int[] arr){for(int i=0;i<4;i++){

if(arr[i] > 0} return arr[i];

return -1;{

Class BankCount{

int saving;String name;BankCount(class BankCount

self, String n, int a){ self.name = n; self.Saving = a; } bool withdraw(class BankCount self, int a){ if (a < 0){ return false; } else if(self.saving > a){ self.saving -= a; return true; } }}

Page 11: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

class work{ int a; void main() {

int b; int c; int d; int[10] arr; this.a = 100; class animal an; lambda : char lfunc(char a) { return a; } print_char (an.getChar(lfunc)); }}

Lambda

class animal{ char b; bool x;

char getChar(lambda lfunc) { return #lfunc('a'); }

int perform() { int i; i = 5; i = 1; return i*2; }}

Page 12: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Architecture

.es File Scanner Semant

LLVM

Parser Codegen

AST SAST

Page 13: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

TestingOur MO: Test-Driven Development

Unit Testing Integration Testing

Small test programs were written throughout the development process, designed to test the most recently added feature.

We created a large and comprehensive test suite, built to test features we didn’t think of during the development process, and to make sure the newest feature doesn’t negatively affect any of the previous ones.

Automation

/testall.sh

Page 14: Oliver Willens Espresso Jianfeng Qian Rohit Gurunath ...

Recommended