
!*************************************************************************
!									 *
! © Copyright 2005 Hewlett-Packard Development Company, L.P.		 *
!									 *
! Confidential computer software. Valid license  from  HP  required  for *
! possession, use or copying. Consistent with  FAR  12.211  and  12.212, *
! Commercial Computer Software,  Computer  Software  Documentation,  and *
! Technical  Data  for  Commercial  Items  are  licensed  to  the   U.S. *
! Government under vendor's standard commercial license.		 *
!									 *
!*************************************************************************
 
!++
! Facility:
!   Extended LSE (XLSE)
!
! Abstract:
!   This module defines the MAKE language attributes, tokens,
!   and placeholders.
!
! Author:
!   W. Ward Clark, LinkWorks Project
!
! Creation Date:  4-Mar-90
!
! Modification History:
!   X3.1    WWC  29-Oct-91  1990 --> 1991
!   X4.0a   WWC  24-Feb-93  make modification-id an optional placeholder
!   X4.0a-1 WWC  24-Feb-93  1991 --> 1993
!--
!

! MAKE Language Definition
!
DELETE LANGUAGE make
DEFINE LANGUAGE make -
    /COMMENT=( -
	ASSOCIATED_IDENTIFIER = PREVIOUS, -
	NOBEGIN, -
	NOEND, -
	NOFIXED, -
	LINE=("#"), -
	NOTRAIL) -
    /CAPABILITIES=NODIAGNOSTICS -
    /COMPILE_COMMAND="" -
    /EXPAND_CASE=AS_IS -
    /FILE_TYPES=(.MAKE) -
    /HELP_LIBRARY="SYS$HELP:HELPLIB.HLB" -
    /IDENTIFIER_CHARACTERS= -
	"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%$_0123456789" -
    /INITIAL_STRING="[module]" -
    /LEFT_MARGIN=CONTEXT_DEPENDENT -
    /OVERVIEW_OPTIONS=( -
        MINIMUM_LINES=1, -
        TAB_RANGE=(4,8)) -
    /PLACEHOLDER_DELIMITERS=( -
        REQUIRED=      ("{","}"), -
        REQUIRED_LIST= ("{","}..."), -
        OPTIONAL=      ("[","]"), -
        OPTIONAL_LIST= ("[","]..."), -
        PSEUDOCODE= ("«","»")) -
    /PUNCTUATION_CHARACTERS=",:;()""" -
    /NOQUOTED_ITEM -
    /RIGHT_MARGIN=80 -
    /TAB_INCREMENT=4 -
    /TOPIC_STRING="" -
    /NOWRAP -
    /VERSION="(XLSE X4.0a)"

SET LANGUAGE make

DELETE PLACEHOLDER *
DELETE TOKEN *
!

! Language-independent definitions
!
DELETE PLACEHOLDER "lse$block_comment"
DEFINE PLACEHOLDER "lse$block_comment" -
    /TYPE=NONTERMINAL

    "# {tbs}"
    "#"

    END DEFINE

DELETE PLACEHOLDER "lse$generic"
DEFINE PLACEHOLDER "lse$generic" -
    /TYPE=NONTERMINAL

    "{tbs}"

    END DEFINE

DELETE PLACEHOLDER "lse$line_comment"
DEFINE PLACEHOLDER "lse$line_comment" -
    /TYPE=NONTERMINAL

    "# {tbs}"

    END DEFINE

DEFINE PLACEHOLDER "tbs" -
    /DESCRIPTION="field to be specified" -
    /TYPE=TERMINAL
    "to be specified"
    END DEFINE

DEFINE TOKEN "tbs" -
    /DESCRIPTION="to-be-specified"
    "[tbs]"
    END DEFINE

DEFINE PLACEHOLDER "module" -
    /DESCRIPTION="MAKE Language Module" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "#[module-level-comments]"
    ""
    "#"
    "#   MAKE processing options"
    "#"
    "[.SILENT directive]"
    "[.IGNORE directive]"
    "#"
    "#   Included description files"
    "#"
    "[.INCLUDE directive]..."
    "#"
    "#   Revised precedence of file types"
    "#"
    "[.SUFFIXES directive]..."
    "#"
    "#   Local rules"
    "#"
    "[user-defined-rule]..."
    ""
    "#"
    "#   Local macros"
    "#"
    "[macro-definition]..."
    "#"
    "#   Default action"
    "#"
    "[.DEFAULT directive]"
    "#"
    "#   Initialization actions"
    "#"
    "[.FIRST directive]"
    ""
    "#"
    "#   Dependency rules"
    "#"
    "[dependency-rule]..."
    ""
    "#"
    "#   Completion actions"
    "#"
    "[.LAST directive]"

    END DEFINE

DEFINE TOKEN module /PLACEHOLDER=module

DEFINE PLACEHOLDER "module-level-comments" -
    /TYPE=NONTERMINAL

    "++"
    " Facility:"
    "   {tbs}"
    " "
    " Abstract:"
    "   {tbs}"
    " "
    " Author:"
    "   {tbs}"
    " "
    " Creation Date: {tbs}"
    " "
    " Modification History:"
    "--"

    END DEFINE

! Modification History definitions
!
DEFINE TOKEN "new_modification" -
    /DESCRIPTION="modification history entry"
    "#   [modification-id]  {your-initials}  {modification-date}  {modification-remark}"
    END DEFINE

DEFINE PLACEHOLDER "modification-id" -
    /DESCRIPTION="modification identification number" -
    /TYPE=TERMINAL
    "modification identification number"
    END DEFINE

DEFINE PLACEHOLDER "your-initials" -
    /DESCRIPTION="your initials" -
    /TYPE=TERMINAL
    "your initials"
    END DEFINE

DEFINE PLACEHOLDER "modification-date" -
    /DESCRIPTION="modification date" -
    /TYPE=TERMINAL
    "modification date (dd-mmm-yy)"
    END DEFINE

DEFINE PLACEHOLDER "modification-remark" -
    /DESCRIPTION="brief description of a modification" -
    /TYPE=TERMINAL
    "brief description of the modification"
    END DEFINE
!

! MAKE-specific language definitions
!
DEFINE PLACEHOLDER "rule" -
    /DESCRIPTION="MAKE rule" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=MENU

    "user-defined-rule" /PLACEHOLDER
    "dependency-rule" /PLACEHOLDER
    "double-dependency-rule" /PLACEHOLDER

    END DEFINE

DEFINE TOKEN "rule" /PLACEHOLDER="rule"

DEFINE PLACEHOLDER "user-defined-rule" -
    /DESCRIPTION="User-defined rule" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".{source-file-type}.{target-file-type}"
    "	{action-line}..."
    ""

    END DEFINE

DEFINE TOKEN "user_defined_rule" /PLACEHOLDER="user-defined-rule"

DEFINE PLACEHOLDER "source-file-type" -
    /DESCRIPTION="Source file type" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter the file type of a source"

    END DEFINE

DEFINE PLACEHOLDER "target-file-type" -
    /DESCRIPTION="Target file type" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter the file type of a target"

    END DEFINE

DEFINE PLACEHOLDER "dependency-rule" -
    /DESCRIPTION="Dependency rule" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "{target}... : [source]..."
    "	[action-line]..."
    ""

    END DEFINE

DEFINE TOKEN "dependency" /PLACEHOLDER="dependency-rule"

DEFINE PLACEHOLDER "double-dependency-rule" -
    /DESCRIPTION="Double (colon) dependency rule" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "{target}... :: [source]..."
    "	[action-line]..."
    ""

    END DEFINE

DEFINE TOKEN "double_dependency" /PLACEHOLDER="double-dependency-rule"

DEFINE PLACEHOLDER "target" -
    /DESCRIPTION="target specification" -
    /DUPLICATION=HORIZONTAL -
    /SEPARATOR="," -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter a VMS file-spec or a mnemonic name"

    END DEFINE

DEFINE PLACEHOLDER "source" -
    /DESCRIPTION="source specification" -
    /DUPLICATION=HORIZONTAL -
    /SEPARATOR="," -
    /TOPIC="" -
    /TYPE=MENU

    "file-spec" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "action-line" -
    /DESCRIPTION="Command to be executed" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "[@][-] {DCL-command}"

    END DEFINE

DEFINE TOKEN "action" /PLACEHOLDER="action-line"

DEFINE PLACEHOLDER "@" -
    /DESCRIPTION="Silent action-line prefix" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "@"

    END DEFINE

DEFINE PLACEHOLDER "-" -
    /DESCRIPTION="Ignore action-line prefix" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "-"

    END DEFINE

DEFINE PLACEHOLDER "DCL-command" -
    /DESCRIPTION="Command to be executed" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter a DCL command"

    END DEFINE

DEFINE PLACEHOLDER "macro-definition" -
    /DESCRIPTION="MAKE macro definition" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "{macro-name} = {replacement-string}"

    END DEFINE

DEFINE TOKEN "macro" /PLACEHOLDER="macro-definition"

DEFINE PLACEHOLDER "macro-name" -
    /DESCRIPTION="Name of macro being defined" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter a string of characters (except for space, tab, return, =)"

    END DEFINE

DEFINE PLACEHOLDER "replacement-string" -
    /DESCRIPTION="Macro replacement string" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter the macro replacement string"

    END DEFINE

DEFINE PLACEHOLDER "macro-invocation" -
    /DESCRIPTION="Macro invocation" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "$({macro name})"

    END DEFINE

DEFINE TOKEN "$" /PLACEHOLDER="macro-invocation"

DEFINE PLACEHOLDER "macro name" -
    /DESCRIPTION="Name of a defined macro" -
    /TOPIC="" -
    /TYPE=MENU

    "MAKE$xxx macro name" /PLACEHOLDER
    "default macro name" /PLACEHOLDER
    "user macro name" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "MAKE$xxx macro name" -
    /DESCRIPTION="Name of an MAKE special macro" -
    /TOPIC="" -
    /TYPE=MENU

    "MAKE$TARGET" /DESCRIPTION="target file-spec"
    "MAKE$TARGET_NAME" /DESCRIPTION="target file-name"
    "MAKE$SOURCE" /DESCRIPTION="source file-spec"
    "MAKE$SOURCE_LIST" /DESCRIPTION="list of source files"
    "MAKE$CHANGED_LIST" /DESCRIPTION="list of changed source files"
    "MAKE$LIB_ELEMENT" /DESCRIPTION="VMS library-spec(module-name)"

    END DEFINE

DEFINE PLACEHOLDER "default macro name" -
    /DESCRIPTION="Name of an MAKE default macro" -
    /TOPIC="" -
    /TYPE=MENU

    "ANLFLAGS"
    "AS"
    "BASIC"
    "BASFLAGS"
    "BLISS"
    "BLISS16"
    "BFLAGS"
    "BLIBFLAGS"
    "CC"
    "CFLAGS"
    "CLDFLAGS"
    "COBOL"
    "COBFLAGS"
    "DIBOL"
    "DBLFLAGS"
    "FMS"
    "FMSFLAGS"
    "FORT"
    "FFLAGS"
    "LIBR"
    "LIBRFLAGS"
    "LINK"
    "LINKFLAGS"
    "MACRO"
    "MFLAGS"
    "MSGFLAGS"
    "PASCAL"
    "PENVFLAGS"
    "PFLAGS"
    "PLI"
    "PLIFLAGS"
    "RPG"
    "RPGFLAGS"
    "RUNOFF"
    "RFLAGS"

    END DEFINE

DEFINE PLACEHOLDER "user macro name" -
    /DESCRIPTION="Name of a user-defined macro" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter a string of characters (except for space, tab, return, =)"

    END DEFINE

DEFINE PLACEHOLDER "MAKE-directive" -
    /DESCRIPTION="MAKE directives" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=MENU

    ".IGNORE directive" /PLACEHOLDER /DESCRIPTION=""
    ".SILENT directive" /PLACEHOLDER /DESCRIPTION=""
    ".DEFAULT directive" /PLACEHOLDER /DESCRIPTION=""
    ".SUFFIXES directive" /PLACEHOLDER /DESCRIPTION=""
    ".INCLUDE directive" /PLACEHOLDER /DESCRIPTION=""
    ".FIRST directive" /PLACEHOLDER /DESCRIPTION=""
    ".LAST directive" /PLACEHOLDER /DESCRIPTION=""
    ".IFDEF-.ELSE-.ENDIF directives" /PLACEHOLDER /DESCRIPTION=""

    END DEFINE

DEFINE TOKEN "directive" /PLACEHOLDER="MAKE-directive"
DEFINE TOKEN "." /PLACEHOLDER="MAKE-directive"

DEFINE PLACEHOLDER ".IGNORE directive" -
    /DESCRIPTION=".IGNORE directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".IGNORE"

    END DEFINE

DEFINE TOKEN "IGNORE" /PLACEHOLDER=".IGNORE directive"

DEFINE PLACEHOLDER ".SILENT directive" -
    /DESCRIPTION=".SILENT directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".SILENT"

    END DEFINE

DEFINE TOKEN "SILENT" /PLACEHOLDER=".SILENT directive"

DEFINE PLACEHOLDER ".DEFAULT directive" -
    /DESCRIPTION=".DEFAULT directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".DEFAULT"
    "	{action-line}..."
    ""

    END DEFINE

DEFINE TOKEN "DEFAULT" /PLACEHOLDER=".DEFAULT directive"

DEFINE PLACEHOLDER ".SUFFIXES directive" -
    /DESCRIPTION=".SUFFIXES directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".SUFFIXES .[file-type]..."

    END DEFINE

DEFINE TOKEN "SUFFIXES" /PLACEHOLDER=".SUFFIXES directive"

DEFINE PLACEHOLDER "file-type" -
    /DESCRIPTION="Recognized file types" -
    /LEADING="." -
    /SEPARATOR=" ." -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter a file type (e.g., NEW, XYZ)"

    END DEFINE

DEFINE PLACEHOLDER ".INCLUDE directive" -
    /DESCRIPTION=".INCLUDE directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".INCLUDE {file-spec}"

    END DEFINE

DEFINE TOKEN "INCLUDE" /PLACEHOLDER=".INCLUDE directive"

DEFINE PLACEHOLDER "file-spec" -
    /DESCRIPTION="File specification" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Enter a VMS file specification"

    END DEFINE

DEFINE PLACEHOLDER ".FIRST directive" -
    /DESCRIPTION=".FIRST directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".FIRST"
    "	{action-line}..."
    ""

    END DEFINE

DEFINE TOKEN "FIRST" /PLACEHOLDER=".FIRST directive"

DEFINE PLACEHOLDER ".LAST directive" -
    /DESCRIPTION=".LAST directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".LAST"
    "	{action-line}..."
    ""

    END DEFINE

DEFINE TOKEN "LAST" /PLACEHOLDER=".LAST directive"

DEFINE PLACEHOLDER ".IFDEF-.ELSE-.ENDIF directives" -
    /DESCRIPTION=".IFDEF-.ELSE-.ENDIF directives" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".IFDEF {macro name}"
    "[tbs]"
    "[.ELSE directive]"
    ".ENDIF"

    END DEFINE

DEFINE TOKEN "IF" /PLACEHOLDER=".IFDEF-.ELSE-.ENDIF directives"
DEFINE TOKEN "IFDEF" /PLACEHOLDER=".IFDEF-.ELSE-.ENDIF directives"

DEFINE PLACEHOLDER ".ELSE directive" -
    /DESCRIPTION=".ELSE directive" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".ELSE"
    "[tbs]"

    END DEFINE

DEFINE TOKEN "ELSE" /PLACEHOLDER=".ELSE directive"

DEFINE PLACEHOLDER ".IFDEF-.ENDIF directives" -
    /DESCRIPTION=".IFDEF-.ENDIF directives" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".IFDEF {macro name}"
    "[tbs]"
    ".ENDIF"

    END DEFINE

DEFINE TOKEN "IFTHEN" /PLACEHOLDER=".IFDEF-.ENDIF directives"
