Closes #26 - Added -i flag to select interpreter (lambda or debruijn) - Created debruijn package with Expression interface - Variable contains index and optional label - Abstraction contains only body (no parameter) - Application structure remains similar - Implemented De Bruijn reduction without variable renaming - Shift operation handles index adjustments - Substitute replaces by index instead of name - Abstracted Engine into interface with two implementations - LambdaEngine: original named variable engine - DeBruijnEngine: new index-based engine - Added conversion functions between representations - LambdaToDeBruijn: converts named to indexed - DeBruijnToLambda: converts indexed back to named - SaccharineToDeBruijn: direct saccharine to De Bruijn - Updated main to switch engines based on -i flag - All test samples pass with both engines Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
14 lines
659 B
Go
14 lines
659 B
Go
// Package "config" parses ad handles the user settings given to the program.
|
|
package config
|
|
|
|
// Configuration settings for the program.
|
|
type Config struct {
|
|
Source Source // The source code given to the program.
|
|
Destination Destination // The destination for the final result.
|
|
Verbose bool // Whether or not to print debug logs.
|
|
Explanation bool // Whether or not to print an explanation of the reduction.
|
|
Profile string // If not nil, print a CPU profile during execution.
|
|
Statistics bool // Whether or not to print statistics.
|
|
Interpreter string // The interpreter to use: "lambda" or "debruijn".
|
|
}
|