OLD | NEW |
1 \documentclass{article} | 1 \documentclass{article} |
2 \usepackage{epsfig} | 2 \usepackage{epsfig} |
3 \usepackage{color} | 3 \usepackage{color} |
4 \usepackage{dart} | 4 \usepackage{dart} |
5 \usepackage{bnf} | 5 \usepackage{bnf} |
6 \usepackage{hyperref} | 6 \usepackage{hyperref} |
7 \usepackage{lmodern} | 7 \usepackage{lmodern} |
8 \newcommand{\code}[1]{{\sf #1}} | 8 \newcommand{\code}[1]{{\sf #1}} |
9 \title{Dart Programming Language Specification \\ | 9 \title{Dart Programming Language Specification \\ |
10 {\large Version 1.10}} | 10 {\large Version 1.10}} |
(...skipping 4994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5005 {\bf incrementOperator:}`++'; | 5005 {\bf incrementOperator:}`++'; |
5006 `-{}-' | 5006 `-{}-' |
5007 . | 5007 . |
5008 | 5008 |
5009 \end{grammar} | 5009 \end{grammar} |
5010 | 5010 |
5011 \LMHash{} | 5011 \LMHash{} |
5012 A {\em postfix expression} is either a primary expression, a function, method o
r getter invocation, or an invocation of a postfix operator on an expression $e$
. | 5012 A {\em postfix expression} is either a primary expression, a function, method o
r getter invocation, or an invocation of a postfix operator on an expression $e$
. |
5013 | 5013 |
5014 \LMHash{} | 5014 \LMHash{} |
5015 A postfix expression of the form \code{$v$++}, where $v$ is an identifier, is eq
uivalent to \code{()\{var r = $v$; $v$ = r + 1; return r\}()}. | 5015 A postfix expression of the form \code{$v$++}, where $v$ is an identifier, is eq
uivalent to \code{()\{\VAR{} r = $v$; $v$ = r + 1; \RETURN{} r\}()}. |
5016 | 5016 |
5017 \rationale{The above ensures that if $v$ is a field, the getter gets called exac
tly once. Likewise in the cases below. | 5017 \rationale{The above ensures that if $v$ is a field, the getter gets called exac
tly once. Likewise in the cases below. |
5018 } | 5018 } |
5019 %what about e?.x++ | |
5020 | 5019 |
5021 \LMHash{} | 5020 \LMHash{} |
5022 A postfix expression of the form \code{$C.v$ ++} is equivalent to | 5021 A postfix expression of the form \code{$C.v$ ++} is equivalent to |
5023 | 5022 |
5024 \code{()\{var r = $C.v$; $C.v$ = r + 1; return r\}()}. | 5023 \code{()\{\VAR{} r = $C.v$; $C.v$ = r + 1; \RETURN{} r\}()}. |
5025 | 5024 |
5026 \LMHash{} | 5025 \LMHash{} |
5027 A postfix expression of the form \code{$e_1.v$++} is equivalent to | 5026 A postfix expression of the form \code{$e_1.v$++} is equivalent to |
5028 | 5027 |
5029 \code{(x)\{var r = x.v; x.v = r + 1; \RETURN{} r\}($e_1$)}. | 5028 \code{(x)\{\VAR{} r = x.v; x.v = r + 1; \RETURN{} r\}($e_1$)}. |
5030 | 5029 |
5031 \LMHash{} | 5030 \LMHash{} |
5032 A postfix expression of the form \code{$e_1[e_2]$++}, is equivalent to | 5031 A postfix expression of the form \code{$e_1[e_2]$++}, is equivalent to |
5033 | 5032 |
5034 \code{(a, i)\{var r = a[i]; a[i] = r + 1; return r\}($e_1$, $e_2$)}. | 5033 \code{(a, i)\{\VAR{} r = a[i]; a[i] = r + 1; \RETURN{} r\}($e_1$, $e_2$)}. |
5035 | 5034 |
5036 \LMHash{} | 5035 \LMHash{} |
5037 A postfix expression of the form \code{$v$-{}-}, where $v$ is an identifier, is
equivalent to | 5036 A postfix expression of the form \code{$v$-{}-}, where $v$ is an identifier, is
equivalent to |
5038 | 5037 |
5039 \code{()\{var r = $v$; $v$ = r - 1; return r\}()}. | 5038 \code{()\{\VAR{} r = $v$; $v$ = r - 1; \RETURN{} r\}()}. |
5040 | 5039 |
5041 \LMHash{} | 5040 \LMHash{} |
5042 A postfix expression of the form \code{$C.v$-{}-} is equivalent to | 5041 A postfix expression of the form \code{$C.v$-{}-} is equivalent to |
5043 | 5042 |
5044 \code{()\{var r = $C.v$; $C.v$ = r - 1; return r\}()}. | 5043 \code{()\{\VAR{} r = $C.v$; $C.v$ = r - 1; \RETURN{} r\}()}. |
5045 | 5044 |
5046 \LMHash{} | 5045 \LMHash{} |
5047 A postfix expression of the form \code{$e_1.v$-{}-} is equivalent to | 5046 A postfix expression of the form \code{$e_1.v$-{}-} is equivalent to |
5048 | 5047 |
5049 \code{(x)\{var r = x.v; x.v = r - 1; \RETURN{} r\}($e_1$)}. | 5048 \code{(x)\{\VAR{} r = x.v; x.v = r - 1; \RETURN{} r\}($e_1$)}. |
5050 | 5049 |
5051 \LMHash{} | 5050 \LMHash{} |
5052 A postfix expression of the form \code{$e_1[e_2]$-{}-}, is equivalent to | 5051 A postfix expression of the form \code{$e_1[e_2]$-{}-}, is equivalent to |
5053 | 5052 |
5054 \code{(a, i)\{var r = a[i]; a[i] = r - 1; return r\}($e_1$, $e_2$)}. | 5053 \code{(a, i)\{\VAR{} r = a[i]; a[i] = r - 1; \RETURN{} r\}($e_1$, $e_2$)}. |
5055 | 5054 |
| 5055 \LMHash{} |
| 5056 A postfix expression of the form \code{$e_1?.v$++} is equivalent to |
| 5057 |
| 5058 \code{((x) =$>$ x == \NULL? \NULL : x.v++)($e_1$)}. |
| 5059 |
| 5060 \LMHash{} |
| 5061 A postfix expression of the form \code{$e_1?.v$-{}-} is equivalent to |
| 5062 |
| 5063 \code{((x) =$>$ x == \NULL? \NULL : x.v-{}-)($e_1$)}. |
| 5064 |
5056 | 5065 |
5057 \subsection{ Assignable Expressions} | 5066 \subsection{ Assignable Expressions} |
5058 \LMLabel{assignableExpressions} | 5067 \LMLabel{assignableExpressions} |
5059 | 5068 |
5060 \LMHash{} | 5069 \LMHash{} |
5061 Assignable expressions are expressions that can appear on the left hand side of
an assignment. | 5070 Assignable expressions are expressions that can appear on the left hand side of
an assignment. |
5062 This section describes how to evaluate these expressions when they do not consti
tute the complete left hand side of an assignment. | 5071 This section describes how to evaluate these expressions when they do not consti
tute the complete left hand side of an assignment. |
5063 | 5072 |
5064 \rationale{ | 5073 \rationale{ |
5065 Of course, if assignable expressions always appeared {\em as} the left hand side
, one would have no need for their value, and the rules for evaluating them woul
d be unnecessary. However, assignable expressions can be subexpressions of othe
r expressions and therefore must be evaluated. | 5074 Of course, if assignable expressions always appeared {\em as} the left hand side
, one would have no need for their value, and the rules for evaluating them woul
d be unnecessary. However, assignable expressions can be subexpressions of othe
r expressions and therefore must be evaluated. |
(...skipping 2731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7797 | 7806 |
7798 The invariant that each normative paragraph is associated with a line | 7807 The invariant that each normative paragraph is associated with a line |
7799 containing the text \LMHash{} should be maintained. Extra occurrences | 7808 containing the text \LMHash{} should be maintained. Extra occurrences |
7800 of \LMHash{} can be added if needed, e.g., in order to make | 7809 of \LMHash{} can be added if needed, e.g., in order to make |
7801 individual \item{}s in itemized lists addressable. Each \LM.. command | 7810 individual \item{}s in itemized lists addressable. Each \LM.. command |
7802 must occur on a separate line. \LMHash{} must occur immediately | 7811 must occur on a separate line. \LMHash{} must occur immediately |
7803 before the associated paragraph, and \LMLabel must occur immediately | 7812 before the associated paragraph, and \LMLabel must occur immediately |
7804 after the associated \section{}, \subsection{} etc. | 7813 after the associated \section{}, \subsection{} etc. |
7805 | 7814 |
7806 ---------------------------------------------------------------------- | 7815 ---------------------------------------------------------------------- |
OLD | NEW |