MASC A browser manipulation language by Michael Masullo, Christos Angelopoulos, Vaibhav Saharan, and Kristina Chodorow MASC overview and goals Tutorial Implementing MASC Lessons Learned Outline MASC Overview and goals What is MASC and Why make it Browser-based webpage manipulation Uses the MASC Browser, a fully functional graphical web browser Contains the MASC Shell, where commands are given and results displayed What is MASC? Great for organizing information Simple, clean web browser Easy access to shell Why make MASC? Tutorial Putting on the MASC (: display user's bookmarks : add the current page as a bookmark : redisplay list :) bkmrks_file = "/home/"+USER+"/.bookmarks" shell(echo "Old bookmark list:") (: create bookmarks file if it doesn't exist :) touch bkmrks_file shell(cat bkmrks_file | sort) shell(echo "------------") echo -n "Current page: " :/ (: append current page's address to the list :) echo :/ >> bkmrks_file (: redisplay :) echo "New bookmark list:" cat bkmrks_file | sort echo "------------" Example 1: Bookmark file array goodLinks[5] j=0 while (j<5){ goodLinks[j]="" j=j+1 } j=0 newSite="www.televisionwithoutpity.com" while(j<5){ if(goodLinks[j]==¡¡){ goodLinks[j]=newSite j=0 break else { if(goodLinks[j]==newSite) { echo "Already Entered" j=0 break else {j=j+1} }}} Example 2: “Bookmark” Array Implementation Making the language: MASC ANTLR Eclipse (with plug-ins) Subversion Lobo Tools Used Webpage Browser .html .java Masc .java MascAntlrLexe r grammar .java MascAntlrPars er .g .java walker MascAntlrWalk er .g .java Masc Backend Files .java Language Diagram Lessons Learned What to do and what to be wary of when designing a compiler Don’t bother programming anything in or for Windows. It’s not worth it. Making a Firefox plug-in for the MASC shell would have been easy…if we wrote everything in JavaScript. A lot of things are funnier at 3 in the morning. Lessons Learned