
!*************************************************************************
!									 *
! © 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 TABLE language attributes, templates
!   and placeholders.
!
! Author:
!   W. Ward Clark, LinkWorks Project
!
! Creation Date: 16-May-85
!
! Modification History:
!   X0.7    WWC  18-Aug-85  remove DELETE statements
!   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  30-Mar-87  new DEFINE LANGUAGE /COMMENT qualifier
!   X1.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.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  25-Feb-93  avoid LSE V4.0 comment definition bug
!--
!
!+
!   TABLE Language Definition
!-
DELETE LANGUAGE table
DEFINE LANGUAGE table -
    /CAPABILITIES=NODIAGNOSTICS -
    /COMPILE_COMMAND="" -
    /EXPAND_CASE=AS_IS -
    /FILE_TYPES=(.TBL) -
    /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=80 -
    /TAB_INCREMENT=8 -
    /TOPIC_STRING="" -
    /NOWRAP -
    /VERSION="(XLSE X4.0a)"

! The following fixup avoids an LSE V4.0 bug where /COMMENT is not
! properly handled on a DEFINE LANGUAGE command.
!
MODIFY LANGUAGE table -
    /COMMENT=( -
	ASSOCIATED_IDENTIFIER = PREVIOUS, -
	BEGIN=("COMMENT {"), -
	END=("}"), -
	NOFIXED, -
	NOLINE, -
	NOTRAIL)
!+
!   Delete any language definitions
!-
SET LANGUAGE table

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

    "COMMENT{"
    "  {~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

    "COMMENT{ {~tbs~} }"

    END DEFINE

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

    "to be specified"

    END DEFINE

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

    "COMMENT {[module-level-comments]}"
    ""
    "{~table-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"
    "COMMENT { [~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
!
!+
!   TABLE statements
!-
DEFINE TOKEN table /PLACEHOLDER=table-statement

DEFINE PLACEHOLDER table-statement -
    /DESCRIPTION="TABLE statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "TABLE"
    "    [boxed-attribute]"
    "    [table-number-attribute]"
    "    [chapter-number-attribute]"
    "    HAS {~number~} COLUMNS"
    "    [title-statement]"
    "    [table-width-statement]"
    ""
    "    [text-widths-statement]"
    "    [proportional-widths]"
    "    [gutter-widths-statement]"
    "    [white-space-statement]"
    ""
    "    [column-defaults-statement]"
    ""
    "    [column-headers-statement]"
    ""
    "    [row-statement]..."
    "    [tab-row-statement]..."
    "END_TABLE"
    ""

    END DEFINE

DEFINE PLACEHOLDER boxed-attribute -
    /DESCRIPTION="BOXED table attribute" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "WHICH IS BOXED OUTLINE, HEADERS, HORIZONTAL, VERTICAL"

    END DEFINE

DEFINE PLACEHOLDER table-number-attribute -
    /DESCRIPTION="table number attribute" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "NUMBER {~table-number~}"

    END DEFINE

DEFINE PLACEHOLDER chapter-number-attribute -
    /DESCRIPTION="chapter number attribute" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "IN CHAPTER {~chapter-number~}"

    END DEFINE

DEFINE TOKEN column /PLACEHOLDER=column-statement

DEFINE PLACEHOLDER column-statement -
    /DESCRIPTION="COLUMN statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "COLUMN [column-attributes] {[text]}"

    END DEFINE

DEFINE TOKEN comment /PLACEHOLDER=comment-statement

DEFINE PLACEHOLDER comment-statement -
    /DESCRIPTION="COMMENT statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "COMMENT {[text]}"

    END DEFINE

DEFINE TOKEN control_character /PLACEHOLDER=control-character-statement

DEFINE PLACEHOLDER control-character-statement -
    /DESCRIPTION="CONTROL_CHARACTER statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "CONTROL_CHARACTER = ""{~control_character~}"""

    END DEFINE

DEFINE TOKEN defaults /PLACEHOLDER=column-defaults-statement

DEFINE PLACEHOLDER column-defaults-statement -
    /DESCRIPTION="column DEFAULTS" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "DEFAULTS"
    "    {~column-statement~}..."
    "END_DEFAULTS"

    END DEFINE

DEFINE TOKEN gutter_widths /PLACEHOLDER=gutter-widths-statement

DEFINE PLACEHOLDER gutter-widths-statement -
    /DESCRIPTION="GUTTER_WIDTHS definition" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "GUTTER_WIDTHS = {~number~}..."

    END DEFINE

DEFINE TOKEN headers /PLACEHOLDER=column-headers-statement

DEFINE PLACEHOLDER column-headers-statement -
    /DESCRIPTION="column HEADERS" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "HEADERS"
    "    {~column-statement~}..."
    "END_HEADERS"

    END DEFINE

DEFINE TOKEN pass_dsr /PLACEHOLDER=pass-dsr-statement

DEFINE PLACEHOLDER pass-dsr-statement -
    /DESCRIPTION="PASS_DSR statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "PASS_DSR {[text]}"

    END DEFINE

DEFINE PLACEHOLDER proportional-widths -
    /DESCRIPTION="PROPORTIONAL_WIDTHS definition" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "PROPORTIONAL_WIDTHS = {~number~}..."

    END DEFINE

DEFINE TOKEN row /PLACEHOLDER=row-statement
    
DEFINE PLACEHOLDER row-statement -
    /DESCRIPTION="ROW statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "ROW"
    "    {~column-statement~}..."
    "END_ROW"

    END DEFINE

DEFINE TOKEN tab_character /PLACEHOLDER=tab-character-statement

DEFINE PLACEHOLDER tab-character-statement -
    /DESCRIPTION="TAB_CHARACTER statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "TAB_CHARACTER = ""{~tab_character~}"""

    END DEFINE

DEFINE TOKEN tab_headers /PLACEHOLDER=tab-headers-statement

DEFINE PLACEHOLDER tab-headers-statement -
    /DESCRIPTION="TAB_HEADERS statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "TAB_HEADERS {[text]}"

    END DEFINE

DEFINE TOKEN tab_row /PLACEHOLDER=tab-row-statement

DEFINE PLACEHOLDER tab-row-statement -
    /DESCRIPTION="TAB_ROW statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "TAB_ROW {[text]}"

    END DEFINE

DEFINE TOKEN text_widths /PLACEHOLDER=text-widths-statement

DEFINE PLACEHOLDER text-widths-statement -
    /DESCRIPTION="TEXT_WIDTHS definition" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "TEXT_WIDTHS"
    "    {~column-statement~}..."
    "END_TEXT_WIDTHS"

    END DEFINE

DEFINE TOKEN title /PLACEHOLDER=title-statement

DEFINE PLACEHOLDER title-statement -
    /DESCRIPTION="TITLE attribute" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "TITLE {~text~}"

    END DEFINE

DEFINE TOKEN white_space /PLACEHOLDER=white-space-statement

DEFINE PLACEHOLDER white-space-statement -
    /DESCRIPTION="WHITE_SPACE line count" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "WHITE_SPACE = {~blank-line-count~}

    END DEFINE

DEFINE TOKEN width /PLACEHOLDER=table-width-statement

DEFINE PLACEHOLDER table-width-statement -
    /DESCRIPTION="table WIDTH attribute" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "WIDTH = {~table-width~}"

    END DEFINE
!
!+
!   In-text commands
!-
DEFINE TOKEN blank_list -
    /DESCRIPTION="BLANK_LIST in-text command" -
    /TOPIC=""

    "\BLANK_LIST\ {~text~} \END_LIST\"

    END DEFINE

DEFINE TOKEN bold -
    /DESCRIPTION="BOLD in-text command" -
    /TOPIC=""

    "\BOLD\ {~text~} \NOBOLD\"

    END DEFINE

DEFINE TOKEN break -
    /DESCRIPTION="BREAK in-text command" -
    /TOPIC=""

    "\BREAK\"

    END DEFINE

DEFINE TOKEN bullet_list -
    /DESCRIPTION="BULLET_LIST in-text command" -
    /TOPIC=""

    "\BULLET_LIST\ {~text~} \END_LIST\"

    END DEFINE

DEFINE TOKEN item -
    /DESCRIPTION="ITEM in-text command" -
    /TOPIC=""

    "\ITEM\"

    END DEFINE

DEFINE TOKEN letter_list -
    /DESCRIPTION="LETTER_LIST in-text command" -
    /TOPIC=""

    "\LETTER_LIST\ {~text~} \END_LIST\"

    END DEFINE

DEFINE TOKEN new_line -
    /DESCRIPTION="NEW_LINE in-text command" -
    /TOPIC=""

    "\NEW_LINE\"

    END DEFINE

DEFINE TOKEN note -
    /DESCRIPTION="NOTE in-text command" -
    /TOPIC=""

    "\NOTE\ {~text~} \NONOTE\"

    END DEFINE

DEFINE TOKEN number_list -
    /DESCRIPTION="NUMBER_LIST in-text command" -
    /TOPIC=""

    "\NUMBER_LIST\ {~text~} \END_LIST\"

    END DEFINE

DEFINE TOKEN paragraph -
    /DESCRIPTION="PARAGRAPH in-text command" -
    /TOPIC=""

    "\PARAGRAPH\"

    END DEFINE

DEFINE TOKEN space -
    /DESCRIPTION="SPACE in-text command" -
    /TOPIC=""

    "\SPACE\"

    END DEFINE

DEFINE TOKEN two_space -
    /DESCRIPTION="TWO_SPACE in-text command" -
    /TOPIC=""

    "\TWO_SPACE\"

    END DEFINE

DEFINE TOKEN underline -
    /DESCRIPTION="UNDERLINE in-text command" -
    /TOPIC=""

    "\UNDERLINE\ {~text~} \NOUNDERLINE\"

    END DEFINE
!
!+
!   Various "number" placeholders
!-
DEFINE PLACEHOLDER number -
    /DESCRIPTION="a decimal number" -
    /DUPLICATION=HORIZONTAL -
    /SEPARATOR="," -
    /TOPIC="" -
    /TYPE=TERMINAL

    "any decimal number"

    END DEFINE

DEFINE PLACEHOLDER chapter-number /PLACEHOLDER=number

DEFINE PLACEHOLDER table-number /PLACEHOLDER=number

DEFINE PLACEHOLDER table-width /PLACEHOLDER=number

DEFINE PLACEHOLDER blank-line-count /PLACEHOLDER=number
!
!+
!   Subordinate placeholders
!-
DEFINE PLACEHOLDER attribute-keyword -
    /DESCRIPTION="COLUMN attribute keyword" -
    /DUPLICATION=HORIZONTAL -
    /SEPARATOR="," -
    /TOPIC="" -
    /TYPE=MENU

    "[NO]BOLD"
    "CENTER"
    "[NO]FILL"
    "FLUSH_LEFT"
    "FLUSH_RIGHT"
    "[NO]JUSTIFY"
    "SPAN"
    "[NO]UNDERLINE"

    END DEFINE

DEFINE PLACEHOLDER control_character -
    /DESCRIPTION="alternate control character" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "alternate control (quoting) character"

    END DEFINE

DEFINE PLACEHOLDER column-attributes -
    /DESCRIPTION="column attributes" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    ": {~attribute-keyword~}..."

    END DEFINE

DEFINE PLACEHOLDER no -
    /DESCRIPTION="""NO"" keyword prefix" -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "NO"

    END DEFINE

DEFINE PLACEHOLDER tab_character -
    /DESCRIPTION="alternate tab character" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "alternate tab character"

    END DEFINE

DEFINE PLACEHOLDER text -
    /DESCRIPTION="string of text" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "any string of text"

    END DEFINE
