इसके माध्यम से साझा किया गया


अभिव्यक्ति व्याकरण

नोट

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
    0123456789

के लिए आशुलिपि है:

   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
    truefalse

संख्या यथाशब्द

एक संख्या लिटरल का उपयोग संख्यात्मक मान लिखने और संख्या मान उत्पन्न करने के लिए किया जाता है.

   NumberLiteral:
     DecimalDigitsExponentPartopt
     DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
     DecimalSeparatorDecimalDigitsExponentPartopt

   DecimalDigits:
     DecimalDigit
     DecimalDigitsDecimalDigit

   DecimalDigit:one of
    0123456789

   ExponentPart:
     ExponentIndicatorSignoptDecimalDigits

   ExponentIndicator:one of
    eE

   Sign:one of
    +-

पाठ यथाशब्द

एक टेक्स्ट लिटरल का उपयोग यूनिकोड वर्णों के अनुक्रम को लिखने और एक टेक्स्ट मान उत्पन्न करने के लिए किया जाता है. टेक्स्ट लिटरल दोहरे कोटेशन चिह्नों में बंद होते हैं. टेक्स्ट मान में दोहरे कोटेशन चिह्नों को शामिल करने के लिए, दोहरे कोटेशन चिह्नों को दोहराएं, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:

"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
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

   BinaryOperatorRequiresWhitespace:
     And श्वेत रिक्ति
     Or श्वेत रिक्ति

   PrefixOperator:
    !

   PrefixOperatorRequiresWhitespace:
     Not श्वेत रिक्ति

   PostfixOperator:
    %

संदर्भ ऑपरेटर

   ReferenceOperator:one of
    .!

विषय संदर्भ

   संदर्भ:
     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