ucg 0.1.0

A configuration generation grammar.
Documentation
// A few constants.
let dbhost1 = "db1.prod.net";
let dbhost2 = "db2.prod.net";
let dbname = "testdb";

// Constructor for database connection strings.
let mk_db_conn = macro (host, port, db) => {
    host = host,
    port = port,
    db = db,
    conn_string = "@:@/@" % (host, port, db)
};

let db_conn1 = mk_db_conn(dbhost1, 3306, dbname);
let db_conn2 = mk_db_conn(dbhost2, 3306, dbname);

// We have two database connections in a list
let db_conn_list = [db_conn1, db_conn2];

let connstr_mapper = macro (item) => {
    str = item.conn_string
};

let db_conns = map connstr_mapper.str [db_conn1, db_conn2];

// Our server configuration.
let server_config = {
    db_conn1 = db_conns.0, // connection one
    db_conn2 = db_conns.1,
    tmpldir = "./templates",
    prefix = {
        foo = "bar"
    },
    l = ["foo", "bar"]
};