A2osX/BIN/CC.S.DECL.txt
burniouf 04a83f00f3 SH:new ALIAS cmd, new && operator
MKDIR:completely implemented
LS/RM/MV/CP: combined switches
KERNEL:SList API now handle options to handle several languages/parsers
2022-10-07 21:21:37 +02:00

155 lines
2.5 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 .28
cmp #'{'
bne .26
jsr CORE.GetNCharNB skip '{'
bcs .98
jmp SYM.StoreF
*--------------------------------------
* 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
clc
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.decl
LOAD usr/src/bin/cc.s
ASM