Gramatika izraza
Napomena
Microsoft Power Fx novo je ime za jezik formula za aplikacije od gotovih gradivnih elemenata. Ovi su članci nedovršeni dok izdvajamo jezik iz aplikacija od gotovih gradivnih elemenata i integriramo ga s drugim Microsoft Power Platform proizvoda i činimo ga dostupnim kao otvoreni kod. Počnite s odjeljkom Pregled jezika Microsoft Power Fx za uvod u jezik.
Microsoft Power Fx temelji se na formulama koje ime vežu uz izraz. Baš kao u proračunskim tablicama programa Excel, kako se mijenjaju ulazne ovisnosti o izrazu, izraz se preračunava i vrijednost imena mijenja, moguće je kaskadno preračunavanje u druge formule.
Ova gramatika pokriva dio formule s izrazom. Povezivanje s nazivom za stvaranje formule ovisi o načinu integracije Power Fx. U proračunskim tablicama sintaksa vezanja nije izložena, to se podrazumijeva mjestom na kojem je zapisan izraz—na primjer, unos vrijednosti =B1
u ćeliju A1. U nekim slučajevima povezivanje uopće nije potrebno, a Power Fx se koristi kao procjenitelj izraza, na primjer u podržavanju izračunatih stupaca tablice baze podataka. Za Power Apps povezivanje se podrazumijeva pri radu na usluzi Power Apps Studio s formatom serializacije zasnovan na YAML-u za upotrebu izvan usluge Power Apps Studio.
Gramatičke konvencije
Leksička i sintaktička gramatika predstavljene su upotrebom gramatičkih produkcija. Svaka gramatička produkcija definira neterminalni simbol i moguća proširenja tog neterminalnog simbola u sekvence neterminalnih ili terminalnih simbola. U gramatičkim produkcijama neterminalni simboli prikazani su kurzivom, a terminalni simboli fontom fiksne širine.
Prvi redak gramatičke produkcije naziv je neterminalnog simbola koji se definira, a iza njega slijedi dvotočka. Svaka uzastopna uvučena crta sadrži moguće proširenje neterminalnog simbola danog kao niz neterminalnih ili terminalnih simbola. Primjerice, produkcija:
Globalni identifikator:
[@
Identifikator]
definira GlobalIdentifier da se sastoji od tokena [@
, nakon čega slijedi Identifikator, nakon čega slijedi token ]
.
Kada postoji više od jednog mogućeg proširenja neterminalnog simbola, alternative su navedene u odvojenim redovima. Indeks "opt" koristi se za označavanje neobaveznog simbola. Primjerice, produkcija:
FunctionCall:
FunctionIdentifier(
FunctionArgumentsopt)
skraćenica je za:
FunctionCall:
Identifikator funkcije(
)
FunctionIdentifier(
FunctionArguments)
Alternative su obično navedene u odvojenim retcima, iako u slučajevima kada postoji mnogo alternativa, izraz "jedan od" može prethoditi popisu proširenja navedenih u jednom retku. Ovo je jednostavno stenografija za popisivanje svake od alternativa u zasebnim retcima.
Primjerice, produkcija:
DecimalDigit:jedan od
0
1
2
3
4
5
6
7
8
9
skraćenica je za:
Decimalna znamenka:
0
1
2
3
4
5
6
7
8
9
Leksička analiza
Proizvodnja leksičke jedinice definira leksičku gramatiku za izraz Power Fx. Svaki valjani izraz Power Fx u skladu je s ovom gramatikom.
ExpressionUnit:
ExpressionElementsopt
ExpressionElements:
Element izraza
ExpressionElementExpressionElementsopt
Element izraza:
Razmak
Komentar
Na leksičkoj razini izraz Power Fx sastoji se od toka elemenata Razmak, Komentar i Token. Svaka od ovih produkcija obrađena je u sljedećim odjeljcima. Samo su elementi Token značajni u sintaktičkoj gramatici.
Razmaknica
Razmak se koristi za odvajanje komentara i tokena unutar dokumenta Power Apps.
Razmak:
bilo koji Unicode razdjelnik prostora (klasa Zs)
bilo koji Unicode razdjelnik retka (klasa ZI)
bilo koji razdjelnik paragrafa Unicode (klasa Zp)
Vodoravni znak kartice (U+0009)
Znak uvlačenja retka (U+000A)
Okomiti znak kartice (U+000B)
Znak uvlačenja obrasca (U+000C)
Znak prelaska u novi red (U+000D)
Znak sljedećeg retka (U+0085)
Komentari
Podržana su dva oblika komentara:
- Komentari u jednom redu koji započinju znakovima
//
i protežu se do kraja izvornog retka. - Razgraničeni komentari koji započinju znakovima
/*
, a završavaju znakovima*/
. Razgraničeni komentari mogu obuhvaćati više redaka.
Napomena:
RazgraničenoKomentar
SingleLineComment
SingleLineComment:
//
SingleLineCommentCharacterschoose
SingleLineCommentCharacters:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharacterschoose
SingleLineCommentCharacter:
bilo koji Unicode znakovi osim NewLineCharacter
RazdvojeniKomentar:
/*
DelimitedCommentCharacterschoose*/
DelimitedCommentCharacters:
RazgraničenoKomentarLikoviNeZvjezdicaRazgraničenaKomentarZnakovise odluče
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
RazgraničenoKomentarNoKosa crtaZvjezdicaRazgraničen znakKomentarZnakovi...se odluče
*
DelimitedCommentAfterAsteriskCharacters
RazgraničenoKomentarLikoviBez zvjezdice:
bilo koji Unicode znak osim * (zvjezdica)
DelimitedCommentNoSlashAsteriskCharacter:
bilo koji Unicode znak osim / (kosa crta) ili * (zvjezdica)
Komentari nisu ugniježđeni. Slijedovi znakova /*
i */
nemaju posebno značenje unutar komentara u jednom retku i slijedovi znakova //
i /*
nemaju posebno značenje unutar razgraničenog komentara.
Komentari se ne obrađuju unutar nizova s tekstualnim doslovnim vrijednostima.
Sljedeći primjer uključuje dva razgraničena komentara:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
Sljedeći primjeri uključuju tri komentara u jednom redu:
// Hello, world
//
"Hello, world" // This is an example of a text literal
Doslovne vrijednosti
Doslovna vrijednost je reprezentacija je izvornog koda vrijednosti.
Doslovno:
LogičkiDoslovni
BrojDoslovno
TextLiteral
Logičke doslovne vrijednosti
Logička doslovna vrijednost koristi se za zapisivanje vrijednosti true i false te stvaranje logičke vrijednosti.
LogicalLiteral:jedan od
true
false
Brojčane doslovne vrijednosti
Doslovna vrijednost broja koristi se za zapisivanje numeričke vrijednosti i stvaranje brojevne vrijednosti.
BrojDoslovno:
DecimalDigitsExponentPartopt
DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
DecimalSeparatorDecimalDigitsExponentPartopt
Decimalne znamenke:
Decimalna znamenka
DecimalDigitsDecimalDigit
DecimalDigit:jedan od
0
1
2
3
4
5
6
7
8
9
Eksponentni dio:
ExponentIndicatorSignoptDecimalDigits
ExponentIndicator: jedan od
e
E
Tekstne doslovne vrijednosti
Doslvna vrijednost teksta koristi se za pisanje niza Unicode znakova i stvaranje tekstualne vrijednosti. Doslovne vrijednosti teksta odvojene su dvostrukim navodnicima. Da biste u tekstualnu vrijednost uključili dvostruke navodnike, ponovite dvostruke navodnike, kao što je prikazano u sljedećem primjeru:
"The ""quoted"" text" // The "quoted" text
TextLiteral:
"
TextLiteralCharacterschoose"
TextLiteralCharacters:
TextLiteralCharacterTextLiteralCharactersopt
TextLiteralCharacter:
TextCharacterNoDoubleQuote
DoubleQuoteEscapeSequence
TextCharacterNoDoubleQuote:
bilo koja Unicode kodna točka osim dvostrukih navodnika
DoubleQuoteEscapeSequence:
"
"
Identifikatori
Identifikator je naziv koji se koristi za upućivanje na vrijednost. Identifikatori mogu biti uobičajeni identifikatori ili identifikatori s jednostrukim navodnicima.
Identifikator:
IdentifierName, aline ioperatoriliContextKeyword
IdentifierName:
IdentifierStartCharacterIdentifierContinueCharactersopt
'
SingleQuotedIdentifier'
IdentifierStartCharacter:
SlovoZnak
_
IdentifierContinueCharacter:
IdentifierStartCharacter
Decimalni_znamenkasti znak
Povezujući lik
KombiniranjeLik
FormattingCharacter
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
SlovoZnak:
bilo koji Unicode znak klase Veliko slovo (Lu) ili Malo slovo (Ll)
bilo koji Unicode znak klase Slovo naslova (Lt)
bilo koji Unicode znak klase Modifikator slova (Lm) ili Drugo slovo (Lo)
bilo koji Unicode znak klase Slovo broja (Nl)
Kombinirani lik:
bilo koji Unicode znak klase Oznaka bez razmaka (Mn) ili Oznaka s kombinacijom razmaka (Mc)
DecimalDigitCharacter:
bilo koji Unicode znak klase Decimalni brojevi (Nd)
Povezujući lik:
bilo koji Unicode znak klase Interpunkcija poveznika (Pc)
FormattingCharacter:
bilo koji Unicode znak klase Format (Cf)
Identifikatori s jednostrukim navodnicima
Identifikator s jednostrukim navodnicima može sadržavati bilo koji slijed Unicode znakova koji će se koristiti kao identifikator, uključujući ključne riječi, razmake, komentare i operatore. Znakovi s jednostrukim navodnicima podržani su s izlaznim slijedom od dva jednostruka navodnika.
SingleQuotedIdentifier:
SingleQuotedIdentifierCharacters
SingleQuotedIdentifierCharacters:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt
SingleQuotedIdentifierCharacter:
TekstZnakoviNePojedinačniCitat
SingleQuoteEscapeSequence
TextCharactersNoSingleCitat:
bilo koji Unicode znak osim ' (U+0027)
SingleQuoteEscapeSequence:
'
'
Višeznačni identifikator
Razdvojbeni identifikator:
Identifikator stupca tablice
Globalni identifikator
Identifikator stupca tablice:
Identifikator identifikatora[@
...]
Globalni identifikator:
[@
Identifikator]
Kontekstne ključne riječi
KontekstKljučna riječ:
Parent
Self
ThisItem
ThisRecord
Razlikovanje velikih i malih slova
Identifikatori sustava Power Apps razlikuju velika i mala slova. Alat za autorizaciju automatski će ih promijeniti u ispravan oblik kada se piše formula.
Razdjelnici
Decimalni separator:
.
(točka) za jezike koji koriste točku kao razdjelnik decimalnih brojeva, na primjer 1.23
,
(zarez) za jezike koji koriste zarez kao razdjelnik za decimalne brojeve, na primjer 1,23
ListSeparator:
,
(zarez) ako je DecimalSeparator ( .
točka)
;
(točka sa zarezom) ako je DecimalSeparator ( ,
zarez)
Lančani separator:
;
(točka sa zarezom) ako je DecimalSeparator ( .
točka)
;;
(dvostruka točka sa zarezom) ako je DecimalSeparator ( ,
zarez)
Operatori
Operatori se koriste u formulama za opisivanje operacija koje uključuju jedan ili više operanada. Na primjer, izraz a + b
koristi operator +
za dodavanje dvaju operanada a
i b
.
Operator:
Binarni operator
BinaryOperatorRequiresWhitespace
PrefiksOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator:jedan od
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
Razmak
Or
Razmak
PrefixOperatorRequiresWhitespace:
Not
Razmak
Referentni operator
ReferenceOperator: jedan od
.
!
Referenca objekta
Referenca:
Osnovna referenca
BaseReferenceReferenceOperatorReferenceList
Osnovna referenca:
Identifikator
Razdvojbeni identifikator
KontekstKljučna riječ
Popis referenci:
Identifikator
Referenca identifikatoraReferentnipopis operatora...
Zapis u retku
InlineRecord:
{
InlineRecordListopt}
Umetnuti popis zapisa:
Izraz identifikatora:
...
Izraz:
identifikatoraListSeparatorInlineRecordList
Tablica u retku
Umetnuta tablica:
[
InlineTableListopt]
Umetnuta tablica:
Izraz
Popis izrazaSeparator...InlineTableList
Expression
Izraz:
Bukvalan
Referenca
Umetnuti zapis
InlineTable
FunkcijaPoziv
(
Izraz)
Izraz PrefixOperator...
IzrazPostfixOperator
IzrazBinaryOperatorIzraz
Lančani izrazi
Lančani izraz:
Izraz
IzrazChainingSeparatorChainedExpressionopt
Poziv funkcije
FunctionCall:
FunctionIdentifier(
FunctionArgumentsopt)
Identifikator funkcije:
Identifikator
Identifikator.
FunctionIdentifier
Argumenti funkcije:
Ulančani izraz
ChainedExpressionListSeparatorFunctionArguments