Mr. Proper Nabil Shahid William Blinn Jeff Lin Matthew Anderegg Who is Mr. Proper… … and why did we name our language after him? Step 1.

Download Report

Transcript Mr. Proper Nabil Shahid William Blinn Jeff Lin Matthew Anderegg Who is Mr. Proper… … and why did we name our language after him? Step 1.

Mr. Proper

Nabil Shahid Jeff Lin William Blinn Matthew Anderegg

Who is Mr. Proper… … and why did we name our language after him?

Step 1. Do hours of work on O.S. assignment.

Step 2. Google for hints on how to compile.

Step 3. Make mrproper Step 4. Cry.

What is MrProper?

A multi format log file manipulation language.

• Easy to use • Powerful • Multi chat client support • Log file manipulation

Mrp: Easy to Use    Hides complexity.

Logs become primary data type.

Log manipulation akin to integer manipulation.

Mrp: Powerful     Broad functionality.

Analysis of conversations.

Lexical and syntactic analysis.

Text transcription of log files.

Mrp: Multi Chat Client Support  Scalable to support other log formats from various chat clients.

 Current built in support for:  AIM   Trillian Plain text

Mrp: Log File Manipulation  Eliminates file read/write overhead from user programs.

 Built in operations such as loading, parsing, saving, and converting log formats.

Why Mr.Proper?

  Find links that friends send you.

Search logs for expressions, words, phrases.

 Easily convert old conversation logs when switching chat clients.

 Parse and format conversation logs to make online publishing easier.

Type System

Control Structures  Expressions 

log l = open(“logroot”, “screenName”, 0);

int x = a + b + 1;

 Loops  int i; for (i = 1:10) { print (“hello”); }  Functions  } func log addLogs (log oldLog) { // code

String Functions      print() – Prints a string to standard out.

 void print (string boo); strLength() – Returns the length of a string as an integer.

 int strLength (string foo) concat() – Joins two strings and returns the result.

 string concat (string moo, string noo); substr() – Returns part of the input string as a new string.

 string substr (string poo, int offset, int length); contains() – Searches one string for another (using regexps) and returns a boolean.

 bool contains (string line, string regexp)

Log File Manipulation Functions     createLog() – Creates an empty log.

open() – Loads a log file into the program.

save() – Writes log file back to disk.

convert() – Covert log from one format to another.

 logLength() – Returns the number of messages in the log.

Log Message Functions        getMessageName() – Returns the name of the person who wrote the message.

getText() – Returns the text of the message.

getTime() – Returns time of message as number of seconds elapsed since 01/01/1970.

createMessage() – Creates a new empty message.

setName() – Modifies the name in the message.

setText() – Modifies the text of the message.

setTime() – Modifies the time of the message.

Sample Code } func int foo(int x) { return x + 3; } main { int x = 0; for(i = 1:3) { x += foo(x); } print(x); This program will output the value 15

Log File Manipulation: Function } func int wordCount(string word, string path) { log myLog = open(path, “mybuddy”, 1); int i; int length = logLength(myLog) -1 ; int count = 0; string text; for (i = 0:length) { text = getText(getMessage(myLog, i)); if (contains(text, word)) { count += 1; } } return count;

Log File Manipulation: Main } main { int count = wordCount(“hello”, “/mylogs/trillian”); print(count); Program trace?

Execution of an Mrp Program   MrProper is an interpreted language.

The interpreter takes in a file containing Mrp code, and the instructions are executed as they are encountered.

Testing Plan        Test each component as a module.

.mrp test scripts to go over every part of the language.

Manual and automated semantic error checking.

Test all data types.

Control flow.

Input/output files.

Test component interaction.

Lessons Learned    Understand the basic tools before you try to use them and before assuming that something is wrong with the code.

Create a more detailed project plan. Don’t rely on given milestones.

Learn to balance working together and dividing up tasks.

The Bright Future of Mr. Proper   Added support for other chat clients.

User defined log formats for reading and writing.

 Graphical interface for browsing and searching through log files (tree?)