http://metalua.luaforge.net/index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <title>Metalua</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <style type="text/css">
  #g_title p, #g_footer p, #g_description p {
    margin: 0;
  }
  /*

  	-- -- -- -- -- -- --
  	Browser Fixes
  	-- -- -- -- -- -- --
  	
  	This file uses CSS filtering methods to fix various
  	layout bugs.

  	Each of the following three imported files is a 
  	separate, browser-specific CSS file that keeps all 
  	hacks out of the main style sheet.
  	
  	Over time, as supporting these browsers no longer
  	remains a priority, cleaning up the hacks is as
  	easy as deleting the @import statement below, or
  	simply no longer linking this file from the HTML.
  	
  */

  /* 
    fix ie6 "peekaboo bug" using the "holly hack". 
    Note, this style only gets applied to ie6
  */
  * html .wrapper {
    height: 0.1%;
  }

  /* 
   * IE5 mac - overrides the IE/Win hack 
   */

  /*\*//*/

  * html #threecolumn div {
  	height: auto;
  }

  /**/


  /* 
   * IE5/Win-specific CSS -ensures #container wraps all content on window resize
   */

  @media tty {
   i{content:"\";/*" "*/}} * html #container { height: 1%; } /*";}
  }/* */
  /* Styling for editable elements. Eventually, this will be part of the style. */
  .editable {
    border: 1px dashed blue;
  }
  
  #footer {
    clear: both;
  }
  
  /* Extra divs hidden by default. The custom CSS can override this though */
  #extraDiv1, #extraDiv2, #extraDiv3, #extraDiv4, #extraDiv5, #extraDiv6 {
    display: none;
  }
  
  a img,:link img,:visited img {border: none;}

  body {
    text-align: center;
  }
  #container {
    width: 718px;
    text-align: left;
    margin: 0 auto;
  }
  #main-content {
    float: right;
    width: 470px;
  }
  #sidebar {
    float: right;
    width: 230px;
  }
  #footer {
    clear: both;
  }
  /** BEGIN CUSTOM SKIN **/
    h1,h2,h3,h4,h5,h6,p,ul,ol,dt,dd {font-size: 0.85em;color:#59756F;}
    pre,code,kbd {font-size:1em; font-family:"Courier New", Courier, monospace;color:#59756F;}
    dl,li,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input {margin: 0; padding: 0;}
    a img,:link img,:visited img {border: none;}
    address {font-style: normal;}
    
    /*
       Theme: Swirl
       Color: Teal/Blue
    */
    
    
    html {background: #C9D6D4;}
    body {background:#C9D6D4;font-family:Verdana, Tahoma, Arial, sans-serif;font-size:0.85em;margin:0px;}
    a {color:#3366FF; text-decoration:none; border-bottom:1px dotted #3366FF;}
    a:visited {color:#CC33FF; text-decoration:none; border-bottom:1px dotted #CC33FF;}
    a:hover,a:active{color:#FF6600; text-decoration:none;border-bottom:1px dotted #FF6600;}
    b, strong {font-weight:bold;}
    blockquote {border-left:4px double #59756F;margin:1em 3em;padding-left:1em;font-size:0.9em;color:#59756F;}
    blockquote p {line-height:1.45em;color:#59756F;}
    em {font-style:italic;}
    h1, h2, h3, h4, h5, h6 {font-weight:normal;margin:1.5em 0 0.5em 0;}
    h1 {font-size:2.25em;color:#59756F;margin:0;border-bottom:4px double #92A8A4;}
    h2 {font-size:2em;color:#59756F;border-bottom:4px double #92A8A4;}
    h3 {font-size:1.75em;color:#59756F;border-bottom:3px double #92A8A4;}
    h4 {font-size:1.5em;color:#59756F;border-bottom:3px double #92A8A4;}
    h5 {font-size:1.25em;color:#59756F;border-bottom:1px solid #92A8A4;}
    h6 {font-size:1em; color:#59756F;border-bottom:1px dotted #92A8A4;}
    p, li {color:#59756F;line-height:1.75em;margin:0 0 1em 0;}
    blockquote p, table p, dd p, li p, #header p {margin-bottom:0.5em;color:#59756F;}
    ul, ol {margin:1em 0; padding-left: 1.6em;}
    li {margin:0.25em 0;}
    ul li {list-style-type:disc;}
    ol li {list-style-type:decimal;}
    table {border:1px solid #92A8A4;border-width:1px 1px 0 1px;}
    table caption {
  	display:block;
  	font-style:italic;
  	white-space:nowrap;
  	margin:0.5em 1em;
  	color:#59756F;
  	font-size:0.85em;
  }
    table td, table th {padding:0.5em 1em;text-align:left;vertical-align:top;background-color:#EDF5F3;}
    table th {border-top:1px solid #92A8A4;border-bottom:1px solid #92A8A4;font-weight:bold;background-color:#C9D6D4;color:#59756F;font-weight:bold;}
    table td {border-bottom:1px solid #92A8A4; color:#59756F;}
  
    dl {margin:1em;line-height:1.5em;list-style-type:disc;color:#59756F;}
    dt {font-weight:bold;margin-top:0.5em;color:#59756F;}
    dd {margin-left:2em;color:#59756F;}
  
    #adsense {text-align:center;}
    #container {
    	  padding: 0px; 
  	  background:URL("skin_swirl_teal_top.gif") no-repeat top left;
      background-color:#dbe4e2;
  	  margin:0px auto;
    }
    #footer {padding:1em;
    }
    
    #g_footer {
      padding-top:0.5em;
  	font-size:0.9em;
  	font-style:italic;
  	text-align:center;
  	color:#92A8A4;
    }
  	
    #page-title {
      text-align:left;
  	font-style:italic;
  	border:none;
  	padding-top:80px;
  	padding-left:15px;
    }
    #g_description {
  	padding-left:30px;
  	font-style:italic;
  	color:#92A8A4;
  	padding-right:300px;
    }
    #sidebar {font-size:0.85em;
  	padding:5px;
    }
    #sidebar :first-child {margin-top:12px;}
    #sidebar-alternate {font-size:0.85em;
  	padding:5px;
    }
    #sidebar-alternate :first-child {margin-top:12px;}
    #main-content {
  	padding:10px;
    }
    
    #main-content h2:first-child {margin-top:0;}	
  
    hr {
    height:1px;
    margin:0px 20px;
    background-color:#E2E9E8;
    border:none;
    border-bottom:4px double #92A8A4;
    }
    
    @media print {
      html {background:#fff !important;}
      #container {border-width:0px !important;padding:0 !important;}
    }
  
    /* Tweaks for Three-column layout
    ----------------------------------------------- */
    #threecolumn #main-content .wrapper {}  #threecolumn #sidebar {width:118px;}
    
    /* Tweaks for Two-column Left layout
    ----------------------------------------------- */
    #twocolumn-left #main-content .wrapper {}
    #twocolumn-left #sidebar {width:218px;}
  
    /* Tweaks for Two-column Right layout
    ----------------------------------------------- */
    #twocolumn-right #main-content .wrapper {}
    #twocolumn-right #sidebar {width:218px;}
    
    /* Tweaks for Two-column Liquid layout
    ----------------------------------------------- */
    #twocolumn-liquid-right #container {}
    #twocolumn-liquid-right #main-content .wrapper {}
    #twocolumn-liquid-left #container {}
    #twocolumn-liquid-left #main-content .wrapper {}
  
    /* Tweaks for One-column Liquid layout
    ----------------------------------------------- */
  
    /* Tweaks for One-column layout
    ----------------------------------------------- */
    #onecolumn #main-content .wrapper {}
  
  .code { 'font: courier new'; }
  /** END CUSTOM SKIN **/
  </style>

  <!-- Hack to avoid flash of unstyled content in IE -->
  <script> </script>
</head>
<body id="twocolumn-left">
  <div id="container">
    <div class="wrapper">
      <div id="header">
        <div class="wrapper">
          <h1 id="page-title"><div id='g_title'>Metalua</div></h1>
          <div style="clear: both"></div>
          <p class="description"><div id='g_description'><p>Lisp macros' power brought to Lua.</p></div></p>
          <div style="clear: both"></div>
        </div>
      </div>
      <!-- /wrapper --><!-- /header -->
      <div id="main-content">
        <div class="wrapper">
          <div class="content-item">
            <div id='g_body'>
              <h4>What</h4>
<p>Metalua is a language and a compiler which provide:</p>
<ul>
  
  <li>Full compatibility with Lua 5.1 sources and bytecode: clean,
    elegant semantics and syntax, amazing expressive power, good
    performances, near-universal portability.<br>
  </li>

  <li>A complete macro system, similar in power to what's offfered by
    Lisp dialects or Template Haskell; manipulated programs can be
    seen as source code, as abstract syntax trees, or as an arbitrary
    mix thereof, whichever suits your task better.</li>
  
  <li>A dynamically extensible parser, which lets you support your
    macros with a syntax that blends nicely with the rest of the
    language.</li>

  <li>A set of language extensions, all implemented as regular
    metalua macros.</li>
</ul>
  
<h4><a id="how"></a>How</h4>

<p>When compared with Lisps' approaches to metaprogramming,
  Metalua makes the following choices:</p>
  
<ul>
  <li>Don't bother developers with macros when they aren't
    writing one: the language's syntax and semantics should be
    best suited for those 95% of the time when we aren't writing
    macros.</li>
    
  <li>Encourage developers to follow the conventions of the
    language: not only with &quot;best practices rants&quot; nobody
    listen to, but by offering an API that makes it easier to write
    things the Metalua Way. Readability by fellow developers is more
    important and more difficult to achieve than readability by
    compilers, and for this, having a common set of respected
    conventions helps a lot.</li>
  
  <li>Yet provide all the power one's willing to handle. Neither
    Lua nor Metalua are into mandatory bondage and discipline, so if
    you know what you're doing, the language won't get in your
    way.</li>
        
  <li>Make it obvious when something <i>interesting</i> happens: all
    meta-operations happen between <span class="code">+{...}</span>
    and <span class="code">-{...}</span>, and visually stick out of
    the regular code.</li>
</ul>

<h4><a id="where"></a>Where</h4>

<p>Metalua can be downloaded <a href="download.html">here</a>; its sources
  can be <a href="src/index.html">browsed online</a></p>.

<p>Your can have a <a href="quicktour.html">one minute look</a> at it, or
  read the <a href="metalua-manual.html">full manual</a>.</p>
<p>You will also need Lua 5.1 or 5.1.1, which can be
  found <a href="http://www.lua.org/download.html">here</a>.</p>
            </div>
          </div>
          <div style="clear: both">
          </div>
        </div>
      </div>
      <!-- /wrapper -->
      <!-- /main-content -->
      <div id="sidebar">
        <div class="wrapper">
          <div class="links">
            <div class="wrapper">
              <div id='g_sidebar'>
                <ul>
  <li><a href="#what">What</a></li>
  <li><a href="#how">How</a></li>
  <li><a href="#where">Where (Download)</a></li>
</ul>
<hr>
<ul>
  <li><a href="quicktour.html">Quick look</a></li>
  <li><a href="metalua-manual.html">Manual</a></li>
  <li><a href="mailinglist.html">Mailing list</a></li>
  <li><a href="http://metalua.blogspot.com/"><b>Blog [new]</b></a></li>
  <li><a href="src/index.html">Browse sources and samples</a></li>
  <li><a href="http://www.lua.org">Lua.org</a></li>
  <li><a href="http://www.lua-users.org/wiki">Lua wiki</a></li>
</ul>
              </div>
            </div>
            <div style="clear: both">
            </div>
          </div>
    <!-- /wrapper --><!-- /links -->
        </div>
      </div>
      <!-- /wrapper --><!-- /sidebar -->
      <div id="footer"><div class="wrapper">
        <hr />
        <p><div id='g_footer'> </div></p>
        <div style="clear: both"></div>
      </div></div>
      <!-- /wrapper --><!-- /footer -->
    </div>
  </div>
  <!-- /wrapper --><!-- /container -->

<div id="extraDiv1"><span></span></div><div id="extraDiv2"><span></span></div>
<div id="extraDiv3"><span></span></div><div id="extraDiv4"><span></span></div>
<div id="extraDiv5"><span></span></div><div id="extraDiv6"><span></span></div>

<script src="http://www.google-analytics.com/urchin.js"
        type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1681847-1";
urchinTracker();
</script>
</body>
</html>
