Google
 

Trailing-Edge - PDP-10 Archives - BB-H138E-BM - 6-1-sources/pardata.old
There is 1 other file named pardata.old in the archive. Click here to see a list.
!
! This module contains all the data required for parsing. This consists
! of any required macros, literals, command keyword tables and parse
! tables. This is referenced by PRPARCOM.B36.
!
! Created:	2-Mar-83  C.Gill
!

    REQUIRE
	'EDTSRC:SUPPORTS';		! Support flags

!
! The following external must be defined here to simplify the layout of
! PRPARCOM.
!

    EXTERNAL
	GETJFN_BLOCK,			! GTJFN block
	CMD_BUF;			! Command buffer


!
! GLOBAL STORAGE:
!

!+
! The following block is used by the COMND JSYS.
!-

GLOBAL
	ATOM_BUF : VECTOR [CH$ALLOCATION (ATOM_LEN, BYTE_SIZE)], ! Atom buffer

	CSB : VECTOR [10] INITIAL (
		0,
		$PRIIN*%O'1000000'+$PRIOU,	! Primary JFN's - may change
		0,				! Prompt pointer
		CH$PTR (CMD_BUF,, BYTE_SIZE),	! Command buffer
		CH$PTR (CMD_BUF,, BYTE_SIZE),
		256,				! Length of command buffer
		256,
		CH$PTR (ATOM_BUF,, BYTE_SIZE),	! Local atom buffer
		ATOM_LEN,
		GETJFN_BLOCK);			! GTJFN block for filespecs

!+
! The following tables are the command and switch name tables used during
! parsing. All tables must be alphabetically ordered.
!-

	CMDTAB (CMD_TABLE,				! Main command table
		'ADJUST',CM_INV,COM_TADJ,
		'C',(CM_INV + CM_ABR),CMD_TABLE+3,	! CHANGE
		'CHANGE',,COM_CHANGE,
		'CLEAR',,COM_CLEAR,
		'COPY',,COM_COPY,
		'D',(CM_INV + CM_ABR),CMD_TABLE+8,	! DELETE
		'DEFINE',,COM_DEFINE,
		'DELETE',,COM_DELETE,
		'E',CM_NOR,0,
		'EXIT',,COM_EXIT,
		'F',(CM_INV + CM_ABR),CMD_TABLE+13,	! FIND
		'FILL',,COM_FILL,
		'FIND',,COM_FIND,
		'HELP',,COM_HELP,
		'I',(CM_INV + CM_ABR),CMD_TABLE+17,	! INSERT
		'INCLUDE',,COM_INCLUDE,
		'INSERT',,COM_INSERT,
		'MOVE',,COM_MOVE,
		'NEXT',,COM_SUBS_NEXT,
		'PRINT',,COM_PRINT,
		'PUSH',,COM_PUSH,
		'QUI',CM_NOR,0,
		'QUIT',,COM_QUIT,
		'R',(CM_INV + CM_ABR),CMD_TABLE+25,	! REPLACE
		'REPLACE',,COM_REPLACE,
		'RESEQUENCE',,COM_RESEQ,
		'S',(CM_INV + CM_ABR),CMD_TABLE+30,	! SUBSTITUTE
		'SET',,COM_SET,
		'SHOW',,COM_SHOW,
		'SUBSTITUTE',,COM_SUBS,
		'T',(CM_INV + CM_ABR),CMD_TABLE+34,	! TYPE
		'TAB',,COM_TADJ,
		'TRACE',(CM_INV),COM_TRACE,
		'TYPE',,COM_TYPE,
		'WRITE',,COM_WRITE,
		'XDDT',(CM_INV),COM_XDDT);

!+,
! Other keyword tables,
!-,

	CMDTAB (ADJ_CMD,
		'ADJUST',,0);

	CMDTAB (DEF_CMD_AS,			! AS
		'AS',,0);

	CMDTAB (DEF_CMD_TBL,			! DEFINE keywords
		'KEY',,COM_DEFINE,
		'MACRO',,COM_DEF_MAC);

	CMDTAB (RAN_CMD_TBL,			! Range keywords
		'ALL',,RAN_ALL,
		'AND',,RAN_AND,
		'B',(CM_INV + CM_ABR),RAN_CMD_TBL+5,
		'BEFORE',,RAN_BEFORE,
		'BEGIN',,RAN_BEGIN,
		'BUFFER',,RAN_BUFFER,
		'END',,RAN_END,
		'FOR',,RAN_FOR,
		'LAST',,RAN_LAST,
		'ORIGINAL',,RAN_ORIG,
		'REST',,RAN_REST,
		'SELECT',,RAN_SELECT,
		'THRU',,RAN_THRU,
		'WHOLE',,RAN_WHOLE);

	CMDTAB (RAN_CMD_TO,			! Parse 'TO'
		'TO',,RAN_THRU)

	CMDTAB (COP_SWT_TBL,			! COPY switches
		'DUPLICATE',,SWT_DUPL,
		'QUERY',,SWT_QUERY);

	CMDTAB (DEL_SWT_TBL,			! DELETE switches
		'QUERY',,SWT_QUERY);

	CMDTAB (EXI_SWT_TBL,			! EXIT switches
		'GO',,SWT_GO,
		'SAVE',,SWT_SAVE,
		'SEQUENCE',,SWT_SEQU);

	CMDTAB (QIT_SWT_TBL,			! QUIT switches
		'SAVE',,SWT_SAVE);

	CMDTAB (RES_SWT_TBL,			! RESEQUENCE switches
		'SEQUENCE',,SWT_SEQU);

	CMDTAB (SUB_SWT_TBL,			! SUBSTITUTE switches
		'BRIEF',,SWT_BRIEF,
		'NOTYPE',,SWT_NOTYP,
		'QUERY',,SWT_QUERY);

	CMDTAB (TYP_SWT_TBL,			! TYPE switches
		'BRIEF',,SWT_BRIEF,
		'STAY',,SWT_STAY);

	CMDTAB (SET_OPT_TBL,			! SET options
		'AUTOREPEAT',,SET_AUTO,
		'CASE',,SET_CASE,
		'COMMAND',,SET_COMND,
		'CONTROL-T',,SET_CTRLT,
		'CURSOR',,SET_CURSR,
		'ENTITY',,SET_NTITY,
		'FNF',,SET_FNF,
		'HELP',,SET_HELP,
		'KEYPAD',,SET_KEY,
		'LINES',,SET_LINES,
		'MODE',,SET_MODE,
		'NOAUTOREPEAT',,SET_NOAUT,
		'NOCONTROL-T',,SET_NOCTLT,
		'NOFNF',,SET_NOFNF,
		'NOKEYPAD',,SET_NOKEY,
		'NONUMBERS',,SET_NONUM,
		'NOQUIET',,SET_NOQIT,
		'NOREPEAT',,SET_NORPT,
		'NOSUMMARY',,SET_NOSUM,
		'NOTAB',,SET_NOTAB,
		'NOTRUNCATE',,SET_NOTRU,
		'NOVERIFY',,SET_NOVER,
		'NOWRAP',,SET_NOWRP,
		'NUMBERS',,SET_NUMB,
		'PARAGRAPH',,SET_PARA,
		'PROMPT',,SET_PROMPT,
		'QUIET',,SET_QUIET,
		'REPEAT',,SET_REPT,
		'SCREEN',,SET_SCRN,
		'SEARCH',,SET_SRCH,
		'SUMMARY',,SET_SUMM,
		'TAB',,SET_TAB,
		'TERMINAL',,SET_TERM,
		'TEXT',,SET_TEXT,
		'TRUNCATE',,SET_TRUNC,
		'VERIFY',,SET_VERFY,
		'WORD',,SET_WORD,
		'WRAP',,SET_WRAP);

	CMDTAB (SHO_OPT_TBL,			! SHOW options
		'AUTOREPEAT',,SHO_AUTO,
		'BUFFER',,SHO_BUFF,
		'CASE',,SHO_CASE,
		'COMMAND',,SHO_COMND,
		'CONTROL-T',,SHO_CTRLT,
		'CURSOR',,SHO_CURSR,
		'ENTITY',,SHO_NTITY,
		'FILES',,SHO_FILES,
		'FNF',,SHO_FNF,
		'HELP',,SHO_HELP,
		'KEY',,SHO_KEY,
		'KEYPAD',,SHO_KEYPD,
		'LINES',,SHO_LINES,
		'MODE',,SHO_MODE,
		'NUMBERS',,SHO_NUM,
		'PARAGRAPH',,SHO_PARA,
		'PROMPT',,SHO_PROMPT,
		'QUIET',,SHO_QUIET,
		'REPEAT',,SHO_REPT,
		'SCREEN',,SHO_SCRN,
		'SEARCH',,SHO_SRCH,
		'SUMMARY',,SHO_SUMM,
		'TAB',,SHO_TAB,
		'TERMINAL',,SHO_TERM,
		'TEXT',,SHO_TEXT,
		'TRUNCATE',,SHO_TRUNC,
		'VERIFY',,SHO_VRFY,
		'VERSION',,SHO_VERS,
		'WORD',,SHO_WORD,
		'WRAP',,SHO_WRAP);

	CMDTAB (SHO_KEY_TBL,			! SHOW KEY keywords
		'GOLD',,KEY_GOLD);		! Drops into SHO_KEY_GOLD

	CMDTAB (SHO_KEY_GOLD,			! SHOW KEY GOLD keywords
		'C',CM_NOR,0,			! Might be key name
		'CONTROL',,KEY_CONT,
		'D',CM_NOR,0,
		'DELETE',,KEY_DEL
%IF SUPPORT_VT220
%THEN
		,'F',CM_NOR,0,
		'FUNCTION',,KEY_FUNC
%FI
		)

	CMDTAB (ENTITY_TBL,			! ENTITY keywords
		'PAGE',,ENT_PAGE,
		'PARAGRAPH',,ENT_PARA,
		'SENTENCE',,ENT_SENT,
		'WORD',,ENT_WORD);

	CMDTAB (CASE_TBL,			! SET CASE keywords
		'LOWER',,SET_CLOWR,
		'NONE',,SET_CNONE,
		'UPPER',,SET_CUPPR);

	CMDTAB (MODE_TBL,			! SET MODE keywords
		'CHANGE',,SET_MCHNG,
		'LINES',,SET_MLINE);

	CMDTAB (SEARCH_TBL,			! SET SEARCH keywords
		'BEGIN',,SET_SBEG,
		'BOUNDED',,SET_SBND,
		'CASE-INSENSITIVE',,SET_CI,
		'CI',,SET_CI,
%IF SUPPORT_VT220
%THEN
		'DI',,SET_DI,
		'DIACRITICAL-INSENSITIVE',,SET_DI,
%FI
		'END',,SET_SEND,
		'EXACT',,SET_SEXCT,
		'GENERAL',,SET_SGEN,
		'IGNORE',CM_INV,SET_SIGN,
		'NOIGNORE',CM_INV,SET_SNIGN,
		'UNBOUNDED',,SET_SUNB,
		'WPS',,SET_SWPS);

	CMDTAB (TERM_TBL,			! SET TERMINAL keywords
		'EDIT',,SET_EDIT,
%IF SUPPORT_VT220
%THEN
		'EIGHTBIT',,SET_8BIT,
%FI
		'HARDCOPY',,SET_HCPY,
		'HCPY',,SET_HCPY,
		'NOEDIT',,SET_NEDIT,
%IF SUPPORT_VT220
%THEN
		'NOEIGHTBIT',,SET_N8BIT,
%FI
		'NOSCROLL',,SET_NSCRL,
		'SCROLL',,SET_SCRL,
		'VT100',,SET_VT100,
		'VT52',,SET_VT52);

	CMDTAB (PROMPT_TBL,			! SET PROMPT keywords
		'HCCHANGE',,SET_PHCCH,
		'INSERT',,SET_PINS,
		'KEYPAD',,SET_PKEY,
		'LINE',,SET_PLINE,
		'NINSERT',,SET_PNINS,
		'NOKEYPAD',,SET_PNKEY,
		'QUERY',,SET_PQRY);

	CMDTAB (TEXT_TBL,			! SET TEXT keywords
		'END',,SET_TEND,
		'PAGE',,SET_TPAGE);

	CMDTAB (WORD_TBL,			! SET WORD keywords
		'DELIMITER',,SET_WDEL,
		'NODELIMITER',,SET_WNDEL);

	CMDTAB (PARA_TBL,			! SET PARAGRAPH keywords
		'NOWPS',,SET_PNWPS,
		'WPS',,SET_PWPS);

	CMDTAB (TRACE_TBL,			! TRACE keywords
		'CLOSE',,TRC_CLOSE,
		'LIST',,TRC_LIST,
		'OFF',,TRC_OFF,
		'ON',,TRC_ON,
		'OPEN',,TRC_OPEN,
		'RESET',,TRC_RESET);

	CMDTAB (TRACE_SWT,			! TRACE switches
		'LOCATION',,SWT_LOCN,
		'STACK',,SWT_STACK);

!+
! Break mask and extra keyword for SUBSTITUTE
!-

    OWN
	BREAK_MASK : VECTOR [4] INITIAL (%O'20000000', 0, 0, 0);

	CMDTAB (NEXT_TBL,
		'NEXT',,0);

!+
! Break mask for TRACE routine and symbol names.
!-

    OWN
	TRR_BREAK : VECTOR [4] INITIAL (FLDB0$,
					FLDB1$ AND NOT %O'030010000000',
					FLDB2$,
					FLDB3$);

!+
! The following data are the function descriptor blocks for the COMND JSYS.
!-

    GLOBAL

	FD_INI : FLDDB$ (TYP=$CMINI),		! Init the parser

	FD_CMT : FLDDB$ (TYP=$CMCFM,		! Implied TYPE
			FLGS=CM_SDH,
			HLPM='Press return to type the next line'),

	FD_CMM : FLDDB$ (TYP=$CMFLD,		! Parse a macro name
			HLPM='Range to type',
			LST=FD_CMT),

	FD_CMD : FLDDB$ (TYP=$CMKEY,		! Parse the overall command
			DATA=CMD_TABLE,
			LST=FD_CMM),

	FD_CFM : FLDDB$ (TYP=$CMCFM),		! Confirm

	FD_VAL : FLDDB$ (TYP=$CMNUX,		! Parse a decimal number
			DATA=10),

	FD_COP : FLDDB$ (TYP=$CMSWI,		! COPY switches
			DATA=COP_SWT_TBL),

	FD_DEL : FLDDB$ (TYP=$CMSWI,		! DELETE and MOVE switches
			DATA=DEL_SWT_TBL),

	FD_EXI : FLDDB$ (TYP=$CMSWI,		! EXIT command switches
			DATA=EXI_SWT_TBL),

	FD_QIT : FLDDB$ (TYP=$CMSWI,		! QUIT switches
			DATA=QIT_SWT_TBL),

	FD_RES : FLDDB$ (TYP=$CMSWI,		! RESEQUENCE and WRITE switches
			DATA=RES_SWT_TBL),

	FD_DEF : FLDDB$ (TYP=$CMKEY,		! DEFINE keywords
			DATA=DEF_CMD_TBL),

	FD_AS  : FLDDB$ (TYP=$CMKEY,		! AS
			DATA=DEF_CMD_AS),

	FD_SUB : FLDDB$ (TYP=$CMSWI,		! SUBSTITUTE switches
			DATA=SUB_SWT_TBL),

	FD_UQS : FLDDB$ (TYP=$CMUQS,		! SUBSTITUTE string
			DATA=BREAK_MASK),

	FD_SNX : FLDDB$ (TYP=$CMKEY,		! NEXT keyword
			DATA=NEXT_TBL,
			HLPM='String to be replaced or  '),

	FD_TYP : FLDDB$ (TYP=$CMSWI,		! TYPE switches
			DATA=TYP_SWT_TBL),

	FD_FIL : FLDDB$ (TYP=$CMFIL),		! EXIT command filespec

	FD_RNN : FLDDB$ (TYP=$CMNUM,		! Parse a decimal number
			FLGS=CM_SDH,
			DATA=10),

	FD_RN7 : FLDDB$ (TYP=$CMTOK,		! Parse buffer sign
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('=')),
			LST=FD_RNN),

	FD_RN6 : FLDDB$ (TYP=$CMTOK,		! Parse decimal point or dot
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('.')),
			LST=FD_RN7),

	FD_RN5 : FLDDB$ (TYP=$CMTOK,		! Parse minus sign
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('-')),
			LST=FD_RN6),

	FD_RN4 : FLDDB$ (TYP=$CMTOK,		! Parse plus sign
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('+')),
			LST=FD_RN5),

	FD_RN3 : FLDDB$ (TYP=$CMTOK,		! Parse AND sign
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT (',')),
			LST=FD_RN4),

	FD_RN2 : FLDDB$ (TYP=$CMTOK,		! Parse THRU sign
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT (':')),
			LST=FD_RN3),

	FD_RN1 : FLDDB$ (TYP=$CMTOK,		! Parse FOR sign
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('#')),
			LST=FD_RN2),

	FD_RNS : FLDDB$ (TYP=$CMQST,		! Parse a quoted string
			FLGS=CM_SDH,
			LST=FD_RN1),

	FD_RNK : FLDDB$ (TYP=$CMKEY,		! Simple range parsing
			FLGS=CM_SDH,
			DATA=RAN_CMD_TBL,
			HLPM='A valid range specification',
			LST=FD_RNS),

	FD_RNG : FLDDB$ (TYP=$CMTOK,		! '%' on keyword
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('%')),
			LST=FD_RNK),

	FD_DOT : FLDDB$ (TYP=$CMTOK,		! Decimal point
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('.')),
			HLPM='Decimal point or space'),

	FD_RNF : FLDDB$ (TYP=$CMFLD,		!Parse a field
			FLGS=CM_SDH,
			HLPM='Buffer name'),

	FD_RT1 : FLDDB$ (TYP=$CMKEY,		! Parse 'TO' or '%TO'
			DATA=RAN_CMD_TO),

	FD_RTO : FLDDB$ (TYP=$CMTOK,		! '%' on TO keyword
			FLGS=CM_SDH,
			DATA=CH$PTR (UPLIT ('%')),
			LST=FD_RT1),

	FD_ADJ : FLDDB$ (TYP=$CMKEY,		! TABS ADJUST
			DATA=ADJ_CMD,
			LST=FD_VAL),

	FD_TXT : FLDDB$ (TYP=$CMTXT),		! Parse a text string (for HELP)

	FD_QST : FLDDB$ (TYP=$CMQST),		! Parse a quoted string

	FD_COL : FLDDB$ (TYP=$CMTOK,		! Parse a colon
			DATA=CH$PTR (UPLIT (':'))),

	FD_SET : FLDDB$ (TYP=$CMKEY,		! SET options
			DATA=SET_OPT_TBL),

	FD_SHO : FLDDB$ (TYP=$CMKEY,		! SHOW options
			DATA=SHO_OPT_TBL),

	FD_ENT : FLDDB$ (TYP=$CMKEY,		! SET ENTITY options
			DATA=ENTITY_TBL),

	FD_CAS : FLDDB$ (TYP=$CMKEY,		! SET CASE options
			DATA=CASE_TBL),

	FD_MOD : FLDDB$ (TYP=$CMKEY,		! SET MODE options
			DATA=MODE_TBL),

	FD_SCH : FLDDB$ (TYP=$CMKEY,		! SET SEARCH options
			DATA=SEARCH_TBL),

	FD_TRM : FLDDB$ (TYP=$CMKEY,		! SET TERMINAL options
			DATA=TERM_TBL),

	FD_PRO : FLDDB$ (TYP=$CMKEY,		! SET PROMPT options
			DATA=PROMPT_TBL),

	FD_TEX : FLDDB$ (TYP=$CMKEY,		! SET TEXT options
			DATA=TEXT_TBL),

	FD_WRD : FLDDB$ (TYP=$CMKEY,		! SET WORD options
			DATA=WORD_TBL),

	FD_PAR : FLDDB$ (TYP=$CMKEY,		! SET PARAGRAPH options
			DATA=PARA_TBL),

	FD_KYS : FLDDB$ (TYP=$CMFLD,		! Part of FD_KYN
			FLGS=CM_SDH),

	FD_KYN : FLDDB$ (TYP=$CMQST,		! Parse a character
			HLPM='Name of key to define',
			LST=FD_KYS),

	FD_SKV : FLDDB$ (TYP=$CMNUX,		! DEFINE KEY number
			DATA=10,
			FLGS=CM_SDH,
			HLPM='Number of key to define',
			LST=FD_KYN),

	FD_SKG : FLDDB$ (TYP=$CMKEY,		! SHOW KEY GOLD options
			DATA=SHO_KEY_GOLD,
			LST=FD_SKV),

	FD_SKY : FLDDB$ (TYP=$CMKEY,		! SHOW KEY options
			DATA=SHO_KEY_TBL,
			LST=FD_SKG),

	FD_TRC : FLDDB$	(TYP=$CMKEY,		! Parse TRACE options
			DATA=TRACE_TBL),

	FD_TRR : FLDBK$	(TYP=$CMFLD,		! TRACE routine or symbol
			FLGS=CM_SDH,
			BRKM=TRR_BREAK,
			HLPM='Symbol name'),

	FD_TRS : FLDDB$ (TYP=$CMSWI,
			DATA=TRACE_SWT),

	FD_EN2 : FLDDB$ (TYP=$CMCFM),		! Parse <CR><LF>

	FD_END : FLDDB$ (TYP=$CMTOK,		! Parse '\' between commands
			DATA=CH$PTR (UPLIT ('\')),
			LST=FD_EN2);

!
! End of PRDATA.R36
!