a matrix manipulation language
play

A Matrix Manipulation Language J ulia Troxell (jst2152) - S am Stultz - PowerPoint PPT Presentation

A Matrix Manipulation Language J ulia Troxell (jst2152) - S am Stultz (sks2200) T essa Hurr (trh2124) E mily Song (eks2138) M ichelle Lu (ml3720) Introduction J-STEM is an imperative programming language that facilitates matrix manipulation. Its


  1. A Matrix Manipulation Language J ulia Troxell (jst2152) - S am Stultz (sks2200) T essa Hurr (trh2124) E mily Song (eks2138) M ichelle Lu (ml3720)

  2. Introduction J-STEM is an imperative programming language that facilitates matrix manipulation. Its key features are as follows: ❏ Strongly typed ❏ The main datatype is a matrix ❏ Standard library focused on matrices ❏ Compiles to the Low Level Virtual Machine (LLVM)

  3. Timeline Project Proposal, LRM Codegen Final Report Feb 8, Mar 21 Mar 26 Mar 27 May 9 Feb 22 Scanner & Hello, World Parser

  4. Language Overview Primitive Types: Function Declaration: File Extension: .JSTEM int, float, bool, char, string def int multiply(int a, int b) { Control Flow: /* function */ Data Types: if (True){ } Rows and Matrices print (42); } else { Operators: print(8); Declaration/Initialization: } int z; Standard Arithmetic Operators while (a>0){ z = 3; Scalar Matrix Operations a = a - 1; Tuple : } Arithmetic Matrix Operations int(%3%) t; int i; T = (% 1, 2, 3 %); for (i=0; i<5; i=i+1){ $ access pointer Row: print(i); $$ } int[5] x; # dereference pointer x[0] = 4; int[2][2] m; ~~ pointer increment Matrix: m = {% 1, 2 | 3, 4 %}; for (row in m) { int[2][2] y; print_rowi(row); y[0][1] = 4; }

  5. Hello, World! def int main() { prints(“Hello world”); return 0; }

  6. Brief Tutorial

  7. Architecture Tokens AST Input scanner. codegen. parser.mly semant.ml LLVM File mll ml AST

  8. Testing Testing automation program that goes through all of the “compiler_tests” and runs them Tests Directory Compiler Tests: compiler_testing.sh Success & fail tests included Scanner Tests: scanner_testing.sh Parser Tests: parser_testing.sh Continuous integration with Travis CI

  9. Lessons Learned Tessa: Ask a lot of questions because there isn’t much documentation, keep asking questions if you don’t understand Julia: The best way to understand the code is to try to write your own functions. You’ll run into tons of bugs but debugging forces you to really get to know the code Michelle: Continuously added in-depth failing and successful tests as you add each new feature to catch bugs early on, add descriptive fail exceptions and errors to help you debug Emily: Understand OCaml programming, how the components of the compiler fit together, and set concrete goals/deadlines in order to always be making progress Sam: The importance of using version control and having good team communication

  10. 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