Skip to main content
IBM Quantum Platform

고전적 표현들

고전 표현식을 위한 Qiskit C API는 Qiskit에서 사용되는 고전 표현식을 검사할 수 있는 기능을 제공합니다. 이 API를 사용하면 일련의 열거형, 구조체 및 액세서 함수를 통해 표현식 트리를 탐색하고 분석할 수 있습니다. 표현식의 구조를 확인하고, 노드 유형을 식별하며, 유형 정보를 조회하고, 표현식 트리 내 각 노드의 상세 속성에 접근할 수 있습니다. 현재 클래식 표현식은 제어 흐름 API를 통해서만 접근할 수 있으며, 예를 들어 클래식 표현식으로 구성된 쿼리 조건을 조회할 때와 같은 경우가 이에 해당합니다.

이 API의 함수들은 부모 표현식 트리가 존재하는 한 유효한 상태를 유지하는 차용 포인터를 반환하므로, 이러한 포인터를 해제할 필요가 없다는 점에 유의하십시오.


데이터 유형.

QkExprNodeKind

enum QkExprNodeKind

고전적인 표현식 트리에서 나타날 수 있는 다양한 유형의 표현식 노드.

값:

enumerator QkExprNodeKind_Unary

단항 연산식 (예: NOT, 부정)

enumerator QkExprNodeKind_Binary

이항 연산식 (예: AND, OR, 산술 연산 등)

enumerator QkExprNodeKind_Cast

형식 변환 표현식

enumerator QkExprNodeKind_Value

리터럴 값 표현식

enumerator QkExprNodeKind_Var

변수 참조 표현식

enumerator QkExprNodeKind_Stretch

스트레치 표현 (타이밍 관련)

enumerator QkExprNodeKind_Index

지수/하첨자 표현식

QkExprType

enum QkExprType

고전적 표현식에서 사용할 수 있는 데이터 유형.

값:

enumerator QkExprType_Bool

부울 유형

enumerator QkExprType_Duration

기간 유형

enumerator QkExprType_Float

부동 소수점 유형(floating-point type)

enumerator QkExprType_Uint

부호 없는 정수형

QkExprTypeInfo

struct QkExprTypeInfo

표현식에 사용된 데이터 유형에 대한 완전한 표현.

QkExprType ty

표현식 유형

uint32_t 너비

Uint 표현식 유형의 비트 폭

QkUnaryOpType

enum QkUnaryOpType

단항 식이 가질 수 있는 연산 유형. 값은 고전적 표현 시스템의 Python 관례에 맞춰 1부터 시작합니다.

값:

enumerator QkUnaryOpType_BitNot

비트별 NOT 연산

enumerator QkUnaryOpType_LogicNot

논리 NOT 연산

enumerator QkUnaryOpType_Negate

산술적 부정

QkUnaryExprInfo

struct QkUnaryExprInfo

연산자, 피연산자, 결과 유형 및 상수 여부를 포함하여 단항 식을 설명합니다. qk_expr_unary_info 함수에서 반환됩니다. 이 operand 필드는 단항 연산식의 피연산자를 가리키는 차용된 포인터입니다.

QkUnaryOpType op

단항 연산자

const QkExprNode *피연산자

피연산자 식에 대한 차용된 포인터

QkExprTypeInfo ty

연산의 결과 유형

bool 상수

그 표현식이 상수인지 여부

QkBinaryOpType

enum QkBinaryOpType

이진 식이 가질 수 있는 연산 유형. Python 의 관례에 맞춰 값은 1부터 시작합니다.

값:

enumerator QkBinaryOpType_BitAnd

비트별 AND 연산

enumerator QkBinaryOpType_BitOr

비트별 OR 연산

enumerator QkBinaryOpType_BitXor

비트별 XOR 연산

enumerator QkBinaryOpType_LogicAnd

논리 AND 연산

enumerator QkBinaryOpType_LogicOr

논리 OR 연산

enumerator QkBinaryOpType_Equal

동등성 비교

enumerator QkBinaryOpType_NotEqual

불평등 비교

enumerator QkBinaryOpType_Less

~보다 적음

enumerator QkBinaryOpType_LessEqual

작거나 같음 비교

enumerator QkBinaryOpType_Greater

비교 대상보다 더 큰

enumerator QkBinaryOpType_GreaterEqual

‘보다 크거나 같음’ 비교

enumerator QkBinaryOpType_ShiftLeft

좌측 이동 연산

enumerator QkBinaryOpType_ShiftRight

오른쪽 이동 연산

enumerator QkBinaryOpType_Add

더하기 연산

enumerator QkBinaryOpType_Sub

뺄셈 연산

enumerator QkBinaryOpType_Mul

곱셈 연산

enumerator QkBinaryOpType_Div

나눗셈 연산

QkBinaryExprInfo

struct QkBinaryExprInfo

연산자, 피연산자, 결과 유형 및 상수 여부를 포함하여 이항 식을 설명합니다. qk_expr_binary_info 함수에서 반환됩니다. 및 right 필드는 left 이항 연산식의 피연산자를 가리키는 차용 포인터입니다.

QkBinaryOpType op

이항 연산자

const QkExprNode *left

왼쪽 피연산자 표현식을 가리키는 차용된 포인터

const QkExprNode *right

올바른 피연산자 식을 가리키는 차용된 포인터

QkExprTypeInfo ty

연산의 결과 유형

bool 상수

그 표현식이 상수인지 여부

QkCastExprInfo

struct QkCastExprInfo

피연산자, 대상 유형, 암시적 변환 여부, 상수 여부 등을 포함하여 형 변환 표현식을 설명합니다. qk_expr_cast_info 함수에서 반환됩니다. 이 operand 필드는 형변환 표현식의 피연산자를 가리키는 차용 포인터입니다.

const QkExprNode *피연산자

형변환 중인 피연산자 식을 가리키는 빌린 포인터

QkExprTypeInfo ty

변환의 대상 유형

bool 암시적

캐스팅이 암시적(자동)인지 명시적인지

bool 상수

그 표현식이 상수인지 여부

QkIndexExprInfo

struct QkIndexExprInfo

대상, 인덱스, 결과 유형 및 상수 여부를 포함하여 인덱스 표현식을 설명합니다. qk_expr_index_info 함수에서 반환됩니다. 및 index 필드는 target 인덱스 연산식의 대상 및 인덱스를 가리키는 차용된 포인터입니다.

const QkExprNode *target

인덱싱 대상 표현식을 가리키는 차용된 포인터

const QkExprNode *index

인덱스 표현식에 대한 차용된 포인터

QkExprTypeInfo ty

색인 생성 작업의 결과 유형

bool 상수

그 표현식이 상수인지 여부

QkDurationType

enum QkDurationType

기간 표현에 사용되는 다양한 시간 단위를 나타냅니다.

값:

enumerator QkDurationType_Dt

시스템 시간 단위

enumerator QkDurationType_Ps

picoseconds

enumerator QkDurationType_Ns

나노초

enumerator QkDurationType_Us

마이크로초

enumerator QkDurationType_Ms

밀리초

enumerator QkDurationType_S

union QkDurationValue

#include <types.h>

정수형으로 시스템 시간 단위(dt)를 저장하거나, 실수형으로 실제 시간을 저장하는 연합체.

이 유니온은 struct의 QkDurationInfo 일부이므로 직접 사용해서는 안 됩니다.

int64_t dt

QkDurationType_Dt시스템 시간 단위 (이 QkDurationInfo 일 때 ty 활성화됨)

속보

실시간 값 (다른 모든 기간 유형에 적용됨)

QkDurationInfo

struct QkDurationInfo

기간 값을 완전히 표현한 것.

ty 필드는 합집합 value 중 어느 필드가 활성 상태인지 결정하는 판별자 역할을 합니다.

C에서 초기화할 때, 다음 사항을 확인하는 것은 사용자의 책임입니다:

  • value.dt``QkDurationType_Dt가 일 때 ty , 지속 시간은 에 정수형으로 저장됩니다.
  • value.time그 외의 모든 기간 유형의 경우, 기간은.에 부동 소수점 값으로 저장됩니다.

QkDurationType ty

기간 단위 유형 (합집합의 판별 기준)

QkDurationValue 값

기간 값


함수

qk_expr_kind

QkExprNodeKind qk_expr_kind(const QkExprNode *expr)

고전식 표현식 노드의 유형을 반환합니다.

QKExprNodeKind kind = qk_expr_kind(expr);

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 검사할 표현식 노드에 대한 포인터.

리턴

어떤 구체적인 표현 변형이 expr 포함되어 있는지를 설명하는 kind 열거형입니다.

qk_expr_binary_info

QkBinaryExprInfo qk_expr_binary_info(const QkExprNode *expr)

이진 표현식 노드에서 정보를 추출합니다.

가 이진 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.

QkBinaryExprInfo info = qk_expr_binary_info(expr);
const QkExprNode *lhs = info.left;
const QkExprNode *rhs = info.right;

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 이항 표현식 노드를 가리키는 포인터.

리턴

연산자, 피연산자, 결과 유형 및 해당 식이 상수인지 여부를 설명하는 구조체 QkBinaryExprInfo .

qk_expr_unary_info

QkUnaryExprInfo qk_expr_unary_info(const QkExprNode *expr)

단항 식 노드에서 정보를 추출합니다.

가 단항 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.

QkUnaryExprInfo info = qk_expr_unary_info(expr);
QkUnaryOpType op = info.op;

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 단항 식 노드를 가리키는 포인터.

리턴

연산자, 피연산자, 결과 유형 및 해당 식이 상수인지 여부를 설명하는 구조체 QkUnaryExprInfo .

qk_expr_cast_info

QkCastExprInfo qk_expr_cast_info(const QkExprNode *expr)

캐스트 표현식 노드에서 정보를 추출합니다.

이 노드가 캐스트 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.

QkCastExprInfo info = qk_expr_cast_info(expr);
const QkExprNode *operand = info.operand;

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 형변환 표현식 노드를 가리키는 포인터.

리턴

피연산자, 할당 대상 유형, 형 변환이 암시적인지 여부, 그리고 식이 상수인지 여부를 설명하는 구조체 QkCastExprInfo .

qk_expr_index_info

QkIndexExprInfo qk_expr_index_info(const QkExprNode *expr)

인덱스 표현식 노드에서 정보를 추출합니다.

가 인덱스 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.

QkIndexExprInfo info = qk_expr_index_info(expr);
const QkExprNode *target = info.target;
const QkExprNode *index = info.index;

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 인덱스 표현식 노드를 가리키는 포인터.

리턴

인덱스 대상, 인덱스 표현식, 결과 유형 및 해당 표현식이 상수인지 여부를 설명하는 구조체입니다 QkIndexExprInfo .

qk_expr_as_value

const QkValue *qk_expr_as_value(const QkExprNode *expr)

표현식 노드의 기본 값을 보여주는 뷰를 반환합니다.

가 값 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.

const QkValue *value = qk_expr_as_value(expr);

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 값 표현식 노드를 가리키는 포인터.

리턴

expr안에 저장된 에 QkValue 대한 포인터.

qk_expr_as_var

const QkVar *qk_expr_as_var(const QkExprNode *expr)

식 노드의 기본 변수에 대한 뷰를 반환합니다.

가 변수 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.

const QkVar *var = qk_expr_as_var(expr);

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 변수 표현식 노드를 가리키는 포인터.

리턴

expr안에 저장된 에 QkVar 대한 포인터.

qk_expr_as_stretch

const QkStretch *qk_expr_as_stretch(const QkExprNode *expr)

표현식 노드의 기본 구간을 보여주는 뷰를 반환합니다.

가 스트레치 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.

const QkStretch *stretch = qk_expr_as_stretch(expr);

안전

QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.

매개변수

  • expr – 스트레치 표현식 노드를 가리키는 포인터.

리턴

expr안에 저장된 에 QkStretch 대한 포인터.

qk_value_type_info

QkExprTypeInfo qk_value_type_info(const QkValue *value)

값의 유형 정보를 반환합니다.

QkExprTypeInfo type_info = qk_value_type_info(value);

안전

Value가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.

매개변수

  • value – 검사할 대상에 QkValue 대한 포인터.

리턴

값 유형 정보를 포함하는 구조체 QkExprTypeInfo .

qk_value_duration_info

QkDurationInfo qk_value_duration_info(const QkValue *value)

기간 값에서 구조화된 정보를 추출합니다.

가 지속 시간 값을 가리키지 않으면 value 오류가 발생합니다.

QkDurationInfo info = qk_value_duration_info(value);

안전

QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.

매개변수

  • – 지속 시간 값을 가리키는 포인터.

리턴

기간 단위와 원시 값을 포함하는 구조체 QkDurationInfo .

qk_value_float

double qk_value_float(const QkValue *value)

QkValue.에서 부동소수점 값을 추출합니다.

가 부동소수점 값을 가리키지 않으면 value 오류가 발생합니다.

double raw = qk_value_float(value);

안전

QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.

매개변수

  • – float 형 값을 가리키는 포인터.

리턴

value.에 저장된 값은 double

qk_value_uint

uint64_t qk_value_uint(const QkValue *value)

QkExprType_UintQkValue 인 에서 부호 없는 정수 값을 추출합니다.

이 함수를 호출하기 전에 값이 에 uint64_t 들어갈 수 있는지 확인하려면 를 사용해야 qk_value_type_info 합니다.

uint64_tQkExprType_Uint 어떤 값도 가리키지 않거나, 저장된 정수 값이 에 들어가지 않을 경우 value 예외가 발생합니다.

uint64_t raw = qk_value_uint(value);

안전

QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.

매개변수

  • – uint 값을 가리키는 포인터.

리턴

정수 값을 변환한 결과 uint64_t.

qk_value_bool

bool qk_value_bool(const QkValue *value)

QkExprType_Bool유형 인 QkValue 에서 값을 추출합니다.

가 bool 값을 가리키지 않으면 value 오류가 발생합니다.

bool raw = qk_value_bool(value);

안전

QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.

매개변수

  • – bool 값을 가리키는 포인터.

리턴

true 저장된 정수 표현이 0이 아닌 경우, 그렇지 않으면 false.

qk_var_name

char *qk_var_name(const QkVar *var)

변수의 이름을 새로 할당된 C 문자열로 반환합니다.

char *name = qk_var_name(var);
if (name != NULL) {
    // Use the name...
    qk_str_free(name);
}

안전

QkVar가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 var , 동작은 정의되지 않습니다.

매개변수

  • var – 검사할 변수를 가리키는 포인터.

리턴

변수 이름을 포함하는 널 종결 문자열, 또는 NULL if var 가 독립형이 아닌 변수(즉, 고전 비트나 고전 레지스터에 기반한 변수)를 가리키는 경우. qk_str_free호출자는 반환된 문자열을 소유하고 있으므로, 이를.을 사용하여 해제해야 합니다.

qk_var_type_info

QkExprTypeInfo qk_var_type_info(const QkVar *var)

변수에 대한 전체 유형 정보를 반환합니다.

값이 다소 변동성이 있을 경우 var 오류가 발생하는데, 이는 현재 이 API에서 아직 지원되지 않습니다.

QkExprTypeInfo type_info = qk_var_type_info(var);

안전

QkVar가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 var , 동작은 정의되지 않습니다.

매개변수

  • var – 검사할 변수를 가리키는 포인터.

리턴

변수 유형 정보를 포함하는 구조체 QkExprTypeInfo .

qk_stretch_name

char *qk_stretch_name(const QkStretch *stretch)

스트레치의 이름을 반환합니다.

char *name = qk_stretch_name(stretch);
// Use the name...
qk_str_free(name);

안전

QkStretch가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 stretch , 동작은 정의되지 않습니다.

매개변수

  • stretch – 검사할 stretch에 대한 포인터.

리턴

스트레치 이름이 포함된 널 종결 문자열. qk_str_free호출자는 반환된 문자열의 소유자이므로, 이를.을 사용하여 해제해야 합니다.

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.