Commit graph

33 commits

Author SHA1 Message Date
9b74c03a9d Cleaning up naming 2025-08-20 20:32:13 -05:00
0a67e6e2cc Adopt .NET naming and structure: CsMic.* namespaces, PascalCase projects and solution; update Coco namespace; update package id and NuGet publish target; adjust project refs and tests. 2025-08-20 20:10:34 -05:00
e84cce9fef tests(stdlib): avoid decimal attribute arguments; use string TestCase values and parse to decimal for high-precision cases 2025-08-20 06:06:42 -05:00
a19a092b93 Fixed test case declaration 2025-08-20 06:04:04 -05:00
7c54bcd1e6 fix(stdlib): correct max() to use Math.Max 2025-08-20 05:53:55 -05:00
ced7fbd7c3 tests(stdlib): add tests for abs, sign, min, max, constants 2025-08-20 05:53:37 -05:00
afb7a65a66 Function registry fix. 2025-08-20 05:45:22 -05:00
e51068a27e Adding Min and Max 2025-08-20 05:28:05 -05:00
82ceb7e5cd Refactored ValueType to FunctionValueType
It was causing issues.
2025-08-20 05:21:57 -05:00
1e9d9233f8 Added tests for stdlib 2025-08-20 05:05:34 -05:00
fcbdaa1f9d Added two base functions 2025-08-20 04:55:04 -05:00
e458cdd910 periodic checkpoint 2025-08-20 03:48:58 -05:00
b1e9e58783 Untracking autogenerated 2025-08-20 02:43:06 -05:00
e1eb12476b fixing declarations 2025-08-20 01:45:11 -05:00
fb2c62399c function value issue 2025-08-20 01:07:45 -05:00
64a12a353c Implement AbsoluteValue function in stdlib 2025-08-19 23:50:19 -05:00
49902cda2a Initial function project commit 2025-08-19 23:45:55 -05:00
0e230f7a49 Ignoring autogenerated .old files 2025-08-19 18:48:57 -05:00
362af6f7bf Fixed number to decimal parsing, additional tests 2025-08-19 05:15:13 -05:00
648bd3bad0 tests: Add NUnit suite for InputInterpreter.Interpret covering arithmetic, comparisons, variables, := binding, arrays, soft errors, and timing
Adds InputInterpreterTests with:

- Arithmetic cases including precedence, hex/binary, exponent.
- Comparisons yielding numeric booleans.
- Variable assignment (::) and persistence across calls; unknown variable soft error.
- Expression binding (:=) re-evaluated at use-time; invalid expression soft error.
- Array assignment (->) and indexing; out-of-range and index-expression scenarios.
- String literal used as expression soft error.
- Divide-by-zero soft error (no thrown exception).
- LastExecutionTime measured across calls.

Each test asserts both the return value and NumericValue/StringValue for consistency.
2025-08-19 04:52:37 -05:00
2cfd01f06f Naming Convention fix 2025-08-19 04:50:05 -05:00
f0670b081c Added reference to core project 2025-08-19 04:47:43 -05:00
3efc97e9d0 Stub test project 2025-08-19 04:42:37 -05:00
53a904e0b0 v2: Add public Interpret(string) with soft-error semantics and elapsed time
Implements developer-facing Interpret API that:

- Parses and executes input via generated Scanner/Parser and current interpreter state.
- Returns the numeric result (decimal) and updates NumericValue/StringValue.
- Emits soft errors: never throws; on error sets NumericValue=0 and StringValue to parser error format or exception message.
- Restores LastExecutionTime measurement for the previous interpretation.

This preserves the original nomenclature while aligning to v2’s FunctionValue model.
2025-08-19 04:31:53 -05:00
b2213663d1 Fixed minor gramar issue. 2025-08-19 04:00:31 -05:00
c5f35b9d34 v2: Wire InputInterpreter runtime APIs for v2 grammar
Add in-memory stores and APIs required by the v2 Coco/R grammar:

- Variables: AssignNumeric, AssignExpression, AssignNumericArray; TryGetNumeric, TryGetExpression, TryGetNumericArray.
- Mixed-arg function dispatch: ExecuteFunction(name, FunctionArgument[]), plus RegisterFunction.
- Expression evaluation for :=: EvaluateExpression(expressionText) via generated Scanner/Parser with a child interpreter sharing stores.
- Output handling preserved: ProduceOutput(FunctionValue) updates NumericValue/StringValue.

These changes allow the generated parser to compile and run against the v2 runtime, enforcing the numeric-first, strings-as-arguments-only model.
2025-08-19 03:51:05 -05:00
f532d13d8c 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.
2025-08-19 03:45:57 -05:00
66ec23a420 Update README.md 2025-08-19 03:09:41 -05:00
841a10cb97 Update README.md 2025-08-19 03:06:57 -05:00
87bec68e1f docs: add Design Philosophy and Args-Only Strings guidance for v2 2025-08-19 03:06:13 -05:00
eb3bbcb69e Check in 2025-06-12 04:32:18 -05:00
5066257912 Initial commit
checkpoint only
2025-06-12 02:18:27 -05:00
0535640e57 Starting version 2 2025-06-11 02:47:24 -05:00