식 문법
참고
Microsoft Power Fx는 캔버스 앱용 수식 언어의 새 이름입니다. 이러한 문서는 캔버스 앱에서 언어를 추출하고 다른 Microsoft Power Platform 제품과 통합하여 오픈 소스로 제공하는 과정에서 진행중인 작업입니다. 언어에 대한 소개를 위해 Microsoft Power Fx 개요로 시작하십시오.
Microsoft Power Fx는 이름을 식에 바인딩하는 수식을 기반으로 합니다. Excel 워크시트에서와 마찬가지로 식에 대한 인바운드 종속성이 변경되면 식이 다시 계산되고 이름 값이 변경되어 다른 수식으로 다시 계산될 수 있습니다.
이 문법은 수식의 식 부분을 다룹니다. 수식을 만들기 위해 이름에 바인딩하는 것은 Power Fx가 통합되는 방식에 따라 다릅니다. 워크시트에서 바인딩 구문은 노출되지 않고 식이 쓰여진 위치에 의해 암시됩니다(예: A1 셀에 =B1
을 입력). 어떤 경우에는 바인딩이 전혀 필요하지 않으며 Power Fx는 예를 들어 데이터베이스 테이블의 계산된 열을 지원할 때 식 평가기로 사용됩니다. Power Apps의 경우 바인딩은 Power Apps Studio 외부에서 사용하기 위해 YAML을 기반으로 하는 serialization 형식을 사용하여 Power Apps Studio에서 작업할 때 암시됩니다.
문법 규칙
어휘 및 구문 문법은 문법 프로덕션을 사용하여 제공됩니다. 각 문법 프로덕션은 비터미널 기호 및 해당 비터미널 기호의 가능한 확장을 비터미널 또는 터미널 기호의 시퀀스로 정의합니다. 문법 프로덕션에서 비터미널 기호는 기울임꼴 형식으로 표시되며 터미널 기호는 고정 너비 글꼴로 표시됩니다.
문법 프로덕션의 첫 번째 줄에는 정의되는 비터미널 기호의 이름과 콜론이 차례로 표시됩니다. 각 연속 들여 쓴 줄에는 비터미널 또는 터미널 기호의 시퀀스로 제공된 비터미널 기호의 가능한 확장이 포함됩니다. 예를 들어 다음 프로덕션은
글로벌 식별자:
[@
식별자]
[@
, 식별자와 토큰이 뒤에 오는]
토큰으로 구성된 GlobalIdentifier를 정의합니다.
비터미널 기호의 가능한 확장이 두 개 이상 있는 경우 대체 항목은 별도 줄에 나열됩니다. 첨자 "opt"는 선택적 기호를 나타내는 데 사용됩니다. 예를 들어 다음 프로덕션은
함수 호출:
함수 식별자(
함수 인수opt)
다음의 줄임 표기입니다.
함수 호출:
함수식별자(
)
함수식별자(
함수인수)
대체 항목은 일반적으로 별도의 줄에 나열되지만, 대체 항목이 많이 있는 경우에도 “one of” 구가 한 줄에 제공된 확장 목록 앞에 올 수 있습니다. 이는 별도 줄에 각 대체 항목을 나열하는 줄임 표기입니다.
예를 들어 다음 프로덕션은
DecimalDigit:다음 중 하나
0
1
2
3
4
5
6
7
8
9
다음의 줄임 표기입니다.
10진수:
0
1
2
3
4
5
6
7
8
9
어휘 분석
어휘 단위 프로덕션은 Power Fx 식에 대한 어휘 문법을 정의합니다. 모든 유효한 Power Fx 식은 이 문법을 따릅니다.
표현 단위:
ExpressionElementsopt
표현요소:
표현요소
ExpressionElementExpressionElementsopt
어휘 수준에서 Power Fx 식은 공백, 주석, 토큰 요소의 스트림으로 구성되어 있습니다. 다음 섹션에서 각 프로덕션을 설명합니다. 토큰은 구문 문법에서 중요한 유일한 요소입니다.
공백
공백은 Power Apps 문서 내에서 주석과 토큰을 구분하는 데 사용됩니다.
공백:
모든 유니코드 공백 구분 기호 (클래스 Z)
모든 유니코드 라인 구분 기호 (클래스 ZI)
모든 유니코드 단락 구분 기호 (클래스 Zp)
가로 탭 문자 (U+0009)
줄 바꿈 문자 (U+000A)
세로 탭 문자 (U+000B)
양식 피드 문자 (U+000C)
캐리지 리턴 문자 (U+000D)
다음 줄 문자 (U+0085)
댓글
두 가지 양식의 주석이 지원됩니다.
- 문자
//
로 시작하여 원본 줄의 끝으로 확장되는 한 줄 주석. /*
문자로 시작하여*/
문자로 끝나는 끝을 지정하는 주석. 구분된 주석은 여러 줄에 연결될 수 있습니다.
SingleLineComment:
//
SingleLineCommentCharacters선택
SingleLineCommentCharacters:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharacters선택
SingleLineCommentCharacter:
NewLineCharacter를 제외한 모든 유니코드 문자
구분된 주석:
/*
구분된 주석 문자opt*/
구분된 주석 문자:
구분된 주석 문자별표 없음구분된 주석 문자선택
*
구분된 주석 별표 문자
별표 문자 뒤에 구분된 주석:
구분된 주석 없음슬래시 별표 문자구분된 주석 문자선택
*
구분된 주석 별표 문자
구분된 주석 문자 없음 별표:
*(별표)를 제외한 모든 유니코드 문자
구분된 주석 없음 슬래시 별표 문자:
/(슬래시) 또는 *(별표)를 제외한 모든 유니코드 문자
주석은 중첩되지 않습니다. /*
및 */
문자 시퀀스는 한 줄 주석 내에서 특별한 의미가 없으며, //
및 /*
문자 시퀀스는 끝을 지정하는 주석 내에서 특별한 의미가 없습니다.
주석은 텍스트 리터럴 문자열 내에서 처리되지 않습니다.
다음 예에는 두 개의 끝을 지정하는 주석이 포함되어 있습니다.
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
다음 예에는 세 개의 한 줄 주석이 포함되어 있습니다.
// Hello, world
//
"Hello, world" // This is an example of a text literal
리터럴
리터럴은 값의 원본 코드 표현입니다.
논리적 리터럴
논리적 리터럴은 true 및 false 값을 작성하는 데 사용되고 논리 값을 생성합니다.
LogicalLiteral:다음 중 하나
true
false
숫자 리터럴
숫자 리터럴은 숫자 값을 작성하는 데 사용되고 숫자 값을 생성합니다.
숫자 리터럴:
DecimalDigits지수 부분opt
10진수10진수 구분 기호10진수선택지수 부분선택
소수점 구분 기호소수점 숫자지수 부분선택
DecimalDigit:다음 중 하나
0
1
2
3
4
5
6
7
8
9
텍스트 리터럴
텍스트 리터럴은 유니코드 문자 시퀀스를 작성하는 데 사용되고 텍스트 값을 생성합니다. 텍스트 리터럴은 큰 따옴표로 묶여 있습니다. 텍스트 값에 큰 따옴표를 포함하려면 다음 예와 같이 큰 따옴표를 반복합니다.
"The ""quoted"" text" // The "quoted" text
텍스트 리터럴:
"
TextLiteralCharacters선택"
텍스트 리터럴 문자:
TextLiteralCharacterTextLiteralCharacters선택
텍스트 리터럴 문자:
텍스트 문자 없음 큰따옴표
더블쿼트이스케이프시퀀스
TextCharacterNoDoubleQuote:
큰 따옴표를 제외한 모든 유니코드 코드 포인트
DoubleQuoteEscapeSequence:
"
"
Identifiers
식별자는 값을 참조하는 데 사용되는 이름입니다. 식별자는 일반 식별자 또는 작은 따옴표를 붙은 식별자일 수 있습니다.
식별자:
식별자 이름이지만 운영자또는 ContextKeyword는 아닙니다.......
식별자 이름:
식별자 시작 문자식별자 계속 문자선택
'
단일 인용 식별자'
식별자 시작 문자:
문자문자
_
식별자계속문자:
식별자 시작 문자
10진수숫자문자
캐릭터 연결
캐릭터 결합
서식문자
문자 문자:
대문자(Lu) 또는 소문자(Ll) 클래스의 모든 유니코드 문자
Titlecase 문자(Lt) 클래스의 모든 유니코드 문자
문자 수정자(Lm) 또는 문자 기타(Lo) 클래스의 모든 유니코드 문자
숫자 문자(Nl) 클래스의 모든 유니코드 문자
캐릭터 결합:
띄어쓰기 없음 표시(Mn) 또는 띄어쓰기 결합 표시(Mc) 클래스의 모든 유니코드 문자
10진수숫자문자:
10진수 숫자(Nd) 클래스의 모든 유니코드 문자
연결 문자:
커넥터 구두점(Pc) 클래스의 모든 유니코드 문자
작은 따옴표로 묶인 식별자
작은 따옴표로 묶인 식별자에는 키워드, 공백, 주석 및 연산자를 포함한 식별자로 사용할 유니코드 문자 시퀀스가 포함될 수 있습니다. 작은 따옴표 문자는 두 개의 작은 따옴표로 이루어진 이스케이프 시퀀스로 지원됩니다.
단일 인용 식별자:
단일 따옴표 식별자 문자
단일 인용 식별자 문자:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt
단일 인용 식별자 문자:
텍스트 문자 없음 작은 따옴표
단일 인용문 이스케이프 시퀀스
텍스트 문자 없음작은따옴표:
' (U+0027)을 제외한 모드 유니코드 문자
SingleQuoteEscapeSequence:
'
'
명확한 식별자
DisambiguatedIdentifier:
테이블 열 식별자
글로벌 식별자
글로벌 식별자:
[@
식별자]
컨텍스트 키워드
컨텍스트키워드:
Parent
Self
ThisItem
ThisRecord
대/소문자 구분
Power Apps 식별자는 대문자와 소문자를 구분합니다. 작성 도구는 수식을 작성할 때 자동으로 올바른 대소 문자로 변경합니다.
구분 기호
소수점 구분 기호:
.
(점) 예를 들어 10진수 숫자의 구분 기호로 점을 사용하는 언어의 경우 1.23
,
(쉼표) 예를 들어 10진수 숫자의 구분 기호로 쉼표를 사용하는 언어의 경우 1,23
목록 구분 기호:
,
(쉼표) DecimalSeparator is .
(점)
;
(세미콜론) DecimalSeparator is ,
(쉼표)인 경우
체이닝 구분자:
;
(세미콜론) DecimalSeparator is .
(dot)인 경우
;;
(이중 세미콜론) DecimalSeparator is ,
(쉼표)인 경우
연산자
연산자는 수식에서 하나 이상의 피연산자와 관련된 연산을 설명하는 데 사용됩니다. 예를 들어 식 a + b
는 +
연산자를 사용하여 두 개의 피연산자 a
및 b
를 추가합니다.
운영자:
이진 연산자
BinaryOperatorRequiresWhitespace
접두사 연산자
접두사 연산자에는 공백이 필요합니다
PostfixOperator
BinaryOperator:다음 중 하나
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
공백
Or
공백
PrefixOperatorRequiresWhitespace:
Not
공백
참조 연산자
개체 참조
참조:
베이스 레퍼런스
BaseReferenceReferenceOperatorReferenceList
BaseReference:
식별자
DisambiguatedIdentifier
컨텍스트키워드
인라인 레코드
인라인레코드:
{
인라인레코드리스트선택}
인라인 레코드 목록:
식별자:
식별
식별자:
표현식ListSeparatorInlineRecordList
인라인 테이블
인라인테이블:
[
인라인테이블리스트opt]
인라인테이블리스트:
표현
표현식ListSeparatorInlineTableList
표현
표현:
오자
참조
인라인레코드
인라인테이블
함수 호출
(
표현)
PrefixOperator표현식
표현식접미사 연산자
식BinaryOperator식
연쇄 식
체인 표현:
표현
표현식ChainingSeparatorChainedExpressionopt