Permalink

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 base branch
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
Choose a head branch
Checking mergeability… Don’t worry, you can still create the pull request.
  • 5 commits
  • 1 file changed
  • 0 commit comments
  • 1 contributor
Showing with 35 additions and 7 deletions.
  1. +35 −7 compiler/src/Main.hs
View
@@ -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

No commit comments for this range