Document format strings.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 11 Jan 2016 01:00:11 +0000 (17:00 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 11 Jan 2016 01:00:11 +0000 (17:00 -0800)
notes
spv-file-format.texi

diff --git a/notes b/notes
index 811a7a1177f41660ecab599a2a75b898ed08c04d..56cd437c7594d7ec114ce38dfe9f96b2d111223b 100644 (file)
--- a/notes
+++ b/notes
@@ -2716,6 +2716,14 @@ Within Subjects Design: Looks+Charisma+Looks*Charisma
         </substitution>
     </template>
 
+<footnote index="0">
+    <special0 template="Predictors\: (constant) [%1:, ^1:]1..."/>
+<template format="Predyktory\: (Stała), [%1:, ^1:]1">
+        <substitution index="1">
+            <variable name="PPZśrednia"/>
+        </substitution>
+    </template>
+</footnote>
 
 Dependent Variable: Num_Diagnostic
 Model: (Intercept), functdent, Sex, nursebeds, BaseAge, offset = log_period_yr
index cb2cae75b42a893f51167a8ffae83aa93c839845..a0b5e1449ebe0f2778957de5964ec8af200aa916 100644 (file)
@@ -59,7 +59,7 @@ The structure of a chart plus its data.  Charts do not have a
 @itemx @var{prefix}_pmml.scf
 Not yet investigated.  The corpus contains only one example of each.
 
-@itemx @var{prefix}_stats.xml
+@item @var{prefix}_stats.xml
 Not yet investigated.  The corpus contains few examples.
 @end table
 
@@ -629,27 +629,10 @@ raw-value :=
   | 04 value-mod int32[format] string[vallab] string[varname]
     (01 | 02 | 03) string[s]
   | 05 value-mod string[varname] string[varlabel] (01 | 02 | 03)
-  | value-mod string[format] int32[n-substs] substitution*[n-substs]
-substitution :=
+  | value-mod string[format] int32[n-args] arg*[n-args]
+arg :=
     i0 value
-  | int32[x] value*[x + 1]      /* @r{x > 0} */
-value-mod :=
-    31 i0 (i0 | i1 string[subscript]) value-mod-i0-v1 /* @r{version 1} */
-  | 31 i0 (i0 | i1 string[subscript]) value-mod-i0-v3 /* @r{version 3} */
-  | 31 i1 int32[footnote-number] template
-  | 31 i2 (00 | 01 | 02) 00 (i1 | i2 | i3) template
-  | 31 i3 00 00 01 00 i2 template
-  | 58
-value-mod-i0-v1 := 00 (i1 | i2) 00 00 int32 00 00
-value-mod-i0-v3 := count(template-string
-                         (58 | 31 style)
-                         (58
-                          | 31 i0 i0 i0 i0 01 00 (01 | 02 | 08)
-                            00 08 00 0a 00))
-
-style := 01? 00? 00? 00? 01 string[fgcolor] string[bgcolor] string[font] byte
-template := 00 00 count(template-string (58 | 31 style) 58)
-template-string := count((i0 (58 | 31 string))?)
+  | int32[x] i0 value*[x + 1]      /* @r{x > 0} */
 @end example
 
 A @code{value} boils down to a number or a string.  There are several
@@ -716,4 +699,91 @@ Variable @code{varname}, which is rarely observed as empty in the
 corpus, with variable label @code{varlabel}, which is often empty.
 
 The meaning of the final byte is unknown.
-@end itemize
+
+@item 31
+@itemx 58
+(These bytes begin a @code{value-mod}.)  A format string, analogous to
+@code{printf}, followed by one or more arguments, each of which has
+one or more values.  The format string uses the following syntax:
+
+@table @code
+@item \%
+@item \:
+@item \[
+@item \]
+Each of these expands to the character following @samp{\\}.  This is
+useful to escape characters that have special meaning in format
+strings.  These are effective inside and outside the @code{[@dots{}]}
+syntax forms described below.
+
+@item \n
+Expands to a new-line, inside or outside the @code{[@dots{}]} forms
+described below.
+
+@item ^@var{i}
+Expands to a formatted version of argument @var{i}, which must have
+only a single value.  For example, @code{^1} would expand to the first
+argument's @code{value}.
+
+@item [:@var{a}:]@var{i}
+Expands @var{a} for each of the @code{value}s in @var{i}.  @var{a}
+should contain one or more @code{^@var{j}} conversions, which are
+drawn from the values for argument @var{i} in order.  Some examples
+from the corpus:
+
+@table @code
+@item [:^1:]1
+All of the values for the first argument, concatenated.
+
+@item [:^1\n:]1
+Expands to the values for the first argument, each followed by
+a new-line.
+
+@item [:^1 = ^2:]2
+Expands to @code{@var{x} = @var{y}} where @var{x} is the second
+argument's first value and @var{y} is its second value.  (This would
+be used only if the argument has two values.  With additional values,
+the second and third values would be directly concatenated, which
+would look funny.)
+@end table
+
+@item [@var{a}:@var{b}:]@var{i}
+This extends the previous form so that the first values are expanded
+using @var{a} and later values are expanded using @var{b}.  For an
+unknown reason, within @var{a} the @code{^@var{j}} conversions are
+instead written as @code{%@var{j}}.  Some examples from the corpus:
+
+@table @code
+@item [%1:*^1:]1
+Expands to all of the values for the first argument, separated by
+@samp{*}.
+
+@item [%1 = %2:, ^1 = ^2:]1
+Given appropriate values for the first argument, expands to @code{X =
+1, Y = 2, Z = 3}.
+
+@item [%1:, ^1:]1
+Given appropriate values, expands to @code{1, 2, 3}.
+@end table
+@end table
+@end table
+
+@example
+value-mod :=
+    31 i0 (i0 | i1 string[subscript]) value-mod-i0-v1 /* @r{version 1} */
+  | 31 i0 (i0 | i1 string[subscript]) value-mod-i0-v3 /* @r{version 3} */
+  | 31 i1 int32[footnote-number] format
+  | 31 i2 (00 | 01 | 02) 00 (i1 | i2 | i3) format
+  | 31 i3 00 00 01 00 i2 format
+  | 58
+value-mod-i0-v1 := 00 (i1 | i2) 00 00 int32 00 00
+value-mod-i0-v3 := count(format-string
+                         (58 | 31 style)
+                         (58
+                          | 31 i0 i0 i0 i0 01 00 (01 | 02 | 08)
+                            00 08 00 0a 00))
+
+style := 01? 00? 00? 00? 01 string[fgcolor] string[bgcolor] string[font] byte
+format := 00 00 count(format-string (58 | 31 style) 58)
+format-string := count((i0 (58 | 31 string))?)
+@end example