TorchLean API

NN.Tensor.Internal.Syntax.Parser.Expression.Parse

Expression token parsing #

The recursive parser and its canonical-token theorem turn a checked token stream into one physical-axis expression.

Parse one indexing expression while maintaining grouping and duplicate-axis state.

Instances For
    theorem TorchLean.Tensor.Internal.Syntax.Parser.Impl.tokenKinds_eq_of_parseExpressionTokens_eq_ok (policy : IdentifierPolicy) (config : ExpressionConfig) (expressionSpan : Span) (tokens : List Token) (state : ExpressionState) (expression : Expression) (hParse : parseExpressionTokens policy config expressionSpan tokens state = Except.ok expression) :
    expression.tokenKinds = state.tokenKinds ++ List.map (fun (token : Token) => canonicalTokenKind policy token.value) tokens

    A successful expression parse records the canonical token sequence it consumed.

    theorem TorchLean.Tensor.Internal.Syntax.Parser.Impl.parseExpressionTokens_canonical (config : ExpressionConfig) (sourceExpressionSpan targetExpressionSpan : Span) (sourceTokens targetTokens : List Token) (sourceState targetState : ExpressionState) (sourceExpression : Expression) (hTokens : List.map Located.value targetTokens = List.map (fun (token : Token) => canonicalTokenKind IdentifierPolicy.pythonUnicode token.value) sourceTokens) (hState : sourceState.CanonicalEq targetState) (hParse : parseExpressionTokens IdentifierPolicy.pythonUnicode config sourceExpressionSpan sourceTokens sourceState = Except.ok sourceExpression) :
    (targetExpression : Expression), parseExpressionTokens IdentifierPolicy.pythonUnicode config targetExpressionSpan targetTokens targetState = Except.ok targetExpression targetExpression.tokenKinds = sourceExpression.tokenKinds

    Canonically equivalent token streams parse to expressions with equal token structure.

    theorem TorchLean.Tensor.Internal.Syntax.Parser.Impl.canonical_words_valid_of_lex_eq_ok (source : String) (whitespace : LexicalWhitespace) (tokens : List Token) (hLex : lex source IdentifierPolicy.pythonUnicode whitespace = Except.ok tokens) (text : String) :
    TokenKind.word text List.map (fun (token : Token) => canonicalTokenKind IdentifierPolicy.pythonUnicode token.value) tokenstext.toList [] ∀ (character : Char), character text.toListIdentifierPolicy.pythonUnicode.isWordChar character = true

    Canonicalized words from a successful Python-policy lex remain valid lexer words.

    The span covering an entire source string.

    Instances For