NEW AUTO 3,1 *-------------------------------------- DECL.AUTO DECL.REGISTER DECL.STATIC DECL.EXTERN .98 lda #E.CSYN sec .99 rts *-------------------------------------- DECL.TYPEDEF jsr CORE.GetNCharNB bcs .98 >LDYA L.CC.TYPEQUAL jsr CC.LookupID bcs .98 cpx #4 no const nor volatile bcc .98 jsr TYPE.GetTQInYA bcs .99 ldx #SYM.SC.TYPEDEF sec Reset Buffer jsr SYM.New Y,A=T/Q,storage class TYPEDEF bcs .99 jsr CC.GetCharNB bcs .98 cmp #';' bne .98 jsr CORE.GetNCharNB skip ';' jmp SYM.Store .98 lda #E.CSYN sec .99 DECL.TYPEDEF.RTS rts *-------------------------------------- * X = type qual *-------------------------------------- DECL.X jsr TYPE.GetTQInYA bcs .99 cpy #SYM.T.SU bne .7 tax save Q jsr CC.GetCharNB bcs .98 cmp #';' from a tag def beq .8 jsr CC.IsLetter bcs .98 * >DEBUG .1 clc reuse buffer ldy #SYM.T.SU txa restore Q jsr DECL.YAC bcs .99 jsr CC.GetCharNB bcs .98 cmp #',' bne .2 jsr CORE.GetNCharNBNL bcc .1 bcs .98 .2 cmp #';' TODO: struct initalizers bne .98 .8 clc rts .98 lda #E.CSYN sec .99 rts *-------------------------------------- .7 sec Reset Buffer DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual bit bLocalScope bpl .25 bit #SYM.Q.FUNC someone wants to add a local f() ? bne .98 ldx #SYM.SC.AUTO .25 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse bcs .98 OOM or DUP .22 jsr CC.GetCharNB bcs .98 cmp #';' beq .8 cmp #'{' bne .26 jmp CORE.GetNCharNBNL Skip '{' *-------------------------------------- * Initializer *-------------------------------------- .26 cmp #'=' type var = value ? bne .98 jsr CORE.GetNCharNB skip '=' bcs .98 jsr SYM.GetTypeInYA expected T/Q jsr EXP.Eval bcs .99 jsr SYM.GetAddr1 bcs .99 jsr SYM.GetTypeInYA Y,A = T/Q jsr SYM.PopValue Set value to this var .29 bcs .99 .28 jsr SYM.Store bcs .99 jsr CC.GetCharNB cmp #';' bne .98 .8 clc rts .98 lda #E.CSYN sec .99 rts *-------------------------------------- MAN SAVE usr/src/bin/cc.s.decl LOAD usr/src/bin/cc.s ASM