feat: reducer, but doesn`t work

This commit is contained in:
2025-12-25 00:30:15 -05:00
parent 2c3ce9baf7
commit d5999e8e1c
15 changed files with 228 additions and 150 deletions

View File

@@ -15,15 +15,15 @@ func ParseExpression(i *iterator.Iterator[tokenizer.Token]) (lambda.Expression,
}
switch token.Type {
case tokenizer.TokenAtom:
return lambda.NewAtom(token.Value), nil
case tokenizer.TokenVariable:
return lambda.NewVariable(token.Value), nil
case tokenizer.TokenDot:
return nil, fmt.Errorf("Token '.' found without a corresponding slash (column %d).", token.Index)
case tokenizer.TokenSlash:
atom, atom_err := i.Next()
if atom_err != nil {
return nil, fmt.Errorf("Could not find parameter of function: %w", atom_err)
} else if atom.Type != tokenizer.TokenAtom {
} else if atom.Type != tokenizer.TokenVariable {
return nil, fmt.Errorf("Expected function parameter, got '%v' (column %d).", atom.Value, atom.Index)
}
@@ -39,7 +39,7 @@ func ParseExpression(i *iterator.Iterator[tokenizer.Token]) (lambda.Expression,
return nil, fmt.Errorf("Could not parse function body: %w", body_err)
}
return lambda.NewFunction(atom.Value, body), nil
return lambda.NewAbstraction(atom.Value, body), nil
case tokenizer.TokenOpenParen:
fn, fn_err := ParseExpression(i)
if fn_err != nil {
@@ -58,7 +58,7 @@ func ParseExpression(i *iterator.Iterator[tokenizer.Token]) (lambda.Expression,
return nil, fmt.Errorf("Expected call terminating parenthesis, got '%v' (column %v).", close.Value, close.Index)
}
return lambda.NewCall(fn, arg), nil
return lambda.NewApplication(fn, arg), nil
case tokenizer.TokenCloseParen:
return nil, fmt.Errorf("Token ')' found without a corresponding openning parenthesis (column %d).", token.Index)
default: