Avaldise grammatika
Märkus
Microsoft Power Fx on lõuendirakenduste valemikeele uus nimi. Need artiklid on pooleli töö, kuna ekstraktime keele lõuendirakendustest, integreerime selle teiste Microsoft Power Platform toodetega ja teeme selle kättesaadavaks avatud allikana. Alustage Microsoft Power Fx ülevaatega sissejuhatuseks keelde.
Microsoft Power Fx põhineb valemitel, mis lisavad avaldisele nime. Nagu Ka Exceli töölehed, muutub ka avaldise sissetulev sõltuvus, nii et väljend arvutatakse ümber ja nime väärtus muutub, võib-olla kaskadeeritakse ümberarvutamine teistesse valemitesse.
See grammatika hõlmab valemi avaldise osa. Nime sidumine valemi loomiseks sõltub sellest, kuidas Power Fx on integreeritud. Töölehel ei näitata süntaksit, vaid asukohast, kus avaldis on kirjutatud—näiteks sisestada =B1 A1-lahtrisse. Mõnel juhul pole sidumist üldse vaja ja Power Fx-i kasutatakse avaldise hindajana, näiteks andmebaasitabeli arvutatud veergude toetamisel. Rakenduse Power Appsi puhul eeldatakse vaikimisi sidumist, et töötatakse Power Apps Studio koos serialiseerimisvormingus YAMLi kasutamiseks väljapool Power Apps Studio.
Grammatikareeglid
Leksikaalsed ja süntaktilised grammatikad esitatakse grammatikaprogrammide abil. Iga grammatikareegel määratleb mitteterminaalse sümboli ja selle mitteterminaalse sümboli võimalikud laiendused mitteterminaalsete või terminaalsete sümbolite järjestustesse. Grammatikareeglites kuvatakse mitteterminaalsed sümbolid kursiivkirjas ja terminaalsed sümbolid fikseeritud laiusega fondis.
Grammatikareegli esimene rida on määratletava mitteterminaalse sümboli nimi, millele järgneb koolon. Iga järjestikune taandatud rida sisaldab mitteterminaalse sümboli võimalikku laiendamist, mis on antud mitteterminaalsete või terminaliliste sümbolite jadana. Näiteks reegel:
GlobalIdentifier :
[@ identifikaator ]
määratleb Globaalidentifikaatorit, mis koosneb sõnest [@, millele järgneb identifikaator, millele omakorda järgneb sõne ].
Kui mitteterminaalse sümboli laiendamiseks on rohkem kui üks võimalus, on alternatiivid loetletud eraldi ridadel. Valikuliste sümbolite tähistamiseks kasutatakse alamskripti "opt". Näiteks reegel:
FunctionCall :
FunctionIdentifier ( FunctionArgumentsopt )
on lühendatud versioon järgmisest:
FunctionCall :
FunctionIdentifier ( )
Funktsionaalindifikaator ( funktsiooniargumendid )
Alternatiivid lisatakse tavaliselt eraldi ridadele, ehkki juhtudel, kui on palju alternatiive, võib fraas "üks" eelistada ühel real toodud laienduste loendit. See on lihtsalt lühidalt, kui soovite iga alternatiivi eraldi ridadeks loetleda.
Näiteks reegel:
DecimalDigit : one of
0 1 2 3 4 5 6 7 8 9
on lühendatud versioon järgmisest:
DecimalDigit :
0
1
2
3
4
5
6
7
8
9
Leksikaalne analüüs
Leksikaalse ühiku reegel määratleb Power Fx-i avaldise leksika. Kõik kehtivad Power Fx-i avaldised vastavad sellele.
ExpressionUnit :
ExpressionElementsopt
ExpressionElements :
ExpressionElement
ExpressionElement ExpressionElementsopt
ExpressionElement :
Tühi ruum
Kommenteeri
Leksikaalsel tasandil koosneb Power Fx-i avaldis elementidest tühik, kommentaar ja sõne. Kõik need reeglid kehtivad järgmiste jaotiste korral. Süntaksi korral on olulised ainult sõne elemendid.
Tühi ruum
Tühikut kasutatakse kommentaaride ja märkide eraldamiseks Power Appsi dokumendis.
Tühik :
mis tahes Unicode'i tühikeraldaja (klass Zs)
mis tahes Unicode'i jooneraldaja (klass ZI)
mis tahes Unicode'i lõigueraldaja (klass Zp)
Horisontaalne tabeldusmärk (U+0009)
Reavahetusmärk (U+000A)
Vertikaalne tabeldusmärk (U+000B)
Lehevahetusmärk (U+000C)
Tagasijooksumärk (U+000D)
Järgmine reavahetusmärk (U+0085)
Kommentaarid
Toetatakse kahte kommentaarivormi.
- Üherealised kommentaarid, mis algavad märkidega
//ja pole pikemad kui allikarida. - Eraldatud kommentaarid, mis algavad märkidega
/*ja lõpevad märkidega*/. Eraldajatega kommentaarid võivad hõlmata mitut rida.
Kommentaar :
DelimitedComment
SingleLineComment
SingleLineComment :
// SingleLineCommentCharactersopt
SingleLineCommentCharacters :
SingleLineCommentCharacter
SingleLineCommentCharacter SingleLineCommentCharactersopt
SingleLineCommentCharacter :
mis tahes Unicode'i märgid, v.a NewLineCharacter
DelimitedComment :
/* DelimitedCommentCharactersopt */
DelimitedCommentCharacters :
DelimitedCommentCharactersNoAsterisk DelimitedCommentCharactersopt
* DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters :
DelimitedCommentNoSlashAsteriskCharacter DelimitedCommentCharactersopt
* DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk :
mis tahes Unicode'i märk, v.a * (tärn)
DelimitedCommentNoSlashAsteriskCharacter :
mis tahes Unicode'i märk, v.a / (kaldkriips) või * (tärn)
Kommentaare ei pesastata. Märgijadadel /* ja */ pole üherealises kommentaaris erilist tähendust ning märgijadadel // ja /* ei ole eraldatud kommentaaris erilist tähendust.
Kommentaare ei töödelda tekstiliteraalide stringides.
Järgmine näide sisaldab kahte eraldatud kommentaari.
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
Järgmised näited sisaldavad kolme üherealist kommentaari.
// Hello, world
//
"Hello, world" // This is an example of a text literal
Literaalid
Literaal on väärtuse esitus lähtekoodina.
Literaal :
LogicalLiteral
NumberLiteral
TextLiteral
Loogilised literaalid
Loogikaliteraali abil kirjutatakse väärtused tõesed ja väärad ning need annavad loogikaväärtuse.
LogicalLiteral : one of
true false
Arvliteraal
Numbriliteraali kirjutamiseks ja numbriväärtuse kirjutamiseks ja arvuväärtuse toomiseks.
NumberLiteral :
DecimalDigits ExponentPartopt
DecimalDigits DecimalSeparator DecimalDigitsopt ExponentPartopt
DecimalSeparator DecimalDigits ExponentPartopt
DecimalDigits :
DecimalDigit
DecimalDigits DecimalDigit
DecimalDigit : one of
0 1 2 3 4 5 6 7 8 9
ExponentPart :
ExponentIndicator Signopt DecimalDigits
ExponentIndicator : one of
e E
Tekstliteraalid
Tekstiliteraalid kasutatakse Unicode'i märkide jada kirjutamiseks ning tekstiväärtuse andmiseks. Tekstiliteraalid on lisasõnad kahekordsetes jutumärkides. Kahekordsete jutumärkide kaasamiseks tekstiväärtusse korrake kahekordseid jutumärke, nagu on näidatud järgmises näites:
"The ""quoted"" text" // The "quoted" text
TextLiteral :
" TextLiteralCharactersopt "
TextLiteralCharacters :
TextLiteralCharacter TextLiteralCharactersopt
TextLiteralCharacter :
TextCharacterNoDoubleQuote
DoubleQuoteEscapeSequence
TextCharacterNoDoubleQuote :
mis tahes Unicode'i koodipunkt, v.a kahekordsed jutumärgid
DoubleQuoteEscapeSequence :
" "
Identifikaatorid
Identifikaator on nimi, mida kasutatakse väärtusele viitamiseks. Identifikaatorid võivad olla kas tavalised identifikaatorid või üksikjutumärkidega ümbritsetud identifikaatorid.
Identifikaator :
IdentifierName kuid mitte Tehtemärk või ContextKeyword
IdentifierName :
IdentifierStartCharacter IdentifierContinueCharactersopt
' SingleQuotedIdentifier '
IdentifierStartCharacter :
LetterCharacter
_
IdentifierContinueCharacter :
IdentifierStartCharacter
DecimalDigitCharacter
ConnectingCharacter
CombiningCharacter
FormattingCharacter
IdentifierContinueCharacters :
IdentifierContinueCharacter IdentifierContinueCharactersopt
LetterCharacter :
mis tahes Unicode'i märk klassist Suurtäht (Lu) või Väiketäht (LI)
klassi Unicode märgid Suurtähe (Lt)
mis tahes klassi märk Tähe muutja (Lm) või Teine täht (Lo)
mis thes klassi number Numbri märk (NI)
CombiningCharacter :
mis tahes klassi märgi Vaheta märk (Mn) või vahede kombineerimismärk (Mc)
DecimalDigitCharacter :
mis tahes klassi karakteri Kümnendkoht (Nd)
ConnectingCharacter :
mis tahes klassi karakteri Ühendav kirjavahemärk (Pc)
FormattingCharacter :
mis tahes klassi karakteri Vorming (Cf)
Üksikjutumärkidega ümbritsetud identifikaatorid
Üks tsiteeritud identifikaator võib sisaldada identifikaatorina mis tahes märksõnu sealgulgas tühikuid, kommentaare ja tehtemärke. Ühekordseid jutumärke toetatakse kahest ühekordsest jutumärgist koosneva järjestusega.
SingleQuotedIdentifier :
SingleQuotedIdentifierCharacters
SingleQuotedIdentifierCharacters :
SingleQuotedIdentifierCharacter SingleQuotedIdentifierCharactersopt
SingleQuotedIdentifierCharacter :
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence
TextCharactersNoSingleQuote :
mis tahes Unicode'i märk, v.a ' (U+0027)
SingleQuoteEscapeSequence :
' '
Ühestamise identifikaator
DisambiguatedIdentifier:
TableColumnIdentifier
GlobalIdentifier
TableColumnIdentifier :
Identifikaator [@ Identifikaator ]
GlobalIdentifier:
[@ Identifikaator ]
Kontekstimärksõnad
ContextKeyword:
Parent
Self
ThisItem
ThisRecord
Tõstutundlikkus
Power Appsi identifikaatorid on tõstutundlikud. Autorite loomise tööriist muudab need valemi kirjutatud ajal automaatselt õigeks.
Eraldajad
DecimalSeparator:
. (dot) keelte puhul, mille puhul kasutatakse kümnendkohtade eraldajana punkti, näiteks 1.23
, (koma) keele korral, mis kasutab koma komakohtade eraldajana, näiteks 1,23
ListSeparator:
, (koma) kui DecimalSeparator on . (punkt)
; (semikoolon) kui DecimalSeparator on , (koma)
ChainingSeparator:
; (semikoolon) kui DecimalSeparator on . (dot)
;; (topelt semikoolon) kui DecimalSeparator on , (koma)
Tehtemärgid
Tehtemärke kasutatakse valemites ühe või mitme operandiga seotud toimingute kirjeldamiseks. Näiteks kasutab avaldis a + b tehtemärki + kahe operandi a ja b lisamiseks.
Tehtemärk:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator: one of
= < <= > >= <>
+ - * / ^
&
&& ||
in exactin
BinaryOperatorRequiresWhitespace:
And Tühi ruum
Or Tühi ruum
PrefixOperatorRequiresWhitespace:
Not Tühi ruum
Viite tehtemärk
Objekti viide
Viide:
BaseReference
BaseReference ReferenceOperator ReferenceList
BaseReference:
Identifikaator
DisambiguatedIdentifier
ContextKeyword
ReferenceList:
Identifikaator
Identifikaator ReferenceOperator ReferenceList
Tekstisisene kirje
InlineRecord:
{ InlineRecordListopt }
InlineRecordList:
Identifikaator : Avaldis
Identifikaator : Avaldis ListSeparator InlineRecordList
Tekstisisene tabel
InlineTable:
[ InlineTableListopt ]
InlineTableList:
Avaldis
Avaldis ListSeparator InlineTableList
Avaldis
Avaldis:
Literaal
Viide
InlineRecord
InlineTable
FunctionCall
( Avaldis )
PrefixOperator Avaldis
Avaldis PostfixOperator
Avaldis BinaryOperator Avaldis
Ahelavaldised
ChainedExpression:
Avaldis
Avaldis ChainingSeparator ChainedExpressionopt
Funktsioonikutse
FunctionCall:
FunctionIdentifier ( FunctionArgumentsopt )
FunctionIdentifier:
Identifikaator
Identifikaator . FunctionIdentifier
FunctionArguments:
ChainedExpression
ChainedExpression ListSeparator FunctionArguments