Skip to main content
torch.js has not been released yet. how did you find this? check back soon, we're preparing for v0.1 now
torch.jstorch.jstorch.js
PlaygroundContact
Login
Documentation
IntroductionType SafetyTensor ExpressionsTensor IndexingEinsumEinopsAutogradTraining a ModelProfiling & MemoryPyTorch MigrationBest PracticesRuntimesPerformancePyTorch CompatibilityBenchmarksDType Coverage
acquireAnalysisHintAnalysisResultanalyzeanalyzeanalyzeExpressionAssignmentNodeASTNodeastToMethodChainastToStringBinaryOpNodebindBufferPoolbuildExpressionStringbuildGraphChainedComparisonNodeclearclearAstCacheclearBufferPoolclonecloneCompiledExecuteOptionsCompiledExpressionCompiledPatterncompileExpressioncompileExpressionWithCompileOptionscompilePatterncomposePatternscreateEfficientPatterncreateLazyExpressioncreateLazyExpressionWithCustomOperatorDefinitionDeviceOfDimensionLabeledNodeDTypeOfEfficientOptionsEvalExprShapeevaluateevaluateEfficientEvaluateOptionsevaluateWithTraceEvaluationErrorexecuteExpressionGraphextractVariablesExtractVariablesformatAnalysisFunctionCallNodeFunctionDefinitionFunctionInfogetASTgetAstCacheSizegetAutocompleteInfogetBufferPoolgetCustomOperatorgetFunctionRegistrygetOperatorOverloadsgetOperatorsgetOptimizedExpressiongradgradAllGraphEdgeGraphNodegraphToStringhasFunctionhasOperatorInferDeviceInferDTypeInferExpressionShapeInferObjectDeviceInferObjectDTypeinitBuiltinFunctionsisOperatorLazyExecuteOptionsLazyExpressionNamedExpressionNumberNodeOperatorOperatorOverloadparseParseErrorParseExprPatternParseResultparseTemplatepartialPatternpattern_error_extra_variablespattern_error_missing_variablesPatternExprResultPatternExprShapePatternFunctionPatternVariablespipePatternsregisterFunctionregisterOperatorregisterOperatorOverloadreleasereleaseAllrunsetBufferPoolSeverityShapeAssertionNodeShapeDimensionShapeOfStringNodeTensorExprResultTensorOrNumberTensorRefNodeTensorShapeMapTernaryNodeTokentokenizeTokenizerErrorTokenizerResultTokenTypetoStringtoStringTraceEntryTraceResultTypedTensorExprTypedTensorExprWithHelpersUnaryOpNodeunbindunbindValidatePatternVariablesvisualizeGraphVisualizeOptionswithwithPoolScope
absacosacoshAdaptivePool1dShapeAdaptivePool2dShapeaddaddbmmAddbmmOptionsaddcdivAddcdivOptionsaddcmulAddcmulOptionsaddmmAddmmOptionsaddmvAddmvOptionsaddrAddrOptionsadjointallallcloseAllcloseOptionsAlphaBetaOptionsamaxaminaminmaxAminmaxOptionsangleanyapplyOutarangeare_deterministic_algorithms_enabledargmaxargminargsortargwhereas_stridedas_tensorasinasinhAssertNoShapeErrorAssertNotErrorAsStridedOptionsAtat_error_index_out_of_boundsatanatan2atanhatleast_1datleast_2datleast_3dAtShapeautocast_decrement_nestingautocast_increment_nestingautograd_gradient_mismatch_errorautograd_not_registered_errorAutogradConfigAutogradEntryAutogradHandleAutogradHandleImplAxesRecordBackwardFnbaddbmmBaddbmmOptionsbartlett_windowBaseKernelConfigbatch_dimensions_do_not_match_errorbernoulliBernoulliOptionsBinaryBroadcastResultBinaryKernelConfigCPUBinaryKernelCPUBinaryOpNamesBinaryOpSchemaBinaryOptionsbincountBincountOptionsbitwise_andbitwise_left_shiftbitwise_notbitwise_orbitwise_right_shiftbitwise_xorblackman_windowblock_diagbmmBooleanDTypeRulebroadcast_error_incompatible_dimensionsbroadcast_shapesbroadcast_tensorsbroadcast_toBroadcastShapeBroadcastShapeRulebroadcastShapesbucketizeBucketizeOptionsbuildEinopsErrorbuildErrorMessagecanBroadcastTocartesian_prodcatCatOptionsCatShapeCauchyOptionscdistCdistOptionsceilceluCeluFunctionalOptionschain_matmulCheckShapeErrorCholeskyShapechunkchunk_error_dim_out_of_rangeChunkOptionsclampClampOptionsclear_autocast_cacheclearEinopsCacheclearEinsumCacheclonecolumn_stackcombinationsCombinationsOptionscompiled_with_cxx11_abicomplexconjconj_physicalcontiguousConv1dShapeConv2dShapeConv3dShapeConvTranspose2dShapecopysigncorrcoefcoscoshcount_nonzeroCountNonzeroOptionscovcoverage_reportcoverageReportCoverageReportCovOptionsCPUForwardFnCPUKernelConfigCPUKernelEntryCPUOnlyResultCPUTensorDatacreateTorchCreationOpSchemaCumExtremeResultcummaxcummincumprodCumShapecumsumcumulative_trapezoidCumulativeOptionsCumulativeOptionsWithDimdeg2raddetachDeterministicOptionsDetShapeDevicedevice_error_requiresDeviceCheckedResultDeviceInputDeviceOptionsDeviceTypediagdiag_embedDiagEmbedOptionsdiagflatDiagflatOptionsDiagFlatOptionsdiagonal_scatterDiagonalOptionsDiagonalScatterOptionsDiagOptionsDiagShapediffDiffOptionsdigammadimension_error_out_of_rangedistDistOptionsdivdotDotShapeRuleDoubleDoubleDimdropoutDropoutFunctionalOptionsdsplitdstackDTypedtype_already_registered_errordtype_components_mismatch_errordtype_not_found_errorDTypeComponentsDTypeConfigDTypeDisplayConfigDTypeEntryDTypeHandleDTypeHandleImplDTypeRegistryDTypeRuleDTypeSerializationConfigDynamicShapeEigShapeeinops_error_ambiguous_decompositioneinops_error_anonymous_in_outputeinops_error_dimension_mismatcheinops_error_invalid_patterneinops_error_reduce_undefined_outputeinops_error_repeat_missing_sizeeinops_error_undefined_axiseinsumeinsum_error_dimension_mismatcheinsum_error_index_out_of_rangeeinsum_error_invalid_equationeinsum_error_invalid_sublist_elementeinsum_error_operand_count_mismatcheinsum_error_subscript_rank_mismatcheinsum_error_unknown_output_indexEinsumOptionsEinsumOutputShapeEllipsiseluelu_EluFunctionalOptionsembedding_bag_error_requires_2d_inputemptyempty_cacheempty_likeeqequalerferfcerfinvexpexp2expandexpand_asexpand_error_incompatibleExpandShapeexpm1ExponentialOptionseyeEyeOptionsfftFFTOptionsfindKernelWithPredicatefindSimilarPatternsflattenFlattenOptionsFlattenShapeflipflip_error_dim_out_of_rangefliplrFlipShapeflipudfloat_powerFloatDTypeRulefloorfloor_dividefmaxfminfmodformatEquationErrorformatShapefracfrexpfrombufferfullfull_likefunction_already_registered_errorFunctionConfigFunctionEntryFunctionHandlegathergather_error_dim_out_of_rangeGatherShapegcdgegeluGeometricOptionsget_autocast_cpu_dtypeget_autocast_gpu_dtypeget_autocast_ipu_dtypeget_autocast_xla_dtypeget_default_deviceget_default_dtypeget_deterministic_debug_modeget_device_moduleget_file_pathget_float32_matmul_precisionget_num_interop_threadsget_num_threadsget_op_infoget_printoptionsget_real_dtypeget_rng_stategetAutogradgetDTypegetEinopsCacheSizegetEinsumCacheSizegetFunctiongetKernelgetMethodgetOpInfoGetOpKindGetOpSchemagetScalarKernelgluGluFunctionalOptionsGradContextGradFnGradientsForgtHalfHalfDimhamming_windowhann_windowhardshrinkhardsigmoidhardswishhardtanhhardtanh_HardtanhFunctionalOptionshas_autogradhas_kernelhasAutogradhasDTypehasFunctionhasKernelhasMethodhasScalarKernelHasShapeErrorheavisidehistcHistcOptionshistogramHistogramOptionsHistogramResulthsplithstackhypoti0IdentityShapeifftimagindex_addindex_copyindex_fillindex_putindex_reduceindex_selectindex_select_error_dim_out_of_rangeIndexPutOptionsIndexSelectShapeIndexSpecIndicesOptionsIndicesSpecInputsForInsertDiminvalid_config_errorinverseInverseShapeirfftis_anomaly_check_nan_enabledis_anomaly_enabledis_autocast_cache_enabledis_autocast_cpu_enabledis_autocast_ipu_enabledis_autocast_xla_enabledis_complexis_complex_dtypeis_cpu_only_modeis_deterministic_algorithms_warn_only_enabledis_floating_pointis_floating_point_dtypeis_inference_mode_enabledis_nonzerois_tensoris_warn_always_enabledis_webgpu_availableIs2DIsAtLeast1DIsBinaryOpIsBinaryOpNameiscloseIscloseOptionsisfiniteisinisinfisnanisneginfisposinfisrealIsReductionOpIsReductionOpNameIsRegistryErrorIsShapeErroristftISTFTOptionsIsUnaryOpIsUnaryOpNameitem_error_not_scalarItemResultkaiser_windowKaiserWindowOptionskernel_not_registered_errorkernel_signature_mismatch_errorKernelConfigKernelConfigWebGPUKernelEntryKernelHandleKernelInfoKernelPredicateKernelRegistryKernelWebGPUkronkthvalueKthvalueOptionslcmldexpleleaky_reluleaky_relu_LeakyReluFunctionalOptionslerplevenshteinDistancelgammalinalg_error_not_square_matrixlinalg_error_requires_2dlinalg_error_requires_at_least_2dlinearlinspacelist_custom_dtypeslist_dtypeslist_functionslist_kernelslist_methodslist_opslistCustomDTypeslistDTypeslistFunctionslistKernelsListKernelsOptionslistMethodslistOpsListOpsOptionsloglog_softmaxlog10log1plog2logaddexplogaddexp2logcumsumexplogical_andlogical_notlogical_orlogical_xorlogitLogitOptionsLogNormalOptionsLogOptionslogsigmoidlogspacelogsumexpLogsumexpOptionsltLUShapeLuSolveOptionsmasked_selectmasked_select_asyncMaskSpecmatmulmatmul_error_inner_dimensions_do_not_matchMatmul2DShapeMatmulShapeMatmulShapeRuleMatrixTransposeShapemaxmaximummeanmedianmemory_statsmemory_summarymeshgridmethod_already_registered_errormethod_dtype_not_supported_errorMethodConfigMethodEntryMethodHandleminminimummishmmMMShapeRulemodemovedimmsortmulmultinomialmultinomial_asyncMultinomialAsyncOptionsMultinomialOptionsMultiplyBymvMVShapeRulenan_to_numnanmeannanmediannanquantileNanReductionOptionsnansumNanToNumOptionsnarrownarrow_copynarrow_error_length_exceeds_boundsnarrow_error_start_out_of_boundsNarrowShapeneneedsBroadcastnegNegativeDimnextafternonzeroNonzeroOptionsnormnormalNormalOptionsNormOptionsnumelonesones_likeop_kind_mismatch_errorop_not_found_errorOpCoverageEntryOpInfoOpKindOpNameOpSchemaOpSchemasouterOuterShapepackPackShapepermutepermute_error_dimension_count_mismatchPermuteShapepoissonpolarPool1dShapePool2dShapePool3dShapepositivepowpreluPrintOptionsprodprofiler_allow_cudagraph_cupti_lazy_reinit_cuda12promote_typesPromoteDTypeRulePutOptionsquantileQuantileOptionsrad2degrandrand_likerandintrandint_likeRandintLikeOptionsRandintOptionsrandnrandn_likeRandomLikeOptionsRandomOptionsrandpermRangeSpecRankravelrealrearrangeRearrangeOptionsRearrangeShapereciprocalreduceReduceOperationReduceOptionsReduceShapeReductionKernelConfigCPUReductionKernelCPUReductionOpNamesReductionOpSchemaReductionOptionsReductionShapeRuleregister_backwardregister_dtyperegister_forwardregister_functionregister_methodregister_scalar_forwardregisterAutogradRegisterBackwardOptionsregisterDTypeRegisterDTypeOptionsRegisteredDTyperegisterFunctionRegisterFunctionOptionsregisterKernelRegisterKernelOptionsregisterMethodRegisterMethodOptionsregisterScalarKernelregistration_failed_errorrelurelu_relu6ReluFunctionalOptionsremainderRemoveDimrepeatrepeat_interleaveRepeatInterleaveOptionsRepeatOptionsRepeatShapeReplaceDimrequireWebGPUreset_peak_memory_statsreshapeReshapeShaperesult_typerfftrollRollOptionsrot90Rot90Optionsroundrrelurrelu_RreluFunctionalOptionsrsqrtSafeExpandShapeSameDTypeRuleSameShapeRuleScalarCPUForwardFnScalarCPUKernelConfigScalarKernelEntryScalarKernelHandleScalarWebGPUKernelConfigScaleDimscatterscatter_addscatter_add_scatter_error_dim_out_of_rangescatter_reducescatter_reduce_ScatterReduceOptionsScatterShapesearchsortedSearchSortedOptionsselectselect_error_index_out_of_boundsselect_scatterSelectShapeseluset_default_deviceset_default_tensor_typeset_deterministic_debug_modeset_float32_matmul_precisionset_printoptionsset_warn_alwaysSetupContextFnShapeShapeCheckedResultShapedTensorShapeErrorMessageShapeOpSchemaShapeRulesigmoidsignsignbitsilusinsincsinhSizeOptionsslice_error_out_of_boundsslice_scatterSliceOptionsSliceScatterOptionsSliceShapeSliceSpecsoftmaxsoftmax_error_dim_out_of_rangeSoftmaxShapesoftminSoftminFunctionalOptionssoftplusSoftplusFunctionalOptionssoftshrinksoftsignsortSortOptionssplitsplit_error_dim_out_of_rangeSplitOptionssqrtsquaresqueezeSqueezeOptionsSqueezeShapestackStackOptionsStackShapestdstd_meanStdVarMeanOptionsStdVarOptionsstftSTFTOptionsStrideOptionssubSublistSublistElementSubscriptIndexsumSVDShapeswapaxessym_floatsym_intsym_notttaketake_along_dimTakeAlongDimOptionstantanhtanhshrinktensortensor_splitTensorCreatorTensorDatatensordotTensordotOptionsTensorLikeTensorMetaTensorOptionsTensorStoragethresholdthreshold_tileTileShapeToOptionstopkTopkOptionsTorchtraceTraceShapetransposetranspose_dims_error_out_of_rangetranspose_error_requires_2d_tensorTransposeDimsShapeTransposeDimsShapeCheckedTransposeShapetrapezoidTrapezoidOptionsTriangularOptionstriltril_indicesTriOptionsTripletriutriu_indicestrue_dividetruncTupleOfLengthTypedArrayTypedArrayForTypedStorageTypeOptionsUnaryKernelConfigCPUUnaryKernelCPUUnaryOpNamesUnaryOpParamsUnaryOpSchemaUnaryOptionsunbindunbind_error_dim_out_of_rangeUnbindOptionsunflattenUniformOptionsuniqueunique_consecutiveUniqueConsecutiveOptionsUniqueOptionsunpackUnpackShapeunravel_indexunsqueezeUnsqueezeOptionsUnsqueezeShapeuse_deterministic_algorithmsValidateBatchedSquareMatrixValidateChunkDimValidatedEinsumShapevalidateDeviceValidateDeviceValidatedRearrangeShapeValidatedReduceShapeValidatedRepeatShapevalidateDTypeValidateEinsumValidateOperandCountValidateRanksValidateScalarValidateSplitDimValidateSquareMatrixValidateUnbindDimValueOptionsvar_var_meanvdotviewview_as_complexview_as_realvmapvsplitvstackWebGPUKernelConfigWebGPUOnlyResultWebGPUTensorDatawhereWindowOptionsxlogyzeroszeros_like
torch.js· 2026
LegalTerms of UsePrivacy Policy
/
/
  1. docs
  2. torch.js
  3. torch
  4. tx
  5. ParseExprPattern

torch.tx.ParseExprPattern

export type ParseExprPattern<P extends string> =
  // Level 1: Ternary (lowest precedence)
  P extends `${infer Cond} ? ${infer Then} : ${infer Else}`
    ? { op: '?:'; cond: ParseExprPattern<Cond>; then: ParseExprPattern<Then>; else: ParseExprPattern<Else> }
    : // Level 2: Logical OR
      P extends `${infer L} | ${infer R}`
      ? { op: '|'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
      : // Level 3: Logical XOR
        P extends `${infer L} ^ ${infer R}`
        ? { op: '^'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
        : // Level 4: Logical AND
          P extends `${infer L} & ${infer R}`
          ? { op: '&'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
          : // Level 5: Comparison operators
            P extends `${infer L} == ${infer R}`
            ? { op: '=='; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
            : P extends `${infer L} != ${infer R}`
              ? { op: '!='; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
              : P extends `${infer L} <= ${infer R}`
                ? { op: '<='; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                : P extends `${infer L} >= ${infer R}`
                  ? { op: '>='; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                  : P extends `${infer L} < ${infer R}`
                    ? { op: '<'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                    : P extends `${infer L} > ${infer R}`
                      ? { op: '>'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                      : // Level 6: Addition/Subtraction
                        P extends `${infer L} + ${infer R}`
                        ? { op: '+'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                        : P extends `${infer L} - ${infer R}`
                          ? { op: '-'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                          : // Level 7: Multiplication/Division/Matmul
                            P extends `${infer L} // ${infer R}`
                            ? { op: '//'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                            : P extends `${infer L} * ${infer R}`
                              ? { op: '*'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                              : P extends `${infer L} / ${infer R}`
                                ? { op: '/'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                                : P extends `${infer L} % ${infer R}`
                                  ? { op: '%'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                                  : P extends `${infer L} @ ${infer R}`
                                    ? { op: '@'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                                    : // Level 8: Power (right-associative, but pattern matching handles it)
                                      P extends `${infer L} ** ${infer R}`
                                      ? { op: '**'; left: ParseExprPattern<L>; right: ParseExprPattern<R> }
                                      : // Level 9: Unary operators
                                        P extends `-${infer X}`
                                        ? { op: 'neg'; arg: ParseExprPattern<X> }
                                        : P extends `~${infer X}`
                                          ? { op: '~'; arg: ParseExprPattern<X> }
                                          : // Function call: name(args...)
                                            IsFunctionCall<P> extends true
                                            ? {
                                                fn: ExtractFunctionName<P>;
                                                args: ParseFunctionArgs<ExtractFunctionArgsRaw<P>>;
                                              }
                                            : // Parentheses (must come after function call check)
                                              P extends `(${infer Inner})`
                                              ? ParseExprPattern<Inner>
                                              : // Trim whitespace
                                                P extends ` ${infer X}`
                                                ? ParseExprPattern<X>
                                                : P extends `${infer X} `
                                                  ? ParseExprPattern<X>
                                                  : // Number literal
                                                    IsNumber<P> extends true
                                                    ? { literal: P }
                                                    : // Identifier
                                                      IsIdentifier<P> extends true
                                                      ? { var: P }
                                                      : { unknown: P };
Pextends string

Parse an expression pattern into an AST at the type level.

Supports:

  • Ternary: x ? y : z
  • Logical: |, ^, &
  • Comparison: ==, !=, <, <=, >, >=
  • Arithmetic: +, -, *, /, //, %, @
  • Power: ** (right-associative)
  • Unary: -x, ~x
  • Parentheses: (x + y)
  • Function calls: relu(x), sigmoid(x @ w)
  • Identifiers: input, weights, z_gate, etc.
  • Number literals: 1, 2, 0.5

Precedence (lowest to highest):

  1. Ternary ? :
  2. Logical |
  3. Logical ^
  4. Logical &
  5. Comparison ==, !=, <, <=, >, >=
  6. Addition +, -
  7. Multiplication *, /, //, %, @
  8. Power **
  9. Unary -, ~
Previous
ParseError
Next
ParseResult