2.7 KiB
2.7 KiB
Exemples / DO-DON'T — Chapitre 2 — Principes généraux du langage
Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
Exemples extraits du chapitre
Exemple 1
and comme alias de &&
or comme alias de ||
=== en plus de l'identité explicite
++ et --
ternaire ?: si les formes productrices de `match`/`if` avec `emit` couvrent le besoin
Exemple 2
&& / || short-circuit
& / | / ^ logique eager sur bool
Exemple 3
keywords
identifiers
numeric literals
operators
punctuation
syntactic whitespace
namespace syntax
Exemple 4
String literals
char literals
ordinary comments
Saseldoc comments
Exemple 5
U+0020 SPACE
U+0009 TAB
U+000A LF
U+000D CR
Exemple 6
[A-Za-z_][A-Za-z0-9_]*
Exemple 7
_value // utilisateur autorisé
__value // réservé interne
Exemple 8
( ) grouping, calls, control headers, parameters
[ ] indexing et constructions définies par leur grammaire
{ } blocks et constructions à accolades
; fin d'un statement ou d'une déclaration sans corps
, séparation de deux éléments ; séparateur de listes init/update dans for
. qualification de namespace
:: qualification de membre/symbole
=> séparateur grammatical pattern -> bloc dans match
= assignment
+ - * / % arithmetic
& | ^ ~ bitwise/logical selon type ; | sépare aussi les alternatives d'un pattern
! logical negation / !=
< > comparaison, shifts et syntaxe générique selon contexte
.. famille de délimiteurs de Range, avec >.., ..< et >..<
' char delimiter
" String delimiter
_ identifiant / séparateur numérique / wildcard de pattern selon contexte
Exemple 9
# raw-string delimiter et shebang autorisé seulement selon sa règle dédiée
@ réservé hors commentaires/Saseldoc
$ réservé, notamment pendant la finalisation de l'interpolation
? réservé sans sémantique V1 encore attribuée
` réservé/interdit à l'utilisateur
\ uniquement selon les règles d'escape des littéraux
Exemple 10
Map<String,List<int32>>
Exemple 11
{
int32 myvar = 42;
}
Exemple 12
String text = "abc";
text::append("def"); // OK si append est une méthode mutante de String
DO / DON'T / WHY / compiler error / edge cases
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.
Explicite plutôt qu'ambigu
Lorsqu'une forme légèrement plus longue supprime un implicite ou une ambiguïté réelle, Saselang la préfère à une syntaxe plus courte.