///
///
import { AnalyticConstruct } from "../../../analysis/predicates";
import { CommaASTNode, TernaryASTNode } from "../../../ast/ast_expressions";
import { CommaExpressionOutlet, TernaryExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { ConstructDescription, ExpressionContext, SemanticContext } from "../../compilation/contexts";
import { Bool, ExpressionType } from "../../compilation/types";
import { RuntimeConstruct, SuccessfullyCompiled } from "../CPPConstruct";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { CompiledExpression, Expression, TypedExpression, t_TypedExpression, ValueCategory } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression";
export declare class CommaExpression extends Expression {
readonly construct_type = "comma_expression";
readonly type?: ExpressionType;
readonly valueCategory?: ValueCategory;
readonly left: Expression;
readonly right: Expression;
constructor(context: ExpressionContext, ast: CommaASTNode, left: Expression, right: Expression);
static createFromAST(ast: CommaASTNode, context: ExpressionContext): CommaExpression;
createDefaultOutlet(this: CompiledCommaExpression, element: JQuery, parent?: ConstructOutlet): CommaExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean;
}
export interface TypedCommaExpression extends CommaExpression, t_TypedExpression {
readonly type: T;
readonly valueCategory: V;
readonly right: TypedExpression;
}
export interface CompiledCommaExpression extends TypedCommaExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly left: CompiledExpression;
readonly right: CompiledExpression;
}
export declare class RuntimeComma extends SimpleRuntimeExpression> {
left: RuntimeExpression;
right: RuntimeExpression;
constructor(model: CompiledCommaExpression, parent: RuntimeConstruct);
protected operate(): void;
}
export declare class TernaryExpression extends Expression {
readonly construct_type = "ternary_expression";
readonly type?: ExpressionType;
readonly valueCategory?: ValueCategory;
readonly condition: Expression;
readonly then: Expression;
readonly otherwise: Expression;
constructor(context: ExpressionContext, ast: TernaryASTNode, condition: Expression, then: Expression, otherwise: Expression);
static createFromAST(ast: TernaryASTNode, context: ExpressionContext): TernaryExpression;
private compileCondition;
private compileConsequences;
createDefaultOutlet(this: CompiledTernaryExpression, element: JQuery, parent?: ConstructOutlet): TernaryExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean;
}
export interface TypedTernaryExpression extends TernaryExpression, t_TypedExpression {
readonly type: T;
readonly valueCategory: V;
readonly then: TypedExpression;
readonly otherwise: TypedExpression;
}
export interface CompiledTernaryExpression extends TypedTernaryExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly condition: CompiledExpression;
readonly then: CompiledExpression;
readonly otherwise: CompiledExpression;
}
export declare class RuntimeTernary extends RuntimeExpression> {
condition: RuntimeExpression;
then: RuntimeExpression;
otherwise: RuntimeExpression;
private index;
constructor(model: CompiledTernaryExpression, parent: RuntimeConstruct);
protected upNextImpl(): void;
protected stepForwardImpl(): void;
}