[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / U_atype.hs
1
2
3 module U_atype where
4 import UgenUtil
5 import Util
6
7 import U_list
8 data U_atype = U_atc U_unkId U_list U_long 
9
10 rdU_atype :: _Addr -> UgnM U_atype
11 rdU_atype t
12   = ioToUgnM (_ccall_ tatype t) `thenUgn` \ tag@(I# _) ->
13     if tag == ``atc'' then
14         ioToUgnM (_ccall_ gatcid t) `thenUgn` \ x_gatcid ->
15         rdU_unkId x_gatcid `thenUgn` \ y_gatcid ->
16         ioToUgnM (_ccall_ gatctypel t) `thenUgn` \ x_gatctypel ->
17         rdU_list x_gatctypel `thenUgn` \ y_gatctypel ->
18         ioToUgnM (_ccall_ gatcline t) `thenUgn` \ x_gatcline ->
19         rdU_long x_gatcline `thenUgn` \ y_gatcline ->
20         returnUgn (U_atc y_gatcid y_gatctypel y_gatcline)
21     else
22         error ("rdU_atype: bad tag selection:"++show tag++"\n")