well there s a language called go
play

...well theres a language called Go... James Stenger Jillian Knoll - PowerPoint PPT Presentation

...well theres a language called Go... James Stenger Jillian Knoll Lusa Zhan Jonathan Barrios System Architect Language Guru Project Manager Tester Goals Both functional and object oriented: - We want to create a functional


  1. ...well there’s a language called Go... James Stenger Jillian Knoll Lusa Zhan Jonathan Barrios System Architect Language Guru Project Manager Tester

  2. Goals Both functional and object oriented: - We want to create a functional programming language where users also have access to object-oriented style structures. Compiling to LLVM: - Compiling to LLVM allows for cross-language integrations that would allow a user to combine the functionality of Stop with a library from C.

  3. Software & Frameworks We constantly communicated - Virtual Machine: Ubuntu VM allowed for PC-independent code generation - Bitbucket: Used to create a private repository and track errors. We spent a lot of time programming in pairs for major architectural designs. We fixed bugs by raising issues after group work sessions. - Ocaml Core library: Preferred to standard library due to named parameters

  4. Syntax & Program Structure For, While If/Else If/Else Comments /* This is a comment */ if (a > 2){ var a:Int; // So is this printf(“%d”,a); Operators } else if(a < 2){ for (i=0; i<5; i++){ printf(“%d”,a); printf(“%d”,i); + - ++ -- * / % = == != } else { } < > <= >= && || ! printf(“a is Variables 2.”); while (i<10){ } printf(“%d”,i); var a:Int = 1;/* capital i++; letter for types */ Arrays } var arr:Int[] = Int[2]();

  5. Syntax & Program Structure Classes Functions //classes are user declared data types class Rectangle = { //main function with no arguments var j:Int; def main = ():Int { return 0;} var y:Int; var i:Int[];} //function takes single integer argument def square=(a:Int):Int {return a*a;} //instantiate class instance and declare variables //anonymous function def main = ():Int { var a = @(b:Int):Int { return b*b;} var q:Rectangle; q.y = 9; //fn that returns an anonymous function q.j = 10; def outer = (a:Int):Int->Int{ q.i = Int[5](); var inner = @(b:Int):Int{ q.i[4]=9; } return b*b; } return inner; }

  6. System Architecture Scanner Parser Analysis Codegen Tokenize AST SAST LLVM IR

  7. Testing - Automated Test Suite The first thing we did was create an automated test suite, partially borrowed from MicroC. The regression test suite is executed by the ./testall script. - Test Driven Development We followed TDD by first writing tests for new features followed by the feature implementation.

  8. Demo

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend