World Library  
Flag as Inappropriate
Email this Article

Message Parsing Interpreter

Article Id: WHEBN0000539201
Reproduction Date:

Title: Message Parsing Interpreter  
Author: World Heritage Encyclopedia
Language: English
Subject: MUF (programming language), MPI, MUDs, Zone (video games), Mythicscape
Collection: Lisp Programming Language Family, Mud Programming Languages
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Message Parsing Interpreter

The Message Parsing Interpreter (MPI for short, not to be confused with the Message Passing Interface) is a Lisp-like programming language based on text replacement that is used on Fuzzball MUCK servers, starting with version 2.2fb5.00. It is generally considered easier to learn and use than MUF, and enjoys a large popularity among Fuzzball MUCK users.

MPI originally stood for "My Personal Insanity" — a temporary project name used by the programmer when it was first implemented during a 3-week coding binge. It was later backronymed to "Message Parsing Interpreter" to keep the acronym, yet sound more respectable.

When online, the command MPI CATEGORY provides a listing of the available MPI topics arranged by function. The most common use for MPI is for report generation and formatting text strings; however, it does support the creation of macros, conditional logic, and looping for a limited number of iterations.

Contents

  • Command Structure 1
  • Hello World 2
  • More complex substitution 3
  • See also 4
  • External links 5

Command Structure

MPI could be viewed as a form of markup language as instructions are encapsulated within bracket marks to differentiate them from regular text. The MPI command is specified first, followed by a colon, and then command arguments, separated by commas. If one of the arguments is a string that contains a comma, it is escaped by using a backslash or the {lit:} (for literal) command.

{ command : argument1, argument2 }

Commands can be nested, taking the place of one or more arguments within the parent command to form more complex code:

{tell: {name:me} just looked at {name:this}., {owner:this}}

Hello World

The standard "Hello World" program would look like this:

{tell:Hello World, me}

More complex substitution

More complex code in MPI may become difficult to read. Some examples: This sequence informs the user of the next database save:

Next scheduled save will occur at {convsecs:{add:{prop:_sys/dumpinterval,#0},
{prop:_sys/lastdumptime,#0}}}\, being in {ltimestr:{subt:{add:
{prop:_sys/dumpinterval,#0},{prop:_sys/lastdumptime,#0}},{secs}}} 

Next, a loop of a fixed range of iterations that generates random text. A property named ascii on the same object would need to be loaded with the ASCII characters from the 32-127:

{null:{store:,launchcode,this},{if:{&arg},{store:{min:60,{max:1,{&arg}}},count,this},
{store:{dice:60},count,this}},{while:{not:{eq:-1,{store:{subt:{prop:count,this},1},count,this}}},
{store:{prop:launchcode,this}{midstr:{prop:ascii,this},{store:{dice:94},tempcharval,this},
{prop:tempcharval,this}},launchcode,this}}}

Combining MPI with the MUCK properties system can allow for a loop with an indefinite number of iterations. One might place this inside a property named delayloop and then {eval} it:

{delay:{prop:seconds,this},{lit:Hello World{null:{if:{awake:me},{eval:{prop:delayloop,this}}}}}}

To protect against infinite loops and excessive memory use, MPI code is limited to a very small amount of memory and execution runtime, and a hardwired 26 maximum levels of recursion.

See also

External links

  • MPI reference manual for FBMuck 6.00

This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 



Copyright © World Library Foundation. All rights reserved. eBooks from World eBook Library are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.