Permalink
Checking mergeability…
Don’t worry, you can still create the pull request.
Comparing changes
Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also
.
Open a pull request
Create a new pull request by comparing changes across two branches. If you need to, you can also .
Choose a Base Repository
capnproto/capnproto
mosesn/capnproto
191919/capnproto
Abyss116/capnproto
Acidburn0zzz/capnproto
AndreZH/capnproto
Boyploy/capnproto
CCJY/capnproto
Diggsey/capnproto
DouglasHeriot/capnproto
Erguotou/capnproto
Fraser999/capnproto
HackerBaloo/capnproto
Ju2ender/capnproto
LaoZhongGu/capnproto
MarPiRK/capnproto
Mause/capnproto
Naibasak/capnproto
PawelMarc/capnproto
PolymorhicCode/capnproto
ProgramFan/capnproto
RAOF/capnproto
Ralith/capnproto
Rumega/capnproto
UIKit0/capnproto
YoonGenwu/capnproto
abaelhe/capnproto
abyss7/capnproto
aj07/capnproto
ajose4dk/capnproto
alekstorm/capnproto
alisheikh/capnproto
amluto/capnproto
andrekandore/capnproto
applewolf/capnproto
arichardson/capnproto
artillery/capnproto
assassin52/capnproto
barakp/capnproto
bboreham/capnproto
bogong/capnproto
bottompawn/capnproto
bouk/capnproto
bryce-gibson/capnproto
bsn069/capnproto
carlmart/capnproto
cdsalmons/capnproto
cgruber/capnproto
chenbk85/capnproto
chenleijava/capnproto
chenlj/capnproto
chenxinghua/capnproto
chris-turner137/capnproto
clodeku/capnproto
cofyc/capnproto
connectthefuture/capnproto
cstrahan/capnproto
cube3power/capnproto
daiksy/capnproto
dailypipsgxj/capnproto
danfengzi/capnproto
dannychickenlai/capnproto
datascientist1976/capnproto
debrouxl/capnproto
defconcepts/capnproto
dhaneshkk/capnproto
dharmatech/capnproto
djworth/capnproto
dmitri-shubin/capnproto
dschatzberg/capnproto
dtrodrigues/capnproto
dwrensha/capnproto
dyusupov/capnproto
echaozh/capnproto
elisbyberi/capnproto
eloff/capnproto
emaste/capnproto
fizbin/capnproto
fsxchen/capnproto
geofft/capnproto
gezidan/capnproto
gijs/capnproto
gitter-badger/capnproto
glycerine/capnproto
gordonmcshane/capnproto
greedy/capnproto
guiquanz/capnproto
guojc/capnproto
guoyunsky/capnproto
h4ck3rm1k3/capnproto
h87kg/capnproto
hannesrauhe/capnproto
hannesweisbach/capnproto
hatahet/capnproto
hfeeki/capnproto
hntrmrrs/capnproto
houhaidong/capnproto
hsyed/capnproto
hukeyue/capnproto
imcom/capnproto
ivochkin/capnproto
jamiepg1/capnproto
javarange/capnproto
jcaba/capnproto
jeremyong/capnproto
jiaqiang/capnproto
jieooo7/capnproto
jjwchoy/capnproto
jmckaskill/capnproto
jmspiewak/capnproto
jncorpron/capnproto
johnkdoe/capnproto
joliss/capnproto
joshuawarner32/capnproto
jparyani/capnproto
jpedrick/capnproto
kamalmarhubi/capnproto
khklau/capnproto
krasin/capnproto
kunthar/capnproto
lambdaknight/capnproto
leochencipher/capnproto
lesscome/capnproto
ligzy/capnproto
linearregression/capnproto
liyangdal/capnproto
malachaifrazier/capnproto
martindale/capnproto
mattias-lundell/capnproto
maurer/capnproto
mba811/capnproto
mboozell/capnproto
mcpherrinm/capnproto
mcpoet/capnproto
michaeledgar/capnproto
modulexcite/capnproto
mologie/capnproto
mrdomino/capnproto
nagyistoce/capnproto
neverpanic/capnproto
nguyentamvinhlong/capnproto
nieksand/capnproto
nvdnkpr/capnproto
ocdtrekkie/capnproto
oujinliang/capnproto
patefacio/capnproto
pcn/capnproto
pjulien/capnproto
plexzhang/capnproto
pombredanne/capnproto
pqu/capnproto
puls/capnproto
qumeta/capnproto
ququzone/capnproto
raynaissance/capnproto
rblank/capnproto
rcrowder/capnproto
reesun/capnproto
renlijie/capnproto
rowanthorpe/capnproto
sbinet/capnproto
scottpurdy/capnproto
slug404/capnproto
sofiesauryn/capnproto
songmeixu/capnproto
soupcty/capnproto
spark727/capnproto
sth/capnproto
ststeiger/capnproto
svoflee/capnproto
swenson/capnproto
tchen0123/capnproto
tempbottle/capnproto
thomasbhatia/capnproto
timwee/capnproto
tml/capnproto
tradingtechnologies/capnproto
vdeurzen/capnproto
vietlq/capnproto
wanily/capnproto
wcn3/capnproto
weicongsun/capnproto
weishishuo/capnproto
wentao/capnproto
wheelcomplex/capnproto
wowgeeker/capnproto
wpbird007/capnproto
xiayumao/capnproto
xjzhou/capnproto
yiliaofan/capnproto
zackslash/capnproto
zarvox/capnproto
zauguin/capnproto
zhangf911/capnproto
zhangjinde/capnproto
zhengsunf/capnproto
zined/capnproto
zk4/capnproto
zombiezen/capnproto
zrfan/capnproto
Nothing to show
Choose a Head Repository
capnproto/capnproto
mosesn/capnproto
191919/capnproto
Abyss116/capnproto
Acidburn0zzz/capnproto
AndreZH/capnproto
Boyploy/capnproto
CCJY/capnproto
Diggsey/capnproto
DouglasHeriot/capnproto
Erguotou/capnproto
Fraser999/capnproto
HackerBaloo/capnproto
Ju2ender/capnproto
LaoZhongGu/capnproto
MarPiRK/capnproto
Mause/capnproto
Naibasak/capnproto
PawelMarc/capnproto
PolymorhicCode/capnproto
ProgramFan/capnproto
RAOF/capnproto
Ralith/capnproto
Rumega/capnproto
UIKit0/capnproto
YoonGenwu/capnproto
abaelhe/capnproto
abyss7/capnproto
aj07/capnproto
ajose4dk/capnproto
alekstorm/capnproto
alisheikh/capnproto
amluto/capnproto
andrekandore/capnproto
applewolf/capnproto
arichardson/capnproto
artillery/capnproto
assassin52/capnproto
barakp/capnproto
bboreham/capnproto
bogong/capnproto
bottompawn/capnproto
bouk/capnproto
bryce-gibson/capnproto
bsn069/capnproto
carlmart/capnproto
cdsalmons/capnproto
cgruber/capnproto
chenbk85/capnproto
chenleijava/capnproto
chenlj/capnproto
chenxinghua/capnproto
chris-turner137/capnproto
clodeku/capnproto
cofyc/capnproto
connectthefuture/capnproto
cstrahan/capnproto
cube3power/capnproto
daiksy/capnproto
dailypipsgxj/capnproto
danfengzi/capnproto
dannychickenlai/capnproto
datascientist1976/capnproto
debrouxl/capnproto
defconcepts/capnproto
dhaneshkk/capnproto
dharmatech/capnproto
djworth/capnproto
dmitri-shubin/capnproto
dschatzberg/capnproto
dtrodrigues/capnproto
dwrensha/capnproto
dyusupov/capnproto
echaozh/capnproto
elisbyberi/capnproto
eloff/capnproto
emaste/capnproto
fizbin/capnproto
fsxchen/capnproto
geofft/capnproto
gezidan/capnproto
gijs/capnproto
gitter-badger/capnproto
glycerine/capnproto
gordonmcshane/capnproto
greedy/capnproto
guiquanz/capnproto
guojc/capnproto
guoyunsky/capnproto
h4ck3rm1k3/capnproto
h87kg/capnproto
hannesrauhe/capnproto
hannesweisbach/capnproto
hatahet/capnproto
hfeeki/capnproto
hntrmrrs/capnproto
houhaidong/capnproto
hsyed/capnproto
hukeyue/capnproto
imcom/capnproto
ivochkin/capnproto
jamiepg1/capnproto
javarange/capnproto
jcaba/capnproto
jeremyong/capnproto
jiaqiang/capnproto
jieooo7/capnproto
jjwchoy/capnproto
jmckaskill/capnproto
jmspiewak/capnproto
jncorpron/capnproto
johnkdoe/capnproto
joliss/capnproto
joshuawarner32/capnproto
jparyani/capnproto
jpedrick/capnproto
kamalmarhubi/capnproto
khklau/capnproto
krasin/capnproto
kunthar/capnproto
lambdaknight/capnproto
leochencipher/capnproto
lesscome/capnproto
ligzy/capnproto
linearregression/capnproto
liyangdal/capnproto
malachaifrazier/capnproto
martindale/capnproto
mattias-lundell/capnproto
maurer/capnproto
mba811/capnproto
mboozell/capnproto
mcpherrinm/capnproto
mcpoet/capnproto
michaeledgar/capnproto
modulexcite/capnproto
mologie/capnproto
mrdomino/capnproto
nagyistoce/capnproto
neverpanic/capnproto
nguyentamvinhlong/capnproto
nieksand/capnproto
nvdnkpr/capnproto
ocdtrekkie/capnproto
oujinliang/capnproto
patefacio/capnproto
pcn/capnproto
pjulien/capnproto
plexzhang/capnproto
pombredanne/capnproto
pqu/capnproto
puls/capnproto
qumeta/capnproto
ququzone/capnproto
raynaissance/capnproto
rblank/capnproto
rcrowder/capnproto
reesun/capnproto
renlijie/capnproto
rowanthorpe/capnproto
sbinet/capnproto
scottpurdy/capnproto
slug404/capnproto
sofiesauryn/capnproto
songmeixu/capnproto
soupcty/capnproto
spark727/capnproto
sth/capnproto
ststeiger/capnproto
svoflee/capnproto
swenson/capnproto
tchen0123/capnproto
tempbottle/capnproto
thomasbhatia/capnproto
timwee/capnproto
tml/capnproto
tradingtechnologies/capnproto
vdeurzen/capnproto
vietlq/capnproto
wanily/capnproto
wcn3/capnproto
weicongsun/capnproto
weishishuo/capnproto
wentao/capnproto
wheelcomplex/capnproto
wowgeeker/capnproto
wpbird007/capnproto
xiayumao/capnproto
xjzhou/capnproto
yiliaofan/capnproto
zackslash/capnproto
zarvox/capnproto
zauguin/capnproto
zhangf911/capnproto
zhangjinde/capnproto
zhengsunf/capnproto
zined/capnproto
zk4/capnproto
zombiezen/capnproto
zrfan/capnproto
Nothing to show
- 5 commits
- 1 file changed
- 0 commit comments
- 1 contributor
Commits on Apr 03, 2013
Commits on Apr 05, 2013
Unified
Split
Showing
with
35 additions
and 7 deletions.
- +35 −7 compiler/src/Main.hs
View
42
compiler/src/Main.hs
| @@ -24,34 +24,62 @@ | ||
| module Main ( main ) where | ||
| import System.Environment | ||
| import System.Console.GetOpt | ||
| import Compiler | ||
| import Util(delimit) | ||
| import Text.Parsec.Pos | ||
| import Text.Parsec.Error | ||
| import Text.Printf(printf) | ||
| import qualified Data.List as List | ||
| import qualified Data.ByteString.Lazy.Char8 as LZ | ||
| import Data.List | ||
| import Data.Maybe | ||
| import Semantics | ||
| import CxxGenerator | ||
| main::IO() | ||
| main = do | ||
| files <- getArgs | ||
| mapM_ handleFile files | ||
| let options = [Option ['o'] ["output"] (ReqArg id "FILE") "Where to send the files"] | ||
| args <- getArgs | ||
| let tup = getOpt RequireOrder options args | ||
| let (optionResults, files, _) = tup | ||
| let langDirs = catMaybes (map splitAtEquals optionResults) | ||
| handleFilesLangs (generatorFnsFor langDirs) files | ||
| handleFile filename = do | ||
| splitAtEquals :: String -> Maybe (String, String) | ||
| splitAtEquals str = do | ||
| holder <- (elemIndex '=' str) | ||
| Just((splitAt holder str)) | ||
| handleFilesLangs eithers files = mapM_ (\x -> handleFiles x files) eithers | ||
| handleFiles (Right fn) files = mapM_ (handleFile fn) files | ||
| handleFiles (Left str) _ = putStrLn str | ||
| handleFile generateCode filename = do | ||
| text <- readFile filename | ||
| case parseAndCompileFile filename text of | ||
| Active desc [] -> do | ||
| print desc | ||
| header <- generateCxxHeader desc | ||
| LZ.writeFile (filename ++ ".h") header | ||
| source <- generateCxxSource desc | ||
| LZ.writeFile (filename ++ ".c++") source | ||
| generateCode desc filename | ||
| Active _ e -> mapM_ printError (List.sortBy compareErrors e) | ||
| Failed e -> mapM_ printError (List.sortBy compareErrors e) | ||
| generatorFnsFor :: [(String, String)] -> [Either String (FileDesc -> FilePath -> (IO ()))] | ||
| generatorFnsFor langDirs = do | ||
| map (\langDir -> generatorFnFor (fst langDir) (tail (snd langDir)))langDirs | ||
| generatorFnFor :: String -> String -> Either String (FileDesc -> FilePath -> (IO ())) | ||
| generatorFnFor lang dir = case lang of | ||
| "c++" -> Right (\desc filename -> do | ||
| header <- generateCxxHeader desc | ||
| LZ.writeFile (dir ++ "/" ++ filename ++ ".h") header | ||
| source <- generateCxxSource desc | ||
| LZ.writeFile (dir ++ "/" ++ filename ++ ".c++") source) | ||
| _ -> Left "Only c++ is supported for now" | ||
| compareErrors a b = compare (errorPos a) (errorPos b) | ||
| -- TODO: This is a fairly hacky way to make showErrorMessages' output not suck. We could do better | ||