DSSSL Syntactic Productions Repeated

Copyright © 1996 Harvey Bingham

The productions for core DSSSL repeat many syntactic variable names (shown in bold) that also appear in full DSSSL. The names and definitions follow. The production numbers of full DSSSL expression language have values less that 120. The production numbers between [120] and [145] redefine some of the syntactic variables for the core DSSSL expression language. Some of these have the same definitions, shown only once, [cpn=fpn]. Other have different definitions, the full DSSSL one is shown first as [fpn#cpn], then the core definition [cpn#fpn]. The initial hyperlinks before the bold syntactic variable being defined, and a single [pn] in a definition are links to the DSSSL Syntax Summary where the additional "used in" information is provided. The hyperlinks [cpn#fpn] and [cpn=fpn] used in a definition are local to this document.

Note that the repeated productions may share the same apparent definition, but the corresponding definitions for syntactic variable names used in the common definition may differ.

Production Pairs with Same Syntactic Variable Name

[120=16] expression =
primitive-expression[121#17] | derived-expression[137#41]
[17#121] primitive-expression =
variable-reference[18=122] | literal[22=124] | procedure-call[27=130] | lambda-expression[30] | conditional[37=133]
[121#17] primitive-expression =
variable-reference[122=18] | literal[124=22] | procedure-call[130=27] | conditional[133=37]
[122=18] variable-reference =
variable[123=19]
[123=19] variable =
identifier[1]
[124=22] literal =
quotation[125=23] | self-evaluating[129#26]
[125=23] quotation =
"'" datum[126=24] | "(" "quote" datum[126=24] ")"
[126=24] datum =
simple-datum[127#25] | list[128#71]
[25#127] simple-datum =
boolean[70] | number[78] | character[94] | string[118] | symbol[74] | keyword[75] | named-constant[76] | glyph-identifier[186]
[127#25] simple-datum =
boolean[70] | number[78] | character[94] | string[118] | symbol[74] | keyword[75] | glyph-identifier[186]
[71#128] list =
"(" datum[24=126]* ")" | "(" datum[24=126]+ "." datum[24=126] ")" | abbreviation[72]
[128#71] list =
"(" datum[126=24]* ")" | "'" datum[126=24]
[26#129] self-evaluating =
boolean[70] | number[78] | character[94] | string[118] | keyword[75] | named-constant[76] | glyph-identifier[186]
[129#26] self-evaluating =
boolean[70] | number[78] | character[94] | string[118] | keyword[75] | glyph-identifier[186]
[130=27] procedure-call =
"(" operator[131=28] operand[132=29]* ")"
[131=28] operator =
expression[120=16]
[132=29] operand =
expression[120=16]
[133=37] conditional =
"(" "if" test[134=38] consequent[135=39] alternate[136=40] ")"
[134=38] test =
expression[120=16]
[135=39] consequent =
expression[120=16]
[136=40] alternate =
expression[120=16]
[41#137] derived-expression =
cond-expression[42=138] | case-expression[45=140] | and-expression[48=143] | or-expression[49=144] | binding-expression[50] | named-let[57] | quasiquotation[58]
[137#41] derived-expression =
cond-expression[138=42] | case-expression[140=45] | and-expression[143=48] | or-expression[144=49]
[138=42] cond-expression =
"(" "cond" cond-clause[139#43]+ ")" | "(" "cond" cond-clause[139#43]* "(" "else" expression[120=16] ")" ")"
[43#139] cond-clause =
"(" test[38=134] expression[16=120] ")" | "(" test[38=134] ")" | "(" test[38=134] "=>" recipient[44] ")"
[139#43] cond-clause =
"(" test[134=38] expression[120=16] ")"
[140=45] case-expression =
"(" "case" key[141=46] case-clause[142=47]+ ")" | "(" "case" key[141=46] case-clause[142=47]* "(" "else" expression[120=16] ")" ")"
[141=46] key =
expression[120=16]
[142=47] case-clause =
"(" "(" datum[126=24]* ")" expression[120=16] ")"
[143=48] and-expression =
"(" "and" test[134=38]* ")"
[144=49] or-expression =
"(" "or" test[134=38]* ")"
[66#145] definition =
variable-definition[67] | procedure-definition[68]
[145#66] definition =
"(" "define" variable[123=19] expression[120=16] ")"

The following repeated pair occur in the transformation language and the style language respectively.

[155=167] priority-expression =
expression[16=120]

DSSSL Syntax Summary Index

Original converted to HTML 14 April 1996
Version 1.4 28 May 1996 added missing occurrence indicators and syntactic variables occurring more than once in the same definition
Version 1.6 25 Jun 1996 removed redunant NAME="Pxx", added copyright restriction notice

Version 2.1 2002-10-24 Changed ISP from rcn to hbingham.com.

Harvey Bingham's home page
email hbingham@ACM.org

Copyright restrictions:
This material may be used freely for the purposes of studying DSSSL and promoting its application. This copyright notice shall be included in any subsequent copies. The author reserves the right to update this material and to determine the primary server on which it is available.