"""Parser module for RLang compiler.

Public API for parsing RLang source code into ASTs.
"""

from rlang.parser.ast import (
    AttributeRef,
    BinaryOp,
    BooleanAnd,
    BooleanNot,
    BooleanOr,
    Call,
    Case,
    Expr,
    ExprStmt,
    FieldAccess,
    ForExpr,
    FunctionDecl,
    GenericType,
    Identifier,
    IfExpr,
    ListExpr,
    ListPattern,
    Literal,
    LiteralPattern,
    MatchExpr,
    Module,
    Param,
    Pattern,
    PipelineDecl,
    PipelineStep,
    RecordExpr,
    RecordPattern,
    RecordType,
    SimpleType,
    Statement,
    TopLevelDecl,
    TypeAlias,
    TypeExpr,
    VarPattern,
    WildcardPattern,
)
from rlang.parser.parser import ParseError, Parser, parse

__all__ = [
    # AST nodes
    "Module",
    "TypeAlias",
    "TypeExpr",
    "SimpleType",
    "GenericType",
    "RecordType",
    "Param",
    "FunctionDecl",
    "PipelineDecl",
    "PipelineStep",
    "Statement",
    "ExprStmt",
    "Expr",
    "Identifier",
    "Literal",
    "BinaryOp",
    "BooleanAnd",
    "BooleanOr",
    "BooleanNot",
    "Call",
    "RecordExpr",
    "FieldAccess",
    "ListExpr",
    "AttributeRef",
    "IfExpr",
    "ForExpr",
    "MatchExpr",
    "Case",
    "Pattern",
    "WildcardPattern",
    "LiteralPattern",
    "VarPattern",
    "RecordPattern",
    "ListPattern",
    # Parser
    "Parser",
    "ParseError",
    "parse",
]

