import { TokenStream } from '../classes/TokenStream'; import { Token } from '../classes/Lexer'; import { Assignment, CodePosition } from '../types/Ast.type'; export interface AssignmentParserContext { /** * Parse a statement from the stream (for subexpressions) */ parseStatement?: (stream: TokenStream) => any; /** * Create code position from tokens */ createCodePosition?: (startToken: Token, endToken: Token) => CodePosition; } export declare class AssignmentParser { /** * Parse a variable assignment statement * Expects stream to be positioned at the variable token * * @param stream - TokenStream positioned at the variable token * @param context - Optional context with helper methods * @returns Assignment AST node */ static parse(stream: TokenStream, context?: AssignmentParserContext): Assignment; /** * Parse a simple fallback value (string, number, boolean, null) */ private static parseFallbackValue; /** * Parse the value part of an assignment * Returns the assignment data and the end token */ /** * Check if there's a binary operator ahead that would indicate we need parseExpression */ private static isBinaryOperatorAhead; private static parseAssignmentValue; }