| -------------------------------------------------------------------------------- |
| -- Copyright (c) 2006-2013 Fabien Fleutot and others. |
| -- |
| -- All rights reserved. |
| -- |
| -- This program and the accompanying materials are made available |
| -- under the terms of the Eclipse Public License v1.0 which |
| -- accompanies this distribution, and is available at |
| -- http://www.eclipse.org/legal/epl-v10.html |
| -- |
| -- This program and the accompanying materials are also made available |
| -- under the terms of the MIT public license which accompanies this |
| -- distribution, and is available at http://www.lua.org/license.html |
| -- |
| -- Contributors: |
| -- Fabien Fleutot - API and implementation |
| -- |
| -------------------------------------------------------------------------------- |
| |
| -- Export all public APIs from sub-modules, squashed into a flat spacename |
| |
| local MT = { __type='metalua.compiler.parser' } |
| |
| local MODULE_REL_NAMES = { "annot.grammar", "expr", "meta", "misc", |
| "stat", "table", "ext" } |
| |
| local function new() |
| local M = { |
| lexer = require "metalua.compiler.parser.lexer" (); |
| extensions = { } } |
| for _, rel_name in ipairs(MODULE_REL_NAMES) do |
| local abs_name = "metalua.compiler.parser."..rel_name |
| local extender = require (abs_name) |
| if not M.extensions[abs_name] then |
| if type (extender) == 'function' then extender(M) end |
| M.extensions[abs_name] = extender |
| end |
| end |
| return setmetatable(M, MT) |
| end |
| |
| return { new = new } |