finl
play

finL Manager Lauren OConnor, leo2118 System Architect Paddy - PowerPoint PPT Presentation

finL Manager Lauren OConnor, leo2118 System Architect Paddy Quinn, pmq2101 Language Gru Josh Fram, jpf2141 Tester Rob Cornacchia, rlc2160 Background & Goals Development Roles and Responsibilities Josh Paddy Manager Lauren


  1. finL Manager Lauren O’Connor, leo2118 System Architect Paddy Quinn, pmq2101 Language Güru Josh Fram, jpf2141 Tester Rob Cornacchia, rlc2160

  2. Background & Goals

  3. Development

  4. Roles and Responsibilities Josh Paddy Manager Lauren O’Connor, leo2118 java libraries compiler development System Architect Paddy Quinn, pmq2101 YQL integration (semantics) Language Güru Josh Fram, jpf2141 Tester Rob Cornacchia, rlc2160 Lauren Rob compiler development test suite (syntax) not so strong financial knowledge strong

  5. Testing Unit Testing Regression Testing Lexical and Syntactic Test vdecl_test.finl int x_1; string w__; print "success"; print "\n"; Semantic Test binop_type_mismatch_test.finl function int main() { int x; x << 1 + "string"; }; Other Platforms Used $ menhir --interpret --interpret-show-cst parser.mly $ ./finlc -a input.finl #prints ast $ ./finlc -s input.finl #prints sast

  6. Brief Tutorial

  7. Program Structure Example portfolio “myPortfolio”; function int add(int x, int y){ return x+y; }; function int subtract(int x, int y){ return x-y; }; int two; int one; two << 2; one << 1; int result; result << subtract(two, one); print result; # prints 1

  8. Basic Types & Syntax Types Built-in Features [] ** print int string * / % buy float stock + - sell order < > <= >= = portfolio and or not << +<< -<< *<< /<< # Example declarations and assignments print 3**2; int x; x << 12; sell 50 of @AMZN; buy my_order; stock i_love_apple; i_love_apple << @AAPL; not(presentation=good)? { make_joke(); print @TSLA[epsEstimateCurrentYear]; }; order apple_order; apple_order << 100 of apple; portfolio “my_portfolio_name”; print ;

  9. Control Flow Conditionals Loops conditionals read as true/false while loops can be used both as a when loops are a key feature in finl questions conditional (while) and iterative (for) starts a new thread to support being able ? is equivalent to if loop to place multiple limit orders and ! equivalent to else using a while loop to iterate a set they check a conditional periodically, and number of times, as a for loop, is when it is satisfied, the body is executed shown below once int number; int i; when apple[FiftydayMovingAverage] > number << 0; i<<0; apple[TwoHundreddayMovingAverage] { while i<5 { buy myOrder; number > 0 ? print i; } {print 1;} i+<<1; ! {print 0;}; }; # this order will only execute if the fifty day # this will print 0 # executes 5 times # moving average goes over the two hundred day # moving average

  10. Unique Features Printing Complex Data When Loops Types ability to periodically check conditional and work with ability to print stocks, orders, and multiple threads using when loops portfolios YQL Database Calls CSV Portfolios abstraction of Yahoo Finance ability to import and export CSV database calls from the user portfolios to work over multiple sessions

  11. Implementation

  12. Diagram

  13. Java Libraries Stock Portfolio quotes subclass holding subclass fundamental subclass account value dividends subclass print statistics, variables, etc. CSV import and export Order Lib stock execution date boolean manipulation size whether it’s been executed string comparison share price order type (buy/sell)

  14. Demo & Questions

More recommend