अभिव्यक्ति व्याकरण
नोट
Microsoft Power Fx कैनवास ऐप्स के लिए सूत्र भाषा का नया नाम है. ये आलेख प्रगति पर काम हैं जैसा कि हम कैनवास ऐप्स से भाषा निकालते हैं, इसे अन्य Microsoft Power Platform उत्पादों के साथ एकीकृत करते हैं, और इसे खुले स्रोत के रूप में उपलब्ध कराते हैं. भाषा के परिचय के लिए Microsoft Power Fx अवलोकन से शुरू करें.
Microsoft Power Fx ऐसे फ़ार्मूलों पर आधारित है जो नाम को अभिव्यक्ति से जोड़ते हैं. जैसे Excel वर्कशीट में, अभिव्यक्ति परिवर्तन के लिए इनबाउंड निर्भरता के रूप में, अभिव्यक्ति की पुनर्गणना होती है और नाम के मान में बदलाव होता है, संभवतः अन्य सूत्रों में पुनर्गणना को कास्केड करता है.
यह व्याकरण सूत्र के अभिव्यक्ति भाग को सम्मिलित करता है. एक सूत्र बनाने के लिए एक नाम की अनिवार्यता इस बात पर निर्भर करती है कि Power Fx कैसे एकीकृत है. वर्कशीट में, बाइंडिंग सिंटैक्स उजागर नहीं होता है, यह उस स्थान से निहित होता है जहां अभिव्यक्ति लिखी जाती है—उदाहरण के लिए, A1 सेल में =B1
दर्ज करना. कुछ मामलों में, किसी अनिवार्यता की आवश्यकता नहीं होती है और Power Fx का उपयोग अभिव्यक्ति मानांकनकर्ता के रूप में किया जाता है, उदाहरण के लिए डेटाबेस तालिका के गणना किए गए कॉलमों का समर्थन करने में. Power Apps के लिए, Power Apps Studio में Power Apps Studio के बाहर उपयोग के लिए YAML पर आधारित क्रमांकन प्रारूप के साथ काम करने पर बाइंडिंग निहित है.
व्याकरण की परिपाटी
व्याकरण उत्पादनों का उपयोग करके लेक्सिकल और सिंटैक्टिक व्याकरण प्रस्तुत किए जाते हैं. प्रत्येक व्याकरण प्रस्तुति एक गैर-टर्मिनल प्रतीक और गैर-टर्मिनल प्रतीकों के संभावित विस्तारों को गैर-टर्मिनल या टर्मिनल प्रतीकों के अनुक्रमों में परिभाषित करता है. व्याकरण प्रस्तुतियों में, गैर-टर्मिनल प्रतीकों को इटालिक में दिखाया जाता है और टर्मिनल प्रतीकों को एक निश्चित-चौड़ाई वाले अक्षर में दिखाया जाता है.
व्याकरण प्रस्तुति की पहली पंक्ति, गैर-टर्मिनल प्रतीक का नाम है जिसे परिभाषित किया जा रहा है, जिसके बाद एक विरामचिह्न है. प्रत्येक क्रमिक इंडेंटेड लाइन में गैर-टर्मिनल प्रतीक का संभावित विस्तार होता है, जिसे गैर-टर्मिनल या टर्मिनल प्रतीकों के अनुक्रम के रूप में दिया जाता है. उदाहरण के लिए, प्रस्तुति:
GlobalIdentifier:
[@
पहचानकर्ता]
एक GlobalIdentifier को परिभाषित करता है जिसमें टोकन [@
, इसके बाद एक पहचानकर्ता, इसके बाद टोकन ]
होते हैं.
जब गैर-टर्मिनल प्रतीक का एक से अधिक संभावित विस्तार हो, तो विकल्प अलग-अलग लाइनों पर सूचीबद्ध होते हैं. एक वैकल्पिक प्रतीक को इंगित करने के लिए सबस्क्रिप्ट "opt" का उपयोग किया जाता है. उदाहरण के लिए, प्रस्तुति:
FunctionCall:
FunctionIdentifier(
FunctionArgumentsopt)
के लिए आशुलिपि है:
FunctionCall:
FunctionIdentifier(
)
FunctionIdentifier(
FunctionArguments)
वैकल्पिक आम तौर अलग-अलग लाइनों पर सूचीबद्ध होते हैं, हालांकि ऐसे मामलों में जहां कई विकल्प हैं, वाक्यांश "का एक" एकल लाइन पर दिए गए विस्तार की सूची से पहले हो सकता है. यह बस अलग-अलग लाइनों पर प्रत्येक विकल्प को सूचीबद्ध करने के लिए शॉर्टहैंड है.
उदाहरण के लिए, प्रस्तुति:
DecimalDigit:one of
0
1
2
3
4
5
6
7
8
9
के लिए आशुलिपि है:
DecimalDigit:
0
1
2
3
4
5
6
7
8
9
शाब्दिक विश्लेषण
शाब्दिक-इकाई उत्पादन Power Fx अभिव्यक्ति के लिए शाब्दिक व्याकरण को परिभाषित करता है. हर वैध Power Fx अभिव्यक्ति इस व्याकरण के अनुरूप है.
ExpressionUnit:
ExpressionElementsopt
ExpressionElements:
ExpressionElement
ExpressionElementExpressionElementsopt
ExpressionElement:
श्वेत रिक्ति
टिप्पणी
शाब्दिक स्तर पर, Power Fx अभिव्यक्ति में श्वेत रिक्ति, टिप्पणी, और टोकन अवयवों की एक स्ट्रीम होती है. इनमें से प्रत्येक प्रस्तुतियों को निम्नलिखित अनुभागों में शामिल किया गया है. केवल टोकन अवयव वाक्य रचना संबंधी व्याकरण में महत्वपूर्ण हैं.
श्वेत रिक्ति
व्हाइटस्पेस का उपयोग Power Apps दस्तावेज़ के भीतर टिप्पणियों और टोकनों को अलग करने के लिए किया जाता है.
श्वेत रिक्ति:
कोई भी यूनिकोड स्पेस विभाजक (Zs वर्ग)
कोई भी यूनिकोड लाइन विभाजक (Zl वर्ग)
कोई भी यूनिकोड पैराग्राफ़ विभाजक (Zp वर्ग)
क्षैतिज टैब संकेताक्षर (U+0009)
लाइन फ़ीड संकेताक्षर (U+000A)
उध्वार्धर टैब संकेताक्षर (U+000B)
फॉर्म फ़ीड संकेताक्षर (U+000C)
कैरिज रिटर्न संकेताक्षर (U+000D)
अगली पंक्ति के संकेताक्षर (U+0085)
टिप्पणियाँ
टिप्पणियों के दो रूप समर्थित हैं:
- एकल लाइन टिप्पणियां जो
//
संकेताक्षरों के साथ शुरू होते हैं और स्रोत रेखा के अंत तक विस्तारित होते हैं. - सीमित टिप्पणियां जो
/*
संकेताक्षरों के साथ शुरू होती हैं और*/
संकेताक्षरों के साथ खत्म होती हैं. सीमांकित टिप्पणियां कई लाइनों तक फैली हो सकती हैं.
टिप्पणी:
DelimitedComment
SingleLineComment
SingleLineComment:
//
SingleLineCommentCharactersopt
SingleLineCommentCharacters:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharactersopt
SingleLineCommentCharacter:
NewLineCharacter को छोड़कर कोई भी यूनिकोड वर्ण
DelimitedComment:
/*
DelimitedCommentCharactersopt*/
DelimitedCommentCharacters:
DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk:
* (तारक) को छोड़कर कोई भी यूनिकोड संकेताक्षर
DelimitedCommentNoSlashAsteriskCharacter:
एक / (स्लैश) या * (तारक) को छोड़कर कोई भी यूनिकोड संकेताक्षर
टिप्पणियां स्थिर नहीं हैं. संकेताक्षर अनुक्रम /*
और */
का एक एकल लाइन टिप्पणी के भीतर कोई विशेष अर्थ नहीं है और संकेताक्षर अनुक्रम //
और /*
का एक सीमित-टिप्पणी के भीतर कोई विशेष अर्थ नहीं है.
टिप्पणियों को टेक्स्ट-लिटरल स्ट्रिंग के अंदर संसाधित नहीं की जाती हैं.
निम्नलिखित उदाहरण में दो सीमित टिप्पणियां शामिल हैं:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
निम्नलिखित उदाहरणों में तीन एकल-लाइन टिप्पणियां शामिल हैं:
// Hello, world
//
"Hello, world" // This is an example of a text literal
यथाशब्द
एक लिटरल, मान के स्रोत कोड का एक प्रतिनिधित्व है.
लिटरल:
LogicalLiteral
NumberLiteral
TextLiteral
तार्किक यथाशब्द
एक तार्किक लिटरल का उपयोग मानों को सही और गलत लिखने के लिए किया जाता है और एक तार्किक मान पैदा करता है.
LogicalLiteral:one of
true
false
संख्या यथाशब्द
एक संख्या लिटरल का उपयोग संख्यात्मक मान लिखने और संख्या मान उत्पन्न करने के लिए किया जाता है.
NumberLiteral:
DecimalDigitsExponentPartopt
DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
DecimalSeparatorDecimalDigitsExponentPartopt
DecimalDigits:
DecimalDigit
DecimalDigitsDecimalDigit
DecimalDigit:one of
0
1
2
3
4
5
6
7
8
9
ExponentPart:
ExponentIndicatorSignoptDecimalDigits
पाठ यथाशब्द
एक टेक्स्ट लिटरल का उपयोग यूनिकोड वर्णों के अनुक्रम को लिखने और एक टेक्स्ट मान उत्पन्न करने के लिए किया जाता है. टेक्स्ट लिटरल दोहरे कोटेशन चिह्नों में बंद होते हैं. टेक्स्ट मान में दोहरे कोटेशन चिह्नों को शामिल करने के लिए, दोहरे कोटेशन चिह्नों को दोहराएं, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:
"The ""quoted"" text" // The "quoted" text
TextLiteral:
"
TextLiteralCharactersopt"
TextLiteralCharacters:
TextLiteralCharacterTextLiteralCharactersopt
TextLiteralCharacter:
TextCharacterNoDoubleQuote
DoubleQuoteEscapeSequence
TextCharacterNoDoubleQuote:
दोहरे उद्धरण को छोड़कर कोई भी यूनिकोड कोड पॉइंट
DoubleQuoteEscapeSequence:
"
"
आइडेंटिफ़ायर
एक पहचानकर्ता एक मान को संदर्भित करने के लिए उपयोग किया जाने वाला नाम है. पहचानकर्ता या तो नियमित पहचानकर्ता या एकल उद्धृत पहचानकर्ता हो सकते हैं.
पहचानकर्ता:
IdentifierNameलेकिननऑपरेटरन हीContextKeyword
IdentifierName:
IdentifierStartCharacterIdentifierContinueCharactersopt
'
SingleQuotedIdentifier'
IdentifierStartCharacter:
LetterCharacter
_
IdentifierContinueCharacter:
IdentifierStartCharacter
DecimalDigitCharacter
ConnectingCharacter
CombiningCharacter
FormattingCharacter
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
LetterCharacter:
वर्ग अपरकेस अक्षर (Lu) या लोअरकेस अक्षर (Ll) का कोई भी यूनिकोड अक्षर
वर्ग टाइटलकेस अक्षर (Lt) का कोई भी यूनिकोड अक्षर
वर्ग अक्षर संशोधक (Lm) या अक्षर अन्य (Lo) का कोई भी यूनिकोड अक्षर
संख्या अक्षर (Nl) वर्ग का कोई भी यूनिकोड अक्षर
CombiningCharacter:
वर्ग नॉन-स्पेसिंग चिह्न (Mn) या स्पेसिंग कॉम्बिनेशन चिह्न (Mc) का कोई भी यूनिकोड अक्षर
DecimalDigitCharacter:
दशमलव अंक (Nd) वर्ग का कोई भी यूनिकोड अक्षर
ConnectingCharacter:
कनेक्टर विराम चिह्न (Pc) वर्ग का कोई भी यूनिकोड अक्षर
FormattingCharacter:
फॉर्मेट (Cf) वर्ग का कोई भी यूनिकोड अक्षर
एकल उद्धृत पहचानकर्ता
एकल कोट किए गए पहचानकर्ता में यूनिकोड अक्षरों के किसी भी अनुक्रम को पहचानकर्ता के रूप में उपयोग किया जा सकता है, जिसमें कीवर्ड, व्हाइटस्पेस, टिप्पणियां और ऑपरेटर शामिल हैं. एकल कोट किए गए चिह्न अक्षर दो एकल कोटेशन चिह्नों के एस्केप अनुक्रम के साथ समर्थित हैं.
SingleQuotedIdentifier:
SingleQuotedIdentifierCharacters
SingleQuotedIdentifierCharacters:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt
SingleQuotedIdentifierCharacter:
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence
TextCharactersNoSingleQuote:
' (U +0027) को छोड़कर कोई भी यूनिकोड वर्ण
SingleQuoteEscapeSequence:
'
'
अस्पष्ट पहचानकर्ता
DisambiguatedIdentifier:
TableColumnIdentifier
GlobalIdentifier
TableColumnIdentifier:
पहचानकर्ता[@
पहचानकर्ता]
GlobalIdentifier:
[@
पहचानकर्ता]
संदर्भ कीवर्ड
ContextKeyword:
Parent
Self
ThisItem
ThisRecord
केस सेंसिटिविटी
Power Apps पहचानकर्ता मामले के प्रति संवेदनशील होते हैं. एक फॉर्मूला लिखे जाने पर ऑथरिंग टूल स्वचालित रूप से उन्हें सही स्थिति में बदल देगा.
विभाजक
DecimalSeparator:
.
(बिंदु) उन भाषाओं के लिए जो दशमलव संख्या के विभाजक के रूप में बिंदु का उपयोग करते हैं, उदाहरण के लिए 1.23
,
(अल्पविराम) उन भाषाओं के लिए जो दशमलव संख्याओं के लिए विभाजक के रूप में अल्पविराम का उपयोग करती हैं, उदाहरण के लिए 1,23
ListSeparator:
,
(अल्पविराम) अगर DecimalSeparator.
(बिंदु) है
;
(अर्धविराम) यदि DecimalSeparator,
(कामा) है
ChainingSeparator:
;
(अर्धविराम) यदि DecimalSeparator.
(डॉट) है
;;
(दोहरे अर्धविराम) यदि DecimalSeparator,
(कामा) है
ऑपरेटर
ऑपरेटरों का उपयोग सूत्रों में वैसे ऑपरेशनों का वर्णन करने के लिए किया जाता है जिनमें एक या एक से अधिक ऑपरेंड्स से जुड़े होते है. उदाहरण के लिए, अभिव्यक्ति a + b
दो ऑपरेंड्स a
और b
को जोड़ने के लिए +
ऑपरेटर का उपयोग करती है.
ऑपरेटर:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator:one of
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
श्वेत रिक्ति
Or
श्वेत रिक्ति
PrefixOperatorRequiresWhitespace:
Not
श्वेत रिक्ति
संदर्भ ऑपरेटर
विषय संदर्भ
संदर्भ:
BaseReference
BaseReferenceReferenceOperatorReferenceList
BaseReference:
पहचानकर्ता
DisambiguatedIdentifier
ContextKeyword
ReferenceList:
पहचानकर्ता
पहचानकर्ताReferenceOperatorReferenceList
इनलाइन रिकॉर्ड
InlineRecord:
{
InlineRecordListopt}
InlineRecordList:
पहचानकर्ता:
एक्सप्रेशन
पहचानकर्ता:
एक्सप्रेशनListSeparatorInlineRecordList
इनलाइन टेबल
InlineTable:
[
InlineTableListopt]
InlineTableList:
एक्सप्रेशन
एक्सप्रेशनListSeparatorInlineTableList
Expression
एक्सप्रेशन:
लिटरल
संदर्भ
InlineRecord
InlineTable
FunctionCall
(
एक्सप्रेशन)
PrefixOperatorएक्सप्रेशन
एक्सप्रेशनPostfixOperator
एक्सप्रेशनBinaryOperatorएक्सप्रेशन
श्रृंखलाबद्ध अभिव्यक्तियां
ChainedExpression:
एक्सप्रेशन
ExpressionChainingSeparatorChainedExpressionopt
फ़ंक्शन कॉल
FunctionCall:
FunctionIdentifier(
FunctionArgumentsopt)
FunctionIdentifier:
पहचानकर्ता
पहचानकर्ता.
FunctionIdentifier
FunctionArguments:
ChainedExpression
ChainedExpressionListSeparatorFunctionArguments
प्रतिक्रिया
https://aka.ms/ContentUserFeedback.
जल्द आ रहा है: 2024 के दौरान हम सामग्री के लिए फीडबैक तंत्र के रूप में GitHub मुद्दों को चरणबद्ध तरीके से समाप्त कर देंगे और इसे एक नई फीडबैक प्रणाली से बदल देंगे. अधिक जानकारी के लिए, देखें:के लिए प्रतिक्रिया सबमिट करें और देखें