SASSi Carl Morgan Group Leader Paul Salama Xiaotang

  • Slides: 16
Download presentation
SASSi Carl Morgan (Group Leader) Paul Salama Xiaotang Zhang

SASSi Carl Morgan (Group Leader) Paul Salama Xiaotang Zhang

Why be SASSi? • Our motivation was to design a language to let a

Why be SASSi? • Our motivation was to design a language to let a user make quick and simple programs to deal with various statistical problems • But what about SAS and other statistics programs? . . .

Unlike SASSi… • SAS and other programs like it are big and bulky in

Unlike SASSi… • SAS and other programs like it are big and bulky in terms of maintenance, learning curve, and installation • They also cost a bunch. $$$$$$$=bad • SASSi is free!!!! (currently) • SASSi is simple, easy to learn, and easy to use

What can SASSi do? • Handles many standard statistical problems such as getting the

What can SASSi do? • Handles many standard statistical problems such as getting the mean, median, standard deviation, etc. for a set of numbers. Defined as a “vector” in SASSi • Supports more complicated statistical problems like regressions, distributions, etc. • Graphical output.

What SASSi looks like Double b; Vector a=[1, 1, 2, 3, 5, 8]; b=mean(a);

What SASSi looks like Double b; Vector a=[1, 1, 2, 3, 5, 8]; b=mean(a); print(“The mean of a is: ”); print(b); plot(bar, a);

More Samples • SASSi allows users to define their own procedure calls • Example:

More Samples • SASSi allows users to define their own procedure calls • Example: procedure Vector foo( Double sheep, Double cow ) { Double dog = sheep*cow; sheep = sheep+1; Vector animals=[sheep, cow, dog]; //etc… return animals; }

SASSi grammar (1) • Types of data bool: Boolean values that can either be

SASSi grammar (1) • Types of data bool: Boolean values that can either be true or false (and True/False and TRUE/FALSE) int: standard 32 -bit integers double: 64 -bit IEEE double floating-point format string: a string of characters procedure: a user defined procedure vector: an M by 1 vector of doubles • Expressions - Very similar to C: Primary expression: Identifiers, constants, procedure calls, and access to vector types Arithmetic expressions: “+”, “-”, “*”, “/” Relational expressions: “<=”, “>=”, “==”, “<”, “>”, and “<>”

SASSi grammar (2) • Constants implemented by: const int a = 3; . .

SASSi grammar (2) • Constants implemented by: const int a = 3; . . xconst • Include statement: include <path name>;

SASSi grammar (3) • Statements Assignments Direct assignment in the form: left-valued expression =

SASSi grammar (3) • Statements Assignments Direct assignment in the form: left-valued expression = right-valued expression; Conditional Statements if( relational expression) { statement } else { statement } For Loops for( assignment ; relation expression ; action) { statement }

SASSi built-in procedures • Basic statistic methods: mean, median, std. Dev, etc… • Dealing

SASSi built-in procedures • Basic statistic methods: mean, median, std. Dev, etc… • Dealing with vectors: sort, range, union, intersect, etc… • Distributions: normal, standard, geometric, etc… • Regression: linear

SASSi Plotting • SASSi supports five built-in graphing functions: Bar Pie Chart Line Error

SASSi Plotting • SASSi supports five built-in graphing functions: Bar Pie Chart Line Error Curve

SASSi printing • Printing variables (Doubles, Int, and Vector) print(v); • Printing strings print(“Who

SASSi printing • Printing variables (Doubles, Int, and Vector) print(v); • Printing strings print(“Who knows why you name something foo? ”);

SASSi implementation ANTLR *. ssi file LEXER Tokens PARSER AST Tree AST WALKER Interm.

SASSi implementation ANTLR *. ssi file LEXER Tokens PARSER AST Tree AST WALKER Interm. Code CODE GENERATOR Java Bytecode

SASSi Summary • SASSi is an efficient, small, FREE, statistics language • Expandable with

SASSi Summary • SASSi is an efficient, small, FREE, statistics language • Expandable with user procedures/plots: So even though we didn’t include Poisson distributions, someone could include it in the future… • Enough functionality for a base of statistics

Lessons Learned • Not sticking to your schedule is bad • Meeting twice a

Lessons Learned • Not sticking to your schedule is bad • Meeting twice a week is far more effective and comforting than just once • Don’t try to implement all statistics functions, or all of C • Get feedback from your TA. They’re there to help, and have been there before • Think big, build small • Decide if what you think is a language would be better off as a program. If so, don’t try to implement it as a language

THE END

THE END