(Contents)

Appendix 1: Syntax of the Declare Section

statement ::= prepcomline | declaration

prepcomline ::= '#define' identifier constant

constant ::= identifier | unsigned_integer

declaration ::= decspec declist ';'

decspec ::= storclspec | typespec | decspec storclspec |

decspec typespec

storclspec ::= 'external' | 'static' | 'auto' | 'typedef' | empty

typespec ::= inttysp | flptysp | chartysp | dcmltysp |

strutysp | identifier | 'const' | 'volatile'

inttysp ::= 'short' | 'long' | 'int' | 'unsigned'

chartysp ::= 'char' | 'VARCHAR' | 'varchar'

flptysp ::= 'float' | 'long' | 'double'

dcmltysp ::= dcmldef | dcmlref

strutysp ::= strudef | struref

strudef ::= 'struct' structag '{' fieldlist '}'

struref ::= 'struct' identifier

dcmldef ::= 'DECIMAL' dcmltag '{' dcmlscale '}'

dcmlref ::= 'DECIMAL' identifier

structag ::= identifier | empty

fieldlist ::= typespec declist ';' |

fieldlist typespec declist ';'

dcmltag ::= identifier | empty

dcmlscale ::= dcmldigits | dcmldigits ',' dcmlfract | empty

declist ::= possinitdec | declist ',' possinitdec

dcmldigits ::= identifier | unsigned_integer

dcmlfract ::= identifier | unsigned_integer

possinitdec ::= declarator | declarator '=' initializer

declarator ::= identifier | '*' identifier | declarator

'[' arrdim ']'

arrdim ::= identifier | unsigned_integer

initializer ::= expression | '{' initlist '}'

initlist ::= initializer | initlist ',' initializer

expression ::= basexpr | basexpr ( expression ) basexpr

empty ::=


(Contents)