mirror of
https://github.com/Adorable-Catgirl/LuaComp.git
synced 2024-11-23 10:28:06 +11:00
Oh yeah -x
This commit is contained in:
parent
0272d053f0
commit
b756304ef0
16
src/ast.lua
16
src/ast.lua
@ -206,6 +206,22 @@ local function mkast(f, n)
|
|||||||
code = code .. lc
|
code = code .. lc
|
||||||
ilpos = ilpos+1
|
ilpos = ilpos+1
|
||||||
end
|
end
|
||||||
|
elseif (lc == "/" and ilpos == 1) then
|
||||||
|
if (peek(f, 2) == "/#") then --Directive
|
||||||
|
add_code()
|
||||||
|
skip(f, 2)
|
||||||
|
local d, r = parse_directive(f)
|
||||||
|
if not d then
|
||||||
|
parse_error(r)
|
||||||
|
end
|
||||||
|
d.line = lpos
|
||||||
|
d.file = n
|
||||||
|
lpos = lpos+1
|
||||||
|
tree[#tree+1] = d
|
||||||
|
else
|
||||||
|
code = code .. lc
|
||||||
|
ilpos = ilpos+1
|
||||||
|
end
|
||||||
elseif (lc == "$" and peek(f) == "(") then
|
elseif (lc == "$" and peek(f) == "(") then
|
||||||
add_code()
|
add_code()
|
||||||
skip(f)
|
skip(f)
|
||||||
|
22
src/init.lua
22
src/init.lua
@ -28,25 +28,31 @@ local parser = argparse(arg[0], "LuaComp v"..LUACOMP_VERSION.."\nA Lua preproces
|
|||||||
parser:argument("input", "Input file (- for STDIN)")
|
parser:argument("input", "Input file (- for STDIN)")
|
||||||
parser:option("-O --output", "Output file. (- for STDOUT)", "-")
|
parser:option("-O --output", "Output file. (- for STDOUT)", "-")
|
||||||
parser:option("-m --minifier", "Sets the minifier", "none")
|
parser:option("-m --minifier", "Sets the minifier", "none")
|
||||||
parser:flag("-x --executable", "Makes the script an executable")
|
parser:option("-x --executable", "Makes the script an executable (default: current lua version)"):args "?"
|
||||||
local args = parser:parse()
|
local args = parser:parse()
|
||||||
local file = args.input
|
local file = args.input
|
||||||
local f
|
local f
|
||||||
if (file ~= "-") then
|
if (file ~= "-") then
|
||||||
if (not os.execute("stat "..file..">/dev/null")) then
|
f = io.open(file, "r")
|
||||||
|
if not f then
|
||||||
io.stderr:write("ERROR: File `"..file.."' does not exist!\n")
|
io.stderr:write("ERROR: File `"..file.."' does not exist!\n")
|
||||||
os.exit(1)
|
os.exit(1)
|
||||||
end
|
end
|
||||||
f = io.open(file, "r")
|
|
||||||
else
|
else
|
||||||
file = io.stdin
|
f = io.stdin
|
||||||
end
|
end
|
||||||
local ast = mkast(f, file)
|
local ast = mkast(f, file)
|
||||||
local ocode = generate(ast)
|
local ocode = generate(ast)
|
||||||
|
|
||||||
local minifier = providers[args.minifier]
|
local minifier = providers[args.minifier]
|
||||||
|
|
||||||
local rcode = minifier(ocode)
|
local rcode, err = minifier(ocode)
|
||||||
|
|
||||||
|
if (not rcode) then
|
||||||
|
io.stderr:write("Error for minifier `"..args.minifier.."': \n")
|
||||||
|
io.stderr:write(err)
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
|
||||||
local of
|
local of
|
||||||
if (args.output == "-") then
|
if (args.output == "-") then
|
||||||
@ -54,8 +60,12 @@ if (args.output == "-") then
|
|||||||
else
|
else
|
||||||
of = io.open(args.output, "w")
|
of = io.open(args.output, "w")
|
||||||
end
|
end
|
||||||
|
local ver = _VERSION:lower():gsub(" ", "")
|
||||||
|
if jit then
|
||||||
|
ver = "luajit"
|
||||||
|
end
|
||||||
if (args.executable) then
|
if (args.executable) then
|
||||||
of:write("#!/usr/bin/env lua5.3\n")
|
of:write("#!/usr/bin/env ", args.executable[1] or ver, "\n")
|
||||||
end
|
end
|
||||||
of:write(rcode)
|
of:write(rcode)
|
||||||
of:close()
|
of:close()
|
||||||
|
@ -4,7 +4,7 @@ local function _sv(k, v)
|
|||||||
end
|
end
|
||||||
|
|
||||||
_sv("LUACOMP_V_MAJ", 1)
|
_sv("LUACOMP_V_MAJ", 1)
|
||||||
_sv("LUACOMP_V_MIN", 0)
|
_sv("LUACOMP_V_MIN", 1)
|
||||||
_sv("LUACOMP_V_PAT", 0)
|
_sv("LUACOMP_V_PAT", 0)
|
||||||
_sv("LUACOMP_VERSION", LUACOMP_V_MAJ.."."..LUACOMP_V_MIN.."."..LUACOMP_V_PAT)
|
_sv("LUACOMP_VERSION", LUACOMP_V_MAJ.."."..LUACOMP_V_MIN.."."..LUACOMP_V_PAT)
|
||||||
_sv("LUACOMP_NAME", "LuaComp")
|
_sv("LUACOMP_NAME", "LuaComp")
|
@ -0,0 +1,68 @@
|
|||||||
|
--[[
|
||||||
|
staticinit.lua - Main file of LuaComp, directly includes argparse.
|
||||||
|
|
||||||
|
Copyright 2019 Adorable-Catgirl
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
]]
|
||||||
|
|
||||||
|
--#include "luacomp_vars.lua"
|
||||||
|
--#include "ast.lua"
|
||||||
|
--#include "generator.lua"
|
||||||
|
--#include "directive_provider.lua"
|
||||||
|
--#include "cfg/minifier_providers.lua"
|
||||||
|
|
||||||
|
local argparse = (function()
|
||||||
|
--#include "argparse.lua"
|
||||||
|
end)()
|
||||||
|
|
||||||
|
local parser = argparse(arg[0], "LuaComp v"..LUACOMP_VERSION.."\nA Lua preprocessor+postprocessor.")
|
||||||
|
parser:argument("input", "Input file (- for STDIN)")
|
||||||
|
parser:option("-O --output", "Output file. (- for STDOUT)", "-")
|
||||||
|
parser:option("-m --minifier", "Sets the minifier", "none")
|
||||||
|
parser:option("-x --executable", "Makes the script an executable (default: current lua version)"):args "?"
|
||||||
|
local args = parser:parse()
|
||||||
|
local file = args.input
|
||||||
|
local f
|
||||||
|
if (file ~= "-") then
|
||||||
|
f = io.open(file, "r")
|
||||||
|
if not f then
|
||||||
|
io.stderr:write("ERROR: File `"..file.."' does not exist!\n")
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
f = io.stdin
|
||||||
|
end
|
||||||
|
local ast = mkast(f, file)
|
||||||
|
local ocode = generate(ast)
|
||||||
|
|
||||||
|
local minifier = providers[args.minifier]
|
||||||
|
|
||||||
|
local rcode = minifier(ocode)
|
||||||
|
|
||||||
|
local of
|
||||||
|
if (args.output == "-") then
|
||||||
|
of = io.stdout
|
||||||
|
else
|
||||||
|
of = io.open(args.output, "w")
|
||||||
|
end
|
||||||
|
local ver = _VERSION:lower():gsub(" ", "")
|
||||||
|
if jit then
|
||||||
|
ver = "luajit"
|
||||||
|
end
|
||||||
|
if (args.executable) then
|
||||||
|
of:write("#!/usr/bin/env ", args.executable[1] or ver, "\n")
|
||||||
|
end
|
||||||
|
of:write(rcode)
|
||||||
|
of:close()
|
||||||
|
f:close()
|
Loading…
Reference in New Issue
Block a user