.TITLE PARSE_TABLES - TPARSE tables for NEWSRDR .IDENT 'V1.2' ; ; COPYRIGHT © 1992, 1993 MADGOAT SOFTWARE. ALL RIGHTS RESERVED. ; .DSABL GLOBAL ; ; Determine target platform (avoids having to use ; ARCH_DEFS.MAR) ; .NTYPE R22TYPE,R22 ; get symbol type for "R22" R22TYPE = -5 ; type 5 = register .IF EQ,R22TYPE EVAX = 1 BIGPAGE = 1 ADDRESSBITS = 32 .ENDC .EXTRN PGR_STORE .EXTRN PARSE_RANGE_STORE .EXTRN PX_STORE ; ; MACRO can't handle some characters as literals. ; LEFTANGLE = 60 RIGHTANGLE = 62 APOSTROPHE = 39 COMMA = 44 LEFTBRACE = 123 VERTBAR = 124 RIGHTBRACE = 125 TILDE = 126 SEMICOLON = 59 ; Macro to define the internal character store routines ; Call via LIB$TABLE_PARSE is detected by argument count equalling 1. .MACRO STORE_RTN, INTRTN, EXTRTN .PSECT PARSING_CODE,NOWRT,SHR,PIC,EXE INTRTN: .IF DF,EVAX .CALL_ENTRY HOME_ARGS=TRUE,MAX_ARGS=1 CALLG (AP),G^EXTRTN .IFF .WORD 0 CMPB (AP),#1 BEQL 1$ PUSHL AP CALLS #1,G^EXTRTN RET 1$: CALLG (AP),G^EXTRTN .ENDC RET .ENDM ; ; Literals (must match values from NEWSRDR.H) ; NEWS_K_HDR_LO = 1 NEWS_K_HDR_FROM = 1 NEWS_K_HDR_DATE = 2 NEWS_K_HDR_NEWSGROUPS = 3 NEWS_K_HDR_SUBJECT = 4 NEWS_K_HDR_MESSAGE_ID = 5 NEWS_K_HDR_PATH = 6 NEWS_K_HDR_REPLY_TO = 7 NEWS_K_HDR_SENDER = 8 NEWS_K_HDR_FOLLOWUP_TO = 9 NEWS_K_HDR_EXPIRES = 10 NEWS_K_HDR_REFERENCES = 11 NEWS_K_HDR_CONTROL = 12 NEWS_K_HDR_DISTRIBUTION = 13 NEWS_K_HDR_ORGANIZATION = 14 NEWS_K_HDR_KEYWORDS = 15 NEWS_K_HDR_SUMMARY = 16 NEWS_K_HDR_APPROVED = 17 NEWS_K_HDR_LINES = 18 NEWS_K_HDR_XREF = 19 NEWS_K_HDR_OTHER = 20 NEWS_K_HDR_HI = 20 STORE_HDR = 21 .SBTTL 'State table for PARSE_GROUP_REPLY' $INIT_STATE PGR_STATE, PGR_KEY $STATE ACOUNT $TRAN TPA$_DECIMAL,, PGR_STORE_INT,,,1 $TRAN TPA$_LAMBDA, TPA$_FAIL $STATE $TRAN TPA$_DECIMAL,, PGR_STORE_INT,,,2 $TRAN TPA$_LAMBDA, TPA$_FAIL $STATE $TRAN TPA$_DECIMAL, TPA$_EXIT, PGR_STORE_INT,,,3 $TRAN TPA$_LAMBDA, TPA$_FAIL .SBTTL 'State table for PARSE_RANGE' $INIT_STATE PARSE_RANGE_STATE, PARSE_RANGE_KEY $STATE START $TRAN 'FIRST', EOSORHYP, PR_STORE_INT,,,5 $TRAN 'LAST', EXPEOS, PR_STORE_INT,,,6 $TRAN '.',EOSORHYP, PR_STORE_INT,,,3 $TRAN TPA$_DECIMAL, EOSORHYP, PR_STORE_INT,,,1 $TRAN TPA$_ANY, TPA$_FAIL $STATE EOSORHYP $TRAN TPA$_EOS, TPA$_EXIT $TRAN '-', EXPEOR $TRAN TPA$_ANY, TPA$_FAIL $STATE EXPEOR $TRAN 'LAST', EXPEOS, PR_STORE_INT,,,7 $TRAN '.', EXPEOS, PR_STORE_INT,,,4 $TRAN TPA$_DECIMAL, EXPEOS, PR_STORE_INT,,,2 $TRAN TPA$_ANY, TPA$_FAIL $STATE EXPEOS $TRAN TPA$_EOS, TPA$_EXIT $TRAN TPA$_ANY, TPA$_FAIL .SBTTL 'State table for PARSE_XREF' $INIT_STATE PX_STATE, PX_KEY $STATE PXSTART $TRAN TPA$_BLANK, PXSKIP $TRAN TPA$_EOS, TPA$_EXIT $TRAN TPA$_ANY, PXSTART $STATE PXSKIP $TRAN TPA$_BLANK, PXSKIP $TRAN TPA$_EOS, TPA$_EXIT $TRAN TPA$_ANY, PXGROUP, PX_STORE_INT,,, 1 $STATE PXGROUP $TRAN ':', PXARTNUM, PX_STORE_INT,,, 3 $TRAN TPA$_EOS, TPA$_EXIT $TRAN TPA$_BLANK, PXSKIP $TRAN TPA$_ANY, PXGROUP, PX_STORE_INT,,, 2 $STATE PXARTNUM $TRAN TPA$_BLANK, PXSKIP, PX_STORE_INT,,, 5 $TRAN TPA$_EOS, TPA$_EXIT, PX_STORE_INT,,, 5 $TRAN TPA$_DIGIT, PXARTNUM, PX_STORE_INT,,, 4 $TRAN TPA$_ANY, PXSTART $END_STATE STORE_RTN PGR_STORE_INT, PGR_STORE STORE_RTN PR_STORE_INT, PARSE_RANGE_STORE STORE_RTN PX_STORE_INT, PX_STORE .END