v2: Implement Interpreter.atg with typed FunctionValue, mixed-arg functions, and expression-binding (:=); fix Coco/R csproj command
This completes the v2 grammar based on master’s capabilities while aligning with the v2 design philosophy (numeric-first, strings as function-args only): - Implement full arithmetic grammar ( +, -, *, /, %, ^, parentheses, unary sign ), with support for number/hex/binary literals. - Add variables and arrays: - Numeric variables via :: (evaluate RHS now and store numeric) - Expression-bound variables via := (capture RHS text; re-parse and evaluate at use-time) - Numeric arrays via -> and array literals + indexing (with bounds/type checks) - Add comparisons (==, <, >, <=, >=) producing FunctionValue TRUE/FALSE. - Add function calls with mixed arguments: numeric expressions and quoted string literals. - In numeric contexts, enforce numeric results; emit clear type errors if a function returns a string. - Root production always produces a FunctionValue through InputInterpreter.ProduceOutput(FunctionValue). Runtime integration (expected APIs on InputInterpreter): - Variable APIs: AssignNumeric, AssignExpression, AssignNumericArray; TryGetNumeric, TryGetExpression, TryGetNumericArray - Function dispatch: ExecuteFunction(name, FunctionArgument[]) - Expression evaluation for :=: EvaluateExpression(expressionText) Coco/R build fix: - Correct the PreBuild command in src/core/core.csproj: - Use -frames (without the stray space) and point to cocor - Use the correct case and path for the grammar: cocor/Interpreter.atg Notes: - Strings are valid only as function arguments and not as standalone values or variables. - Grammar emits concise, actionable error messages for type mismatches, missing variables, and array bounds.
This commit is contained in:
parent
66ec23a420
commit
f532d13d8c
2 changed files with 307 additions and 85 deletions
|
|
@ -8,7 +8,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
|
||||
<Exec Command="dotnet tool run coco -namespace csmic.Interpreter - frames . $(ProjectDir)\cocor\interpreter.atg" />
|
||||
<Exec Command="dotnet tool run coco -namespace csmic.Interpreter -frames $(ProjectDir)cocor $(ProjectDir)cocor/Interpreter.atg" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue