You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					80 lines
				
				3.3 KiB
			
		
		
			
		
	
	
					80 lines
				
				3.3 KiB
			| 
											3 years ago
										 | import type { ScopeValueSets, NameValue, ValueScope, ValueScopeName } from "./scope"; | ||
|  | import { _Code, Code, Name } from "./code"; | ||
|  | import { Scope } from "./scope"; | ||
|  | export { _, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code } from "./code"; | ||
|  | export { Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds } from "./scope"; | ||
|  | export declare type SafeExpr = Code | number | boolean | null; | ||
|  | export declare type Block = Code | (() => void); | ||
|  | export declare const operators: { | ||
|  |     GT: _Code; | ||
|  |     GTE: _Code; | ||
|  |     LT: _Code; | ||
|  |     LTE: _Code; | ||
|  |     EQ: _Code; | ||
|  |     NEQ: _Code; | ||
|  |     NOT: _Code; | ||
|  |     OR: _Code; | ||
|  |     AND: _Code; | ||
|  |     ADD: _Code; | ||
|  | }; | ||
|  | export interface CodeGenOptions { | ||
|  |     es5?: boolean; | ||
|  |     lines?: boolean; | ||
|  |     ownProperties?: boolean; | ||
|  | } | ||
|  | export declare class CodeGen { | ||
|  |     readonly _scope: Scope; | ||
|  |     readonly _extScope: ValueScope; | ||
|  |     readonly _values: ScopeValueSets; | ||
|  |     private readonly _nodes; | ||
|  |     private readonly _blockStarts; | ||
|  |     private readonly _constants; | ||
|  |     private readonly opts; | ||
|  |     constructor(extScope: ValueScope, opts?: CodeGenOptions); | ||
|  |     toString(): string; | ||
|  |     name(prefix: string): Name; | ||
|  |     scopeName(prefix: string): ValueScopeName; | ||
|  |     scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name; | ||
|  |     getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined; | ||
|  |     scopeRefs(scopeName: Name): Code; | ||
|  |     scopeCode(): Code; | ||
|  |     private _def; | ||
|  |     const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name; | ||
|  |     let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name; | ||
|  |     var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name; | ||
|  |     assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen; | ||
|  |     add(lhs: Code, rhs: SafeExpr): CodeGen; | ||
|  |     code(c: Block | SafeExpr): CodeGen; | ||
|  |     object(...keyValues: [Name | string, SafeExpr | string][]): _Code; | ||
|  |     if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen; | ||
|  |     elseIf(condition: Code | boolean): CodeGen; | ||
|  |     else(): CodeGen; | ||
|  |     endIf(): CodeGen; | ||
|  |     private _for; | ||
|  |     for(iteration: Code, forBody?: Block): CodeGen; | ||
|  |     forRange(nameOrPrefix: Name | string, from: SafeExpr, to: SafeExpr, forBody: (index: Name) => void, varKind?: Code): CodeGen; | ||
|  |     forOf(nameOrPrefix: Name | string, iterable: Code, forBody: (item: Name) => void, varKind?: Code): CodeGen; | ||
|  |     forIn(nameOrPrefix: Name | string, obj: Code, forBody: (item: Name) => void, varKind?: Code): CodeGen; | ||
|  |     endFor(): CodeGen; | ||
|  |     label(label: Name): CodeGen; | ||
|  |     break(label?: Code): CodeGen; | ||
|  |     return(value: Block | SafeExpr): CodeGen; | ||
|  |     try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen; | ||
|  |     throw(error: Code): CodeGen; | ||
|  |     block(body?: Block, nodeCount?: number): CodeGen; | ||
|  |     endBlock(nodeCount?: number): CodeGen; | ||
|  |     func(name: Name, args?: Code, async?: boolean, funcBody?: Block): CodeGen; | ||
|  |     endFunc(): CodeGen; | ||
|  |     optimize(n?: number): void; | ||
|  |     private _leafNode; | ||
|  |     private _blockNode; | ||
|  |     private _endBlockNode; | ||
|  |     private _elseNode; | ||
|  |     private get _root(); | ||
|  |     private get _currNode(); | ||
|  |     private set _currNode(value); | ||
|  | } | ||
|  | export declare function not<T extends Code | SafeExpr>(x: T): T; | ||
|  | export declare function and(...args: Code[]): Code; | ||
|  | export declare function or(...args: Code[]): Code; |