1 # PSPP - a program for statistical analysis.
2 # Copyright (C) 2017, 2018, 2019 Free Software Foundation, Inc.
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
22 :style[style_ref]=ref style
26 => visualization_extension?
28 (sourceVariable | derivedVariable)+
37 extension[visualization_extension]
44 userSource :missing=(listwise | pairwise)? => EMPTY # Related to omit_empty?
46 categoricalDomain => variableReference simpleSort
48 simpleSort :method[sort_method]=(custom) => categoryOrder
54 :domain=ref categoricalDomain?
56 :dependsOn=ref sourceVariable?
58 :labelVariable=ref sourceVariable?
59 => variable_extension* (format | stringFormat)?
65 :dependsOn=ref sourceVariable?
66 => variable_extension* (format | stringFormat)? valueMapEntry*
68 extension[variable_extension] :from :helpId => EMPTY
70 valueMapEntry :from :to => EMPTY
77 => location+ coordinates faceting facetLayout interval
80 :part=(height | width | top | bottom | left | right)
81 :method=(sizeToContent | attach | fixed | same)
84 :target=ref (labelFrame | graph | container)?
90 faceting => layer[layers1]* cross layer[layers2]*
92 cross => (unity | nest) (unity | nest)
94 nest => variableReference[vars]+
98 variableReference :ref=ref (sourceVariable | derivedVariable) => EMPTY
101 :variable=ref (sourceVariable | derivedVariable)
104 :method[layer_method]=(nest)?
108 facetLayout => tableLayout setCellProperties[scp1]*
109 facetLevel+ setCellProperties[scp2]*
112 :verticalTitlesInCorner=bool
114 :fitCells=(ticks both)?
117 facetLevel :level=int :gap=dimension? => axis
119 axis :style=ref style => label? majorTicks
123 :textFrameStyle=ref style?
124 :purpose=(title | subTitle | subSubTitle | layer | footnote)?
125 => text+ | descriptionGroup
130 => (description | text)+
132 description :name=(variable | value) => EMPTY
138 :tickFrameStyle=ref style
149 :applyToConverse=bool?
150 => (setStyle | setFrameStyle | setFormat | setMetaData)* union[union_]?
153 :target=ref (labeling | graph | interval | majorTicks)
164 :target=ref (majorTicks | labeling)
166 => format | numberFormat | stringFormat+ | dateTimeFormat | elapsedTimeFormat
170 :target=ref majorTicks
174 :baseFormat[f_base_format]=(date | time | dateTime | elapsedTime)?
177 :mdyOrder=(dayMonthYear | monthDayYear | yearMonthDay)?
182 :yearAbbreviation=bool?
184 :monthFormat=(long | short | number | paddedNumber)?
186 :dayOfMonthPadding=bool?
191 :dayOfWeekAbbreviation=bool?
200 :dayType=(month | year)?
201 :hourFormat=(AMPM | AS_24 | AS_12)?
202 :minimumIntegerDigits=int?
203 :maximumFractionDigits=int?
204 :minimumFractionDigits=int?
206 :scientific=(onlyForSmall | whenNeeded | true | false)?
210 :tryStringsAsNumbers=bool?
211 :negativesOutside=bool?
215 :minimumIntegerDigits=int?
216 :maximumFractionDigits=int?
217 :minimumFractionDigits=int?
219 :scientific=(onlyForSmall | whenNeeded | true | false)?
225 stringFormat => relabel* affix*
228 :baseFormat[dt_base_format]=(date | time | dateTime)
230 :mdyOrder=(dayMonthYear | monthDayYear | yearMonthDay)?
232 :yearAbbreviation=bool?
237 :monthFormat=(long | short | number | paddedNumber)?
242 :dayOfWeekAbbreviation=bool?
244 :dayOfMonthPadding=bool?
253 :dayType=(month | year)?
254 :hourFormat=(AMPM | AS_24 | AS_12)?
258 :baseFormat[dt_base_format]=(date | time | dateTime)
272 :definesReference=int
273 :position=(subscript | superscript)
278 relabel :from=real :to => EMPTY
282 intersect => where+ | intersectWhere | alternating | EMPTY
285 :variable=ref (sourceVariable | derivedVariable)
290 :variable=ref (sourceVariable | derivedVariable)
291 :variable2=ref (sourceVariable | derivedVariable)
298 :definesReference=int?
299 :position=(subscript | superscript)?
303 interval :style=ref style => labeling footnotes?
307 :variable=ref (sourceVariable | derivedVariable)
308 => (formatting | format | footnotes)*
310 formatting :variable=ref (sourceVariable | derivedVariable) => formatMapping*
312 formatMapping :from=int => format?
316 :variable=ref (sourceVariable | derivedVariable)
319 footnoteMapping :definesReference=int :from=int :to => EMPTY
325 :border-bottom=(solid | thick | thin | double | none)?
326 :border-top=(solid | thick | thin | double | none)?
327 :border-left=(solid | thick | thin | double | none)?
328 :border-right=(solid | thick | thin | double | none)?
329 :border-bottom-color?
335 :font-weight=(regular | bold)?
336 :font-style=(regular | italic)?
337 :font-underline=(none | underline)?
338 :margin-bottom=dimension?
339 :margin-left=dimension?
340 :margin-right=dimension?
341 :margin-top=dimension?
342 :textAlignment=(left | right | center | decimal | mixed)?
343 :labelLocationHorizontal=(positive | negative | center)?
344 :labelLocationVertical=(positive | negative | center)?
345 :decimal-offset=dimension?
356 container :style=ref style => container_extension? location+ labelFrame*
358 extension[container_extension] :combinedFootnotes=(true) => EMPTY
360 labelFrame :style=ref style => location+ label? paragraph?
362 paragraph :hangingIndent=dimension? => EMPTY