Google
 

Trailing-Edge - PDP-10 Archives - DEC_CMS-20_V1.0_SRC - cms/sources/langme.req
There are no other files named langme.req in the archive.
! LANGME.REQ  --  Language processor mechanism declarations.

!
!			  COPYRIGHT (C) 1982 BY
!	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
! ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
! INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
! COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
! OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
! TRANSFERRED.
!
! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
! AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
! CORPORATION.
!
! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
!

!++
! Facility:  CMS Library Processor
!
! Abstract:
!
!	This file declares items internal to several modules of the
!	language processor.  They are mostly literals used in the
!	grammar tables.  They are not needed by the caller of the
!	language processor, who should find everything he needs in
!	COMUSR.REQ
!
! Environment:  Transportable
!
! Author:  Earl Van Horn	Creation Date:  April, 1979
!
!--
! This file assumes that the declaration
!
!	LIBRARY 'BLI:XPORT' ;
!
! has already appeared in the program.



! The grammar of the CMS command language is described by the integer vector
! GRATAB, declared in the module GRAMAR.  Some of the integers in this vector
! are codes for commands, sub-commands, qualifiers, and syntactic constructs.
! These integers are defined in COMUSR.REQ, because they can appear in
! the data structures provided to the user of the COMAND routine.
! Other integer codes, called marks, delimit parameter lists, qualifier
! lists, etc.  The mark integers are declared here.
!
! The mark integers are a dense set between K_MARK_1 and K_MARK_N, inclusive.
! They are distinct, non-zero, positive integers that do not overlap the
! integer codes defined in COMUSR.REQ.



! The GRATAB_VECTOR macro declares the attributes of the GRATAB vector, so that
! each of the modules using it will declare it the same way.
!
macro
    gratab_vector =
	vector %bliss32([, word])
	% ;



! The following literal is used in the declaration of the mark integers.
!
literal
    k_mark_base = 16000 ;	! Other dense sets internal to the language
				! processor should begin at higher numbers.
				! The lower numbers are reserved
				! for extensions of COMUSR.REQ.



! These are literals for marks.
!
$literal			! Initialize $DISTINCT to 1.
    k_mark_1 = k_mark_base + 1,
    k_unused_1 = k_mark_base + $distinct,	! This code is not used.
    k_end_gram_mark = k_mark_base + $distinct,	! Last item in the
						! GRATAB vector.
    k_beg_com_mark = k_mark_base + $distinct,	! Begin a command description.
    k_end_com_mark = k_mark_base + $distinct,	! End of a command description.
    k_beg_qua_mark = k_mark_base + $distinct,	! Begin a qualifier series.
    k_end_qua_mark = k_mark_base + $distinct,	! End of a qualifier series.
    k_beg_par_mark = k_mark_base + $distinct,	! Begin a parameter series.
    k_end_par_mark = k_mark_base + $distinct,	! End of a parameter series.
    k_beg_rep_mark = k_mark_base + $distinct,	! Begin a series that may occur
						! one or more times.
    k_end_rep_mark = k_mark_base + $distinct,	! End of a repeatable series.
    k_beg_opt_mark = k_mark_base + $distinct,	! Begin an optional series.
    k_end_opt_mark = k_mark_base + $distinct,	! End an optional series.
! You should add new mark codes just before this comment.
    k_mark_n = k_mark_base + $distinct - 1 ;


! The following integer codes are input to the NXTLEX routine to tell it
! what kind of lexeme to look for.  The codes are a dense set between
! K_LEXICAL_1 and K_LEXICAL_N, inclusive.

$literal
    k_lexical_1 = 1,
    k_normal_lex = $distinct,	! Punctuation and words, with white space
				! where necessary.
    k_file_spec_lex = $distinct,! Special lexical rules for file specification.
    k_quotation_lex = $distinct,! Special lexical rules for quoted string.
! You should insert new lexical codes just before this comment.
    k_lexical_n = $distinct - 1 ;


! The characters that can separate a qualifier from its value.
! Where more than one is allowed, the first is preferred for output.
macro
    s_chars_for_eql = %bliss32('=:') %bliss36(':') %bliss16(':=') % ;


!
! The PROMPT_LIT Macro
!
! This macro takes a text-string and returns a descriptor for that prompt
! with the proper system-dependent prefix.
!
macro
    prompt_lit (text) =
	lit (%string (%if VaxVms %then '$_', %fi
		      text)) %;



! LANGME.REQ  --  LAST LINE