tools/pas2c.hs
changeset 7060 861d6897917f
parent 7057 c3eba84d1a98
child 7062 7efe16575779
equal deleted inserted replaced
7059:800dcaf979bf 7060:861d6897917f
   662 wrapPhrase p@(Phrases _) = p
   662 wrapPhrase p@(Phrases _) = p
   663 wrapPhrase p = Phrases [p]
   663 wrapPhrase p = Phrases [p]
   664 
   664 
   665 expr2C :: Expression -> State RenderState Doc
   665 expr2C :: Expression -> State RenderState Doc
   666 expr2C (Expression s) = return $ text s
   666 expr2C (Expression s) = return $ text s
   667 expr2C (BinOp op expr1 expr2) = do
   667 expr2C b@(BinOp op expr1 expr2) = do
   668     e1 <- expr2C expr1
   668     e1 <- expr2C expr1
   669     t1 <- gets lastType
   669     t1 <- gets lastType
   670     e2 <- expr2C expr2
   670     e2 <- expr2C expr2
   671     t2 <- gets lastType
   671     t2 <- gets lastType
   672     case (op2C op, t1, t2) of
   672     case (op2C op, t1, t2) of
   762 ref2CF :: Reference -> State RenderState Doc
   762 ref2CF :: Reference -> State RenderState Doc
   763 ref2CF (SimpleReference name) = do
   763 ref2CF (SimpleReference name) = do
   764     i <- id2C IOLookup name
   764     i <- id2C IOLookup name
   765     t <- gets lastType
   765     t <- gets lastType
   766     case t of
   766     case t of
   767          BTFunction {} -> return $ i <> parens empty
   767          BTFunction _ rt -> do
       
   768              modify(\s -> s{lastType = rt})
       
   769              return $ i <> parens empty
   768          _ -> return $ i
   770          _ -> return $ i
   769 ref2CF r@(RecordField (SimpleReference _) (SimpleReference _)) = do
   771 ref2CF r@(RecordField (SimpleReference _) (SimpleReference _)) = do
   770     i <- ref2C r
   772     i <- ref2C r
   771     t <- gets lastType
   773     t <- gets lastType
   772     case t of
   774     case t of
   773          BTFunction {} -> return $ i <> parens empty
   775          BTFunction _ rt -> do
       
   776              modify(\s -> s{lastType = rt})
       
   777              return $ i <> parens empty
   774          _ -> return $ i
   778          _ -> return $ i
   775 ref2CF r = ref2C r
   779 ref2CF r = ref2C r
   776 
   780 
   777 ref2C :: Reference -> State RenderState Doc
   781 ref2C :: Reference -> State RenderState Doc
   778 -- rewrite into proper form
   782 -- rewrite into proper form