--------------------------------------------------------------------------------
|
-- Copyright (c) 2006-2014 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
|
--
|
--------------------------------------------------------------------------------
|
|
----------------------------------------------------------------------
|
-- Generate a new lua-specific lexer, derived from the generic lexer.
|
----------------------------------------------------------------------
|
|
local generic_lexer = require 'metalua.grammar.lexer'
|
|
return function()
|
local lexer = generic_lexer.lexer :clone()
|
|
local keywords = {
|
"and", "break", "do", "else", "elseif",
|
"end", "false", "for", "function",
|
"goto", -- Lua5.2
|
"if",
|
"in", "local", "nil", "not", "or", "repeat",
|
"return", "then", "true", "until", "while",
|
"...", "..", "==", ">=", "<=", "~=",
|
"<<", ">>", "//", -- Lua5.3
|
"::", -- Lua5.2
|
"+{", "-{" } -- Metalua
|
|
for _, w in ipairs(keywords) do lexer :add (w) end
|
|
return lexer
|
end
|