@mojir/lits
Version:
Lits is a pure functional programming language implemented in TypeScript
20 lines (19 loc) • 1.55 kB
TypeScript
import type { OperatorToken, SourceCodeInfo } from '../tokenizer/token';
import type { AstNode, BindingTarget, NormalBuiltinSymbolNode, NormalExpressionNodeWithName, SymbolNode, UserDefinedSymbolNode } from './types';
import type { ParserContext } from './ParserContext';
export declare const exponentiationPrecedence = 12;
export declare const binaryFunctionalOperatorPrecedence = 3;
export declare const conditionalOperatorPrecedence = 1;
export declare function withSourceCodeInfo<T extends AstNode | BindingTarget>(node: T, sourceCodeInfo: SourceCodeInfo | undefined): T;
export declare function stringToSymbolNode(value: string, sourceCodeInfo: SourceCodeInfo | undefined): SymbolNode;
export declare function stringFromQuotedSymbol(value: string): string;
/**
* Extract the symbol name from any symbol node type.
* UserDefinedSymbolNode: node[1] is the string name
* NormalBuiltinSymbolNode: node[1] is an index, need reverse lookup
* SpecialBuiltinSymbolNode: node[1] is an index, need reverse lookup
*/
export declare function getSymbolName(symbol: SymbolNode): string;
export declare function createNamedNormalExpressionNode(symbolNode: NormalBuiltinSymbolNode | UserDefinedSymbolNode, params: AstNode[], sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeWithName;
export declare function isAtExpressionEnd(ctx: ParserContext): boolean;
export declare function fromBinaryOperatorToNode(operator: OperatorToken, symbolNode: SymbolNode, left: AstNode, right: AstNode, sourceCodeInfo: SourceCodeInfo | undefined): AstNode;