Tata bahasa Ekspresi
Catatan
Microsoft Power Fx adalah nama baru untuk bahasa rumus untuk aplikasi kanvas. Artikel-artikel ini sedang berlangsung saat kami mengekstrak bahasa dari aplikasi kanvas, mengintegrasikannya dengan produk Microsoft Power Platform lain, dan membuatnya tersedia sebagai sumber terbuka. Mulai dengan Gambaran Umum Microsoft Power Fx untuk pengenalan bahasa.
Microsoft Power Fx didasarkan pada rumus yang mengikat nama ke ekspresi. Sama seperti pada lembar kerja Excel, karena dependensi masuk terhadap perubahan ekspresi, ekspresi akan dihitung ulang dan nilai nama berubah, yang mungkin melakukan kaskading hitung ulang menjadi rumus lain.
Tata bahasa ini mencakup bagian ekspresi rumus. Mengikat nama untuk membuat rumus tergantung pada bagaimana Power Fx terintegrasi. Di lembar kerja, sintaks pengikat tidak diekspos, ia tersirat berdasarkan lokasi ditulisnya ekspresi—misalnya, memasukkan =B1
ke sel A1. Dalam kasus tertentu, tidak ada pernyataan yang diperlukan sama sekali dan Power Fx digunakan sebagai evaluator ekspresi, misalnya dalam mendukung kolom hitung tabel database. Untuk Power Apps, ikatan tersirat bila bekerja di Power Apps Studio dengan format serialisasi berdasarkan YAML untuk digunakan di luar Power Apps Studio.
Aturan tata bahasa
Tata bahasa sintaktis dan leksikal disajikan dengan menggunakan produksi tata bahasa. Setiap produksi tata bahasa mendefinisikan simbol non-terminal dan kemungkinan perluasan simbol non-terminal tersebut ke dalam urutan simbol non-terminal atau terminal. Pada produksi tatabahasa, simbol non-terminal ditampilkan dalam huruf miring, dan simbol terminal ditampilkan dalam font lebar tetap.
Baris pertama produksi tata bahasa adalah nama simbol non-terminal yang didefinisikan, diikuti titik dua. Setiap baris yang terindentasi berturut-rata berisi kemungkinan perluasan simbol non-terminal yang diberikan sebagai urutan simbol non-terminal atau terminal. Misalnya, produksi:
Pengidentifikasi Global:
[@
Pengenal]
Mendefinisikan GlobalIdentifier untuk terdiri dari token [@
, diikuti oleh Pengidentifikasi, diikuti token ]
.
Bila terdapat lebih dari satu kemungkinan perluasan simbol non-terminal, alternatif akan tercantum pada baris terpisah. Subskrip "opt" digunakan untuk menunjukkan simbol opsional. Misalnya, produksi:
Panggilan Fungsi:
FunctionIdentifier(
FunctionArgumentsopt)
Adalah singkatan untuk:
Panggilan Fungsi:
Pengidentifikasi Fungsi(
)
FunctionIdentifierArgumentasi(
Fungsi)
Alternatif biasanya tercantum pada baris terpisah, meskipun dalam kasus dengan banyak alternatif, frasa "one of" dapat mendahului daftar perluasan yang diberikan pada satu baris. Ini hanya singkatan untuk daftar setiap alternatif pada baris terpisah.
Misalnya, produksi:
DecimalDigit: salah satu dari
0
1
2
3
4
5
6
7
8
9
Adalah singkatan untuk:
Digit Desimal:
0
1
2
3
4
5
6
7
8
9
Analisis leksikal
Produksi unit leksikal mendefinisikan tata bahasa inggris untuk ekspresi Power Fx. Setiap ekspresi Power Fx yang valid sesuai dengan tata bahasa ini.
EkspresiUnit :
ExpressionElementsopt
Elemen Ekspresi:
Elemen Ekspresi
ExpressionElementExpressionElementsopt
Elemen Ekspresi:
Spasi
Komentar
Pada tingkat leksikal, ekspresi Power Fx terdiri dari aliran Whitespace, Komentar, dan elemen Token. Setiap produksi ini tercakup dalam bagian berikut. Hanya elemen Token yang signifikan dalam tata letak sintaktis.
Spasi
Whitespace digunakan untuk memisahkan komentar dan token dalam dokumen Power Apps.
Ruang kosong:
segala pemisah Spasi Unicode (kelas Zs)
segala pemisah baris Unicode (kelas Zl)
segala pemisah paragraf Unicode (kelas Zp)
Karakter tab horizontal (U+0009)
Karakter umpan baris (U+000A)
Karakter tab vertikal (U+000B)
Karakter umpan formulir (U+000C)
Karakter Carriage return (U+000D)
Karakter baris berikutnya (U+0085)
Komentar
Dua formulir komentar didukung:
- Komentar satu baris yang dimulai dengan karakter
//
dan diperluas ke akhir baris sumber. - Komentar berpemisah yang diawali dengan karakter
/*
dan diakhiri dengan karakter*/
. Komentar yang dibatasi dapat menjangkau beberapa baris.
Komentar:
Komentar yang Dibatasi
Komentar Baris Tunggal
Komentar Garis Tunggal:
//
Pilihan SingleLineCommentCharacters
Karakter Komentar Baris Tunggal:
Karakter Komentar Baris Tunggal
SingleLineCommentCharacterSingleLineCommentCharactersopt
Karakter Komentar Tunggal:
semua karakter Unicode kecuali NewLineCharacter
DelimitedComment:
/*
DelimitedCommentCharactersopt*/
Karakter Komentar yang Dibatasi:
DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk:
semua karakter Unicode kecuali * (tanda bintang)
DelimitedCommentNoSlashAsteriskKarakter:
semua karakter Unicode kecuali / (garis miring) atau * (tanda bintang)
Komentar tidak dikurung. Urutan karakter /*
dan */
tidak memiliki arti khusus dalam komentar satu baris dan urutan karakter //
serta /*
tidak memiliki arti khusus dalam komentar berpemisah.
Komentar tidak diproses dalam string literal teks.
Contoh berikut mencakup dua komentar yang berpemisah:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
Contoh berikut mencakup tiga komentar satu baris:
// Hello, world
//
"Hello, world" // This is an example of a text literal
Literal
literal adalah representasi kode sumber suatu nilai.
Literal:
Literal Logis
Angka Literal
TextLiteral
Literal logis
literal logis digunakan untuk menulis nilai yang benar dan salah, dan menghasilkan nilai logika.
LogicalLiteral:salah satu dari
true
false
Literal angka
literal angka digunakan untuk menulis nilai numerik dan menghasilkan nilai angka.
Nomorliteral:
DecimalDigitsExponentPartopt
DecimalDigits DecimalSeparator DecimalDigitsopt ExponentPart...opt...
DecimalSeparatorDecimalDigitsExponentPartopt
Digit Desimal:
Digit Desimal
DigitsDigitDesimalDigit
DecimalDigit: salah satu dari
0
1
2
3
4
5
6
7
8
9
ExponentPart:
Tanda ExponentIndicator...optDecimalDigits
ExponentIndicator: salah satu dari
e
E
Literal teks
Teks literal digunakan untuk menulis urutan karakter Unicode dan menghasilkan nilai teks. Literal teks dikurangkan dalam tanda kutip ganda. Untuk mencakup tanda kutip ganda dalam nilai teks, ulangi tanda kutip ganda, seperti ditunjukkan dalam contoh berikut:
"The ""quoted"" text" // The "quoted" text
TextLiteral:
"
TextLiteralCharactersmemilih"
Karakter TextLiteral:
TextLiteralCharacterTextLiteralCharactersmemilih
Karakter Literal Teks:
TextCharacterNoDoubleQuote
Urutan EscapeKutipan Ganda
TextCharacterNoDoubleQuote:
setiap titik kode Unicode kecuali tanda kutip ganda
DoubleQuoteEscapeSequence:
"
"
Identifiers
Pengidentifikasi adalah nama yang digunakan untuk merujuk ke nilai. Pengidentifikasi dapat berupa pengidentifikasi biasa atau satu pengidentifikasi bertanda kutip tunggal.
Pengidentifikasi:
IdentifierNametetapibukanOperatoratauContextKeyword
Nama Pengidentifikasi:
IdentifierStartCharacterIdentifierContinueCharactersopt
'
Pengidentifikasi Kutipan Tunggal'
IdentifierStartCharacter:
Karakter Huruf
_
IdentifierContinueCharacter:
IdentifierStartCharacter
Karakter DigitDesimal
MenghubungkanKarakter
MenggabungkanKarakter
Pemformatan Karakter
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
Karakter Surat:
karakter Unicode apa pun dari huruf besar (Lu) atau huruf kecil (Ll)
segala karakter Unicode dari kelas huruf Judul (Lt)
Karakter Unicode apa pun dari pemodifikasi huruf (Lm) atau Huruf lainnya (Lo)
segala karakter Unicode dari kelas huruf angka (Nl)
MenggabungkanKarakter:
Setiap karakter Unicode dari tanda Non-spasi (Mn) atau tanda penggabungan Spasi (Mc)
Karakter DigitDesimal:
karakter Unicode dari kelas digit Desimal (Nd)
MenghubungkanKarakter:
setiap karakter Unicode dari kelas tanda baca Konektor (Pc)
Karakter Pemformatan:
semua karakter Unicode dari kelas Format (Cf)
Pengidentifikasi tanda kutip tunggal
Pengidentifikasi kuotasi tunggal dapat berisi urutan karakter Boolean yang akan digunakan sebagai pengidentifikasi, termasuk kata kunci, spasi, komentar, dan operator. Karakter tanda kutip tunggal didukung dengan urutan escape dari dua tanda kutip tunggal.
Pengidentifikasi Tunggal:
Karakter Pengidentifikasi Tunggal
Karakter SingleQuotedIdentifier:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt
Karakter SingleQuotedIdentifier:
Karakter TeksTanpa Kutipan Tunggal
Urutan EscapeKutipan Tunggal
TextCharactersNoSingleQuote:
semua karakter Unicode kecuali ' (U+0027)
Urutan EscapeKutipan Tunggal:
'
'
Pengidentifikasi penjelas
DisambiguatedIdentifier:
Pengidentifikasi Tabel Kolom
Pengidentifikasi Global
TableColumnIdentifier:
Pengidentifikasi Pengidentifikasi[@
...]
Pengidentifikasi Global:
[@
Pengenal]
Kata kunci konteks
Kata Kunci Konteks:
Parent
Self
ThisItem
ThisRecord
Kepekaan besar huruf
Pengidentifikasi Power Apps bersifat peka besar huruf. Alat penulisan akan secara otomatis mengubahnya ke besar huruf yang benar saat rumus sedang ditulis.
Pemisah
Pemilah Desimal:
.
(titik) untuk bahasa yang menggunakan titik sebagai pemisah angka desimal, misalnya 1.23
,
(koma) untuk bahasa yang menggunakan koma sebagai pemisah angka desimal, misalnya 1,23
Pemisah Daftar:
,
(koma) jika DecimalSeparator adalah .
(titik)
;
(titik koma) jika DecimalSeparator adalah ,
(koma)
ChainingSeparator:
;
(titik koma) jika DecimalSeparator adalah .
(titik)
;;
(titik koma ganda) jika DecimalSeparator adalah ,
(koma)
Operators
Operator digunakan dalam rumus untuk mendeskripsikan operasi yang melibatkan satu atau beberapa operan. Contohnya, ekspresi a + b
menggunakan operator +
untuk menambahkan dua operan a
dan b
.
Operator:
Operator Biner
BinaryOperatorRequiresWhitespace
AwalanOperator
PrefixOperatorRequiresWhitespace
Operator Pascafix
BinaryOperator:salah satu dari
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
Spasi
Or
Spasi
PrefixOperatorRequiresWhitespace:
Not
Spasi
Operator referensi
ReferenceOperator:salah satu dari
.
!
Referensi objek
Referensi:
Referensi Dasar
Daftar Referensi BaseReferenceOperator...
Referensi Dasar:
Pengenal
Pengidentifikasi Disambiguasi
Kata Kunci Konteksi
Daftar Referensi:
Pengenal
Daftar Referensi PengidentifikasiOperator...
Rekaman inline
Catatan Sebaris:
{
Pilihan InlineRecordList}
DaftarRekamanInline:
Pengidentifikasi:
Ekspresi
Pengenal:
EkspresiListSeparatorInlineRecordList
Tabel inline
Tabel Sebaris:
[
DaftarTabelSebarispilih]
DaftarTabelSebaris:
Ekspresi
EkspresiPemisahDaftarDaftarTabelSebaris
Expression
Ekspresi:
Harfiah
Referensi
Rekaman Sebaris
Tabel Sebaris
Panggilan Fungsi
(
Ekspresi)
PrefixOperatorEkspresi
EkspresiOperator Postfix
EkspresiBinaryOperatorEkspresi
Ekspresi berantai
Ekspresi Berantai:
Ekspresi
EkspresiPemisah RantaiEkspresi Berantaiopt
Panggilan fungsi
Panggilan Fungsi:
Pengidentifikasi Fungsi(
Argumen Fungsiopt)
Pengidentifikasi Fungsi:
Pengidentifikasi
Pengidentifikasi.
FungsiPengidentifikasi
Argumen Fungsi:
Ekspresi Berantai
EkspresiBerantaiPemisahDaftarArgumenFungsi