43 lines
1.5 KiB
Lua
43 lines
1.5 KiB
Lua
--------------------------------------------------------------------------------
|
|
-- 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 }
|