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:
GlobalIdentifier:
[@
Identifier]
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:
FunctionIdentifier(
)
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:
DecimalDigit:
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:
ExpressionElement
ExpressionElementExpressionElementsopt
ExpressionElement:
Whitespace
Comment
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.
Whitespace:
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.
Comment:
DelimitedComment
SingleLineComment
SingleLineComment:
//
SingleLineCommentCharactersopt
SingleLineCommentCharacters:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharactersopt
SingleLineCommentCharacter:
bilo koji Unicode znakovi osim NewLineCharacter
DelimitedComment:
/*
DelimitedCommentCharactersopt*/
DelimitedCommentCharacters:
DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk:
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.
Literal:
LogicalLiteral
NumberLiteral
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.
NumberLiteral:
DecimalDigitsExponentPartopt
DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
DecimalSeparatorDecimalDigitsExponentPartopt
DecimalDigits:
DecimalDigit
DecimalDigitsDecimalDigit
DecimalDigit:jedan od
0
1
2
3
4
5
6
7
8
9
ExponentPart:
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:
"
TextLiteralCharactersopt"
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.
Identifier:
IdentifierNamebutnotOperatororContextKeyword
IdentifierName:
IdentifierStartCharacterIdentifierContinueCharactersopt
'
SingleQuotedIdentifier'
IdentifierStartCharacter:
LetterCharacter
_
IdentifierContinueCharacter:
IdentifierStartCharacter
DecimalDigitCharacter
ConnectingCharacter
CombiningCharacter
FormattingCharacter
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
LetterCharacter:
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)
CombiningCharacter:
bilo koji Unicode znak klase Oznaka bez razmaka (Mn) ili Oznaka s kombinacijom razmaka (Mc)
DecimalDigitCharacter:
bilo koji Unicode znak klase Decimalni brojevi (Nd)
ConnectingCharacter:
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:
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence
TextCharactersNoSingleQuote:
bilo koji Unicode znak osim ' (U+0027)
SingleQuoteEscapeSequence:
'
'
Višeznačni identifikator
DisambiguatedIdentifier:
TableColumnIdentifier
GlobalIdentifier
TableColumnIdentifier:
Identifier[@
Identifier]
GlobalIdentifier:
[@
Identifier]
Kontekstne ključne riječi
ContextKeyword:
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
DecimalSeparator:
.
(točka) za jezike koji koriste točku kao odvajač za decimalne brojeve, 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)
ChainingSeparator:
;
(točka sa zarezom) ako je DecimalSeparator.
(točka)
;;
(dvostruka točka sa zarezom) ako je DecimalSeparator is ,
(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:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator:jedan od
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
Whitespace
Or
Whitespace
PrefixOperatorRequiresWhitespace:
Not
Whitespace
Referentni operator
ReferenceOperator:jedan od
.
!
Referenca objekta
Reference:
BaseReference
BaseReferenceReferenceOperatorReferenceList
BaseReference:
Identifier
DisambiguatedIdentifier
ContextKeyword
ReferenceList:
Identifier
IdentifierReferenceOperatorReferenceList
Zapis u retku
InlineRecord:
{
InlineRecordListopt}
InlineRecordList:
Identifier:
Expression
Identifier:
ExpressionListSeparatorInlineRecordList
Tablica u retku
InlineTable:
[
InlineTableListopt]
InlineTableList:
Expression
ExpressionListSeparatorInlineTableList
Expression
Expression:
Literal
Reference
InlineRecord
InlineTable
FunctionCall
(
Expression)
PrefixOperatorExpression
ExpressionPostfixOperator
ExpressionBinaryOperatorExpression
Lančani izrazi
ChainedExpression:
Expression
ExpressionChainingSeparatorChainedExpressionopt
Poziv funkcije
FunctionCall:
FunctionIdentifier(
FunctionArgumentsopt)
FunctionIdentifier:
Identifier
Identifier.
FunctionIdentifier
FunctionArguments:
ChainedExpression
ChainedExpressionListSeparatorFunctionArguments
Povratne informacije
https://aka.ms/ContentUserFeedback.
Stiže uskoro: Tijekom 2024. postupno ćemo ukinuti servis Problemi sa servisom GitHub kao mehanizam za povratne informacije za sadržaj i zamijeniti ga novim sustavom za povratne informacije. Dodatne informacije potražite u članku:Pošaljite i pogledajte povratne informacije za