mirror of
				https://github.com/Reuh/candran.git
				synced 2025-10-28 10:19:30 +00:00 
			
		
		
		
	* Added @ self alias * Added short anonymous functions declaration * Made assignment operators works in every direction, except up, down, behind and below, because this would be hard to visualize. * Moved files around. * Error rewriting. * Discover the amazing can commandline tool, which includes a fantastic° REPL and program running abilities. * Added functions which plagiarize Lua. * Added 0.1.0 to the version number. * If you still love pineapple flavored bread, don't hesitate to show your feelings. Also, the tests are out of date. Sad. °: not really.
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| #!/bin/lua
 | |
| local candran = require("candran")
 | |
| local cmdline = require("lib.cmdline")
 | |
| 
 | |
| if #arg < 1 then
 | |
| 	print("Candran compiler version "..candran.VERSION.." by Reuh")
 | |
| 	print("Usage: "..arg[0].." [target=<target>] [dest=<destination directory>] [-print] [-preprocess] [-compile] [options] filename...")
 | |
| 	return
 | |
| end
 | |
| 
 | |
| local args = cmdline(arg)
 | |
| 
 | |
| for _, file in ipairs(args) do
 | |
| 	local dest = file:gsub("%.can$", "")..".lua"
 | |
| 	if args.dest then
 | |
| 		dest = args.dest .. "/" .. dest
 | |
| 	end
 | |
| 
 | |
| 	if not args.print then
 | |
| 		print("Compiling "..file.." in "..dest)
 | |
| 	end
 | |
| 
 | |
| 	local inputFile, err = io.open(file, "r")
 | |
| 	if not inputFile then error("Error while opening input file: "..err) end
 | |
| 	local input = inputFile:read("*a")
 | |
| 	inputFile:close()
 | |
| 
 | |
| 	if args.chunkname == nil then
 | |
| 		args.chunkname = file
 | |
| 	end
 | |
| 
 | |
| 	local out = input
 | |
| 	if args.preprocess then
 | |
| 		out = candran.preprocess(out, args)
 | |
| 	end
 | |
| 	if args.compile then
 | |
| 		out = candran.compile(out, args)
 | |
| 	end
 | |
| 	if args.compile == nil and args.preprocess == nil then
 | |
| 		out = candran.make(input, args)
 | |
| 	end
 | |
| 
 | |
| 	if args.print then
 | |
| 		print(out)
 | |
| 	else
 | |
| 		local outFile = io.open(dest, "w")
 | |
| 		if not outFile then
 | |
| 			os.execute("mkdir -p "..dest:gsub("[^/]+%.lua$", ""))
 | |
| 			outFile, err = io.open(dest, "w")
 | |
| 			if not outFile then
 | |
| 				error("Error while writing output file: "..err)
 | |
| 			end
 | |
| 		end
 | |
| 		outFile:write(out)
 | |
| 		outFile:close()
 | |
| 	end
 | |
| end
 |