This page describes the March 1, 2007 revisions to the San programming
language specification. There are some new features, the most significant
being “pronouns” and the infinite range of dimensioning. There are a number
of clarifications of obscure passages, and the correction of some outright errors.
description consists of a informal description of the original text, an informal
description of the new text including motivation, and a listing of altered,
delelted, and new sections.
Introduce pronouns and aliases Original text:(none) New text:
Two new features, pronouns and aliases, are added. The at sign, @, is
a pronoun that stands for the target of an assignment statement.
Aliases are a generalization of pronouns.
Aliases contain identifier
component names. Identifiers can contain pronouns as components.
The alias will be replaced by referent name at execution time.
Aliases can change contents at execution time.
Added a section on special identifiers Original text: (none)
A short section on special identifiers has been added to the
identifiers section, 3.4.
Mentioned “self” object in 3.4.4 Original text: Local identifiers reference fields and
aspects of the containing object.
New text: The following two sentences were added: “The
keyword ‘self’ is used to refer the containing object. Local
identifiers can also be naked identifiers.”
Scope of dimensioning Original text:Identifiers can represent multi-dimensional arrays.
New text: San objects are multi-dimensional arrays with arbitrarily
Lists only of vector of fields Original text: Qualifiers can denote sublists of the vector of fields.
New text: They can only the full list.
Clarified the string substitution operator Original text: The original text only discussed what happens with
variables and literals as arguments for the string substitution operator.
New text: Operation with function invocations has been spelled
out along with the treatment of punctuation and special data types.
Add a reference to 6. in 5.4 Original text:There was no link to section 6 in section 5.4.
New text: The string substitution operator can only
produce strings. Identifiers may not be modified; this revision
is needed for compilable code. It also facilitates parsing.
The assignment section was rewritten Original text:There were three subsections on assignment,
entitled Direct assignment, Direct Assignment to Scalar Lists, and
New text: The three aforeaid sections were replaced by two
new sections, 11.2 Assignment syntax, and 11.3 Evaluation order. The
distributed assignment operator, ->, was eliminated. Distributed
assignment was subsumed into list assignment. Evaluation order was
clarified. A new subsection, 11.6 Declarative assignment, was added.
Changed sections:11 Renumbered sections:
11.5 was changed to 11.4, and
11.6 was changed to 11.5.
Eliminate the -> operator Original text:Distributed assignment was done withe ->
New text: References to -> were removed.
Changed sections:3.3 Renumbered sections:
3.3.2 was changed to 3.3.1.