
!*************************************************************************
!									 *
! © 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 RUNOFF language attributes, templates
!   and placeholders.
!
! Author:
!   W. Ward Clark, LinkWorks Project
!
! Creation Date: 24-Oct-84
!
! Modification History:
!   X0.3    WWC  15-Nov-84  add BAR and END_BAR aliases
!   X0.3-1  WWC   3-Jan-85  add basic module definitions
!   X0.4    WWC  28-Feb-85  TEMPLATE --> TOKEN
!   X0.6    WWC  14-May-85  /AUTOFILL --> /AUTOSUBSTITUTE
!			    BAR --> BBAR, END_BAR --> EBAR
!			    basic language constructs
!   X0.6-1  WWC  27-Jun-85  expand command abbreviations
!   X0.7    WWC  18-Aug-85  remove DELETE statements
!   X0.7-1  WWC  18-Aug-85  simplify .LIST templates
!   X0.9    WWC  15-Jan-86  Copyright placeholder:  1985 --> 1986
!   X0.10   WWC  16-Nov-86  upgrade to LSE V2
!   X1.1    WWC  10-Jan-87  Copyright placeholder:  1986 --> 1987
!   X1.1-1  WWC  19-Feb-87  define margins and wrap mode
!   X1.1-2  WWC  30-Mar-87  new DEFINE LANGUAGE /COMMENT qualifier
!   X1.2    WWC  18-May-87  /LEFT_MARGIN=CONTEXT_DEPENDENT
!   X1.2-1  WWC   3-Dec-87  add MODIFY LANGUAGE /FILL=TEXT
!   X1.2-2  WWC  14-Feb-88  TBS alias --> token, ...
!			    1987 --> 1988
!   X1.3    WWC  15-Jan-89  normalize LSE command syntax
!			    1988 --> 1989
!   X3.0    WWC   1-Jan-90  upgrade to LSE V3.0
!                           1989 --> 1990
!   X3.0-1  WWC  28-Jan-90  add PDF definitions
!   X3.0-2  WWC   3-Feb-90  resolve unreferenced placeholders
!   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
!   X4.0a-2 WWC  30-Jul-93  remove MODIFY LANGUAGE /FILL=TEXT
!--
!
!+
!   RUNOFF Language Definition
!-
DELETE LANGUAGE runoff
DEFINE LANGUAGE runoff -
    /COMMENT=( -
	ASSOCIATED_IDENTIFIER = PREVIOUS, -
	NOBEGIN, -
	NOEND, -
	NOFIXED, -
	NOLINE, -
	TRAILING=(".!+",".!-",".!")) -
    /CAPABILITIES=NODIAGNOSTICS -
    /COMPILE_COMMAND="" -
    /EXPAND_CASE=AS_IS -
    /FILE_TYPES=(.RNO,.RNH) -
    /HELP_LIBRARY="" -
    /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=",;()" -
    /QUOTED_ITEM=(QUOTES="""'") -
    /RIGHT_MARGIN=75 -
    /TAB_INCREMENT=8 -
    /TOPIC_STRING="" -
    /WRAP -
    /VERSION="(XLSE X4.0a)"

!+
!   Delete any language definitions
!-
SET LANGUAGE runoff

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

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

    "to be specified"

    END DEFINE

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

    ".![module-level-comments]"
    ""
    "[statement]..."

    END DEFINE

DEFINE TOKEN module /PLACEHOLDER=module

DEFINE PLACEHOLDER module-level-comments -
    /DESCRIPTION="" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "++"
    " Facility:"
    "  [tbs]"
    " "
    " Abstract:"
    "  [tbs]"
    " "
    " Author:"
    "  [tbs]"
    " "
    " Creation Date: [tbs]"
    " "
    " Modification History:"
    "--"

    END DEFINE
!+
!   Modification History definitions
!-
DEFINE TOKEN "tbs" -
    /DESCRIPTION="to-be-specified"
    "[tbs]"
    END DEFINE

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" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "modification identification number"

    END DEFINE

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

    "your initials"

    END DEFINE

DEFINE PLACEHOLDER modification-date -
    /DESCRIPTION="modification date" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "modification date (dd-mmm-yy)"

    END DEFINE

DEFINE PLACEHOLDER modification-remark -
    /DESCRIPTION="brief description of a modification" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "brief description of the modification"

    END DEFINE
!
!+
!   RUNOFF & DSRPLUS Language Support
!-
DEFINE TOKEN bbar
    ".BEGIN BAR"
    END DEFINE

DEFINE TOKEN ebar
    ".END BAR"
    END DEFINE

DEFINE TOKEN bar -
    /DESCRIPTION=".BEGIN BAR/.END BAR block" -
    /TOPIC=""

    ".BEGIN BAR"
    "_\text_\"
    ".END BAR"

    END DEFINE

DEFINE TOKEN bullet_list -
    /DESCRIPTION=".LIST command (bullet list)" -
    /TOPIC=""

    ".LIST 1,'o'"
    "_\list-element_\..."
    ".END LIST 0"

    END DEFINE

DEFINE TOKEN alpha_list -
    /DESCRIPTION=".LIST command (alpha list)" -
    /TOPIC=""

    ".LIST 1,'o'"
    ".DLE LL
    "_\list-element_\..."
    ".END LIST 0"

    END DEFINE

DEFINE TOKEN if -
    /DESCRIPTION=".IF command" -
    /TOPIC=""

    ".IF[NOT] _\variant-name_\"
    "_\text_\"
    "[else-command]"
    ".ENDIF _\variant-name_\"

    END DEFINE

DEFINE TOKEN else /PLACEHOLDER=else-command

DEFINE TOKEN footnote -
    /DESCRIPTION=".FOOTNOTE command (with separator line)" -
    /TOPIC=""

    ".FOOTNOTE"
    ".SKIP 2;________________________"
    ".LEFT MARGIN 3 .NO JUSTIFY"
    ".SKIP .INDENT -3;_\footnote-id_\##_\text_\"
    ".END FOOTNOTE"

    END DEFINE

DEFINE TOKEN list -
    /DESCRIPTION=".LIST command (numbered list)" -
    /TOPIC=""

    ".LIST 1"
    "_\list-element_\..."
    ".END LIST 0"

    END DEFINE

DEFINE TOKEN literal -
    /DESCRIPTION=".LITERAL command" -
    /TOPIC=""

    ".LITERAL"
    "_\text_\"
    ".END LITERAL"

    END DEFINE

DEFINE TOKEN note -
    /DESCRIPTION=".NOTE command" -
    /TOPIC=""

    ".NOTE"
    "_\text_\"
    ".END NOTE 0"

    END DEFINE

DEFINE PLACEHOLDER command -
    /DESCRIPTION="RUNOFF command" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=MENU

    "bar" /TOKEN
    "bullet_list" /TOKEN
    "if" /TOKEN
    "else" /TOKEN
    "footnote" /TOKEN
    "list" /TOKEN
    "list-element" /PLACEHOLDER
    "literal" /TOKEN
    "note" /TOKEN

    END DEFINE

DEFINE PLACEHOLDER else-command -
    /DESCRIPTION=".ELSE command" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".ELSE _\variant-name_\"
    "_\text_\"

    END DEFINE

DEFINE PLACEHOLDER footnote-id -
    /DESCRIPTION="Footnote id" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Footnote identification character"

    END DEFINE

DEFINE PLACEHOLDER list-element -
    /DESCRIPTION=".LIST ELEMENT command" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ".LIST ELEMENT;_\text_\"

    END DEFINE

DEFINE PLACEHOLDER not -
    /DESCRIPTION="NOT keyword (for .IF command)" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "NOT"

    END DEFINE

DEFINE PLACEHOLDER statement -
    /DESCRIPTION="RUNOFF ""statement""" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=MENU

    "command" /PLACEHOLDER
    "text" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER text -
    /DESCRIPTION="ASCII text" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "any ASCII text"

    END DEFINE

DEFINE PLACEHOLDER variant-name -
    /DESCRIPTION="/VARIANT name" -
    /AUTO_SUBSTITUTE -
    /TOPIC="" -
    /TYPE=TERMINAL

    "Name of a /VARIANT document variant"

    END DEFINE
!
!+
!   RUNOFF & DSRPLUS document templates
!-
DEFINE TOKEN memo -
    /DESCRIPTION="DIGITAL memorandum" -
    /TOPIC=""

    ".no number"
    ".flag bold"
    ".ifnot mail"
    ".ifnot notes"
    ".skip;^*+-------------+"
    ".br;| | | | | | | |"
    ".br;|d|i|g|i|t|a|l|######I N T E R O F F I C E####M E M O R A N D U M"
    ".br;| | | | | | | |"
    ".br;+-------------+\*"
    ".tab stops 39,53 .left margin 39"
    ".flag substitute"
    ".skip 2 .indent -39;To: _\addressee_\"
    "	Date: $$DATE()"
    ".no flag substitute"
    ".! Replace ""#"" in following lines with additional addressees."
    ".indent -34;#	From:  _\your-name_\"
    ".indent -34;#	Dept:  _\your-group_\"
    ".indent -34;#	DTN:###_\your-phone_\"
    ".indent -34;#	Loc/Mailstop: _\your-mailstop_\"
    ".indent -34;#	EasyNet:#_\your-network-address_\"
    ".left margin 0"
    ".skip 3;Subject: ^*_\memo-subject_\\*"
    ".title ^*_\memo-subject_\\*"
    ".endif notes"
    ".endif mail"
    ""
    ".skip 3;_\text_\"

    END DEFINE

DEFINE PLACEHOLDER your-group -
    /DESCRIPTION="your group" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "name of the group you work for"

    END DEFINE

DEFINE PLACEHOLDER your-mailstop -
    /DESCRIPTION="your location & mailstop" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "your location and mailstop (e.g., ZKO3-4/X99)"

    END DEFINE

DEFINE PLACEHOLDER addressee -
    /DESCRIPTION="memo addressee" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "person you are sending the memo to"

    END DEFINE

DEFINE PLACEHOLDER memo-subject -
    /DESCRIPTION="subject of a memo" -
    /AUTO_SUBSTITUTE -
    /TOPIC="" -
    /TYPE=TERMINAL

    "subject of your memo"

    END DEFINE

DEFINE PLACEHOLDER your-name -
    /DESCRIPTION="your name" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "your name"

    END DEFINE

DEFINE PLACEHOLDER your-network-address -
    /DESCRIPTION="your network address" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "your address on the EasyNet (e.g., MYNODE::MYNAME)"

    END DEFINE

DEFINE PLACEHOLDER your-phone -
    /DESCRIPTION="your DTN phone number" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "your DTN phone number"

    END DEFINE
