view interps/rhotor/Main.hs @ 12268:6bbbe2a95120 draft

<b_jonas> slashlearn euclid//Euclid is a short geeky game in which the goal is to do Euclidean compass and straightedge constructions in as few steps as possible. It runs in the browser, found at "http://www.euclidthegame.com/". It was popular among #esoteric regulars in 2016-07.
author HackEso <hackeso@esolangs.org>
date Mon, 16 Dec 2019 23:02:52 +0000
parents 859f9b4339e6
children
line wrap: on
line source

module Main ()
where

import System.IO
import System.Environment
import System.Exit

import Misc
import Parser
import Evaluator



main	:: IO ()
main	= 	(hSetBuffering stdout NoBuffering) >> getArgs >>= \args ->
			if length args /= 1 then usage
			else readFile (head args) `catch` (\ _ -> putStr "Error: Couldn't open source file.\n" >> exitWith (ExitFailure 1))
				>>= \source ->
					interact (run source)
					
run					:: String -> String -> String
run source input	= nodeTreeToString (evaluate (apply (parse source) (stringToNodeTree input)))
				
						
				
usage	:: IO ()
usage	= putStr "Usage: rhotorhi sourcecode.rho\n"