180 likes | 575 Vues
MuLE Multiple Language Environment An Environment for Interpreter-based Projects for the Programming Languages Course. partially supported by the National Science Foundation CCLI-DUE 9952398. People. Principal Investigators John Barr Ithaca College
E N D
MuLEMultiple Language EnvironmentAn Environment for Interpreter-based Projects for the Programming Languages Course partially supported by the National Science Foundation CCLI-DUE 9952398
People Principal Investigators John Barr Ithaca College Laurie A. Smith King College of the Holy Cross Consultants Ben Coleman, PhD candidate, The College of William & Mary in VA (Computer Science B.S. from Ithaca College 1997) SLic.s implementation, SLic Labs Barbara Moskal The Colorado School of Mines Assessment Expert
Students Holy Cross Dan Conti (2003); CVS, Technical support, Web Page Rachel Giguere (2000); SPoc.s port, features, Manual Sean Harrington (2003); Testing, Document Proofreading, pre-labs Raquel Ruano (2000); Testing, CVS Matt Rinaldi (2001); SLam.s port, features, Manual, Web Page Scripting Ithaca College Laura Henry (2001); SOOP.s port, several classes, Manual Hanh Pham (2002); SOOP.s port, several classes, Manual Lora Kassab (1996); pre-labs Jamie Scheinblum (2002); Utilities.s port, The Launcher Christian Stoehr (2000); Utilities.s port, The Launcher
MuLEMUltiple Language Environment • Tool designed for the programming languages design and implementation course • In development since 1994 • Used at Ithaca College and Holy Cross • NSF CCLI-DUE #9952398 (awarded January 2000) • John Barr Ithaca College • Laurie Smith King Holy Cross • Innumerable students (Literacy, PL, Senior Project)
MuLE: Structure • Launcher (extensible) • Utilities file • 4 Interpreters • SLam (Simple LAMbda): functional/applicative Awful choices: SiFL, Sapp, Sunc • SPoc (Simple PrOCedural): imperative • SOOP (Simple Object Oriented Paradigm) • SLic (Simple LogIC): logic/declarative
MuLE: Structure • Written in Scheme • Simple to learn (truth in advertising: complex features) • Small language (smaller than Lisp) • Functional paradigm • Uses DrScheme • Provides GUI elements • Truly Cross Platform • Freely available http://www.cs.rice.edu/CS/PLT/packages/drscheme/
MuLE: Use • Program in each MuLE language • Examine interpreters to learn how language features are implemented • Extend interpreters (counter-example/PIC) • Write a new language (PIL)
MuLE: Use examples SPoc program one declare a / b / c $ begin a = 1 $ b = 2 $ c = ( 2 * a + b ) $ print a $ end SOOP (assign a make-box) (send a set-name aaa) (send a set-val 1) (assign b make-box) (send b set-name bbb) (send b set-val 2) (assign c make-box) (send c set-name ccc) (send c set-val send 2 * send a + b) SLam (assign a 1) (assign b 2) (assign c (* 2 ( + a b ) ) )
MuLE: SLic b { w } . q { X } if b { X } and c { X } . b { x } . r { X } if c { X } . b { y } . s { X } if r { X } . c { y } . c { z } . ?- q { X } . ?- s { X } . (( X y )) (( X z )) (( X y ))
Running MuLE • Start PL Scheme, run Launcher • Starting MuLE is not platform independent • Windows:Draglauncher.sontoDrScheme icon • MacOS:Draglauncher.sontoDrScheme icon • Unix:Typedrscheme launcher.s
Running MuLE • Start PL Scheme , run Launcher
Running MuLE • Execute
Running MuLE • Execute
Running MuLE • Choose a language
Running MuLE • Get a language window
Running MuLE (SLam) • Program