aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-07-13 23:59:36 +0200
committerEugen Wissner <belka@caraus.de>2026-07-13 23:59:36 +0200
commit8ceb48a4e60b8ff89f28372da4f66cd152e2e0fe (patch)
treeb5e5522c47de3a7f62cd51a3258bfec7e99c062e /doc
parent500c0676b3f6cd5a2297987d5b0dc7ccf34a28d9 (diff)
downloadelna-8ceb48a4e60b8ff89f28372da4f66cd152e2e0fe.tar.gz
Change record constructor syntax
Diffstat (limited to 'doc')
-rw-r--r--doc/appendix.tex13
-rw-r--r--doc/type-system.tex4
2 files changed, 10 insertions, 7 deletions
diff --git a/doc/appendix.tex b/doc/appendix.tex
index e98da0c..71b0cc4 100644
--- a/doc/appendix.tex
+++ b/doc/appendix.tex
@@ -73,8 +73,13 @@
\alt{} <trait>
\alt{} <cast>
\alt{} <procedure-call>
+ \alt{} <record-constructor>
\alt{} `(' <expression> `)'.
+<record-constructor> = <identifier> `\{' [<field-initializer> \{`,' <field-initializer>\}] `\}'.
+
+<field-initializer> = <identifier> `:' <expression>.
+
<factor> = <unary-operator> <factor> | <reference>.
<term> = <factor> \{<multiplication-operator> <factor>\}.
@@ -142,9 +147,7 @@
| <label-declaration> | <goto-statement> | <while-statement>
| <if-statement> | <case-statement> | $\varepsilon{}$.
-<statement-part> = [`begin' <statements>
- \alt{} `return' <expression>
- \alt{} `begin' <statements> `;' `return' <expression>].
+<statement-part> = [`begin' <statements>].
<constant-declaration> = <identifier-definition> `:=' <expression>.
@@ -167,7 +170,7 @@
<procedure-heading> = `(' [<parameter> \{`;' <parameter>\}] `)' <return-declaration>.
-<procedure-body> = <constant-part> <variable-part> <statement-part> `end'.
+<procedure-body> = <constant-part> <variable-part> <statement-part> [`return' <expression>] `end'.
<procedure-declaration> = `proc' <identifier-definition> <procedure-heading> \\
(<procedure-body> | `extern').
@@ -175,5 +178,5 @@
<program> = <import-part>
<constant-part> <type-part> <variable-part>
\{<procedure-declaration>\}
- <statement-part> `end' `.\@'.
+ <statement-part> [`return' <expression>] `end' `.\@'.
\end{grammar}
diff --git a/doc/type-system.tex b/doc/type-system.tex
index e1497be..102b0e4 100644
--- a/doc/type-system.tex
+++ b/doc/type-system.tex
@@ -65,7 +65,7 @@ end.
<procedure-heading> = `(' [<parameter> \{`;' <parameter>\}] `)' <return-declaration>.
-<procedure-body> = <constant-part> <variable-part> <statement-part> `end'.
+<procedure-body> = <constant-part> <variable-part> <statement-part> [`return' <expression>] `end'.
<procedure-declaration> = `proc' <identifier-definition> <procedure-heading> \\
(<procedure-body> | `extern').
@@ -109,7 +109,7 @@ type
var
u: U;
begin
- u := U(0, 1, 2);
+ u := U{x: 0, y: 1, z: 2};
u.x := 3
end.
\end{lstlisting}