Major additions and improvements across the Bob language ecosystem: Core Language Features: - Add comprehensive dictionary support with full CRUD operations - Implement built-in functions: keys(), values(), has() for dictionaries - Add string multiplication operator (string * number) - Enhance error reporting with detailed context and call stacks - Add ternary operator support (condition ? true_expr : false_expr) - Implement do-while loops with break/continue support - Add array increment/decrement operators (++, --) - Add cross-type comparison operators with proper type coercion - Implement toInt() function for float-to-integer conversion - Add float array index auto-truncation (like JavaScript/Lua) Code Quality & Linter Fixes: - Remove all "using namespace std;" statements (best practice) - Add proper std:: prefixes throughout codebase - Fix const correctness in helper functions - Resolve class/struct declaration mismatches - Fix sign comparison warnings in array indexing - Remove unused lambda captures in built-in functions - Fix brace initialization warnings in parser Documentation & Tooling: - Significantly expand BOB_LANGUAGE_REFERENCE.md with new features - Update VS Code extension with enhanced syntax highlighting - Add comprehensive code snippets for new language features - Update version information and package metadata Test Suite: - Add extensive dictionary functionality tests - Add tests for new operators and built-in functions - Add comprehensive copy behavior tests (by value vs by reference) - Add performance and edge case testing Architecture Improvements: - Enhance Value system with proper move semantics - Improve memory management with shared_ptr for complex types - Add trampoline-based tail call optimization - Implement proper error context propagation This represents a major milestone in Bob language development with production-ready dictionary support, comprehensive testing, and significantly improved code quality.
23 lines
718 B
Plaintext
23 lines
718 B
Plaintext
// Test to demonstrate bracket conflict between arrays and dictionaries
|
|
|
|
// Current working syntax
|
|
var arr = [10, 20, 30];
|
|
var dict = {"0": "zero", "1": "one", "2": "two"};
|
|
|
|
print("Array access:");
|
|
print(arr[0]); // 10
|
|
print(arr[1]); // 20
|
|
|
|
print("Dictionary access (current syntax):");
|
|
print(dict{"0"}); // zero
|
|
print(dict{"1"}); // one
|
|
|
|
print("If we used dict[\"0\"] instead of dict{\"0\"}:");
|
|
print("This would conflict because:");
|
|
print(" - arr[0] means array index 0");
|
|
print(" - dict[0] would mean dictionary key \"0\"");
|
|
print(" - The parser couldn't distinguish between them!");
|
|
|
|
print("Current syntax is clear:");
|
|
print(" - arr[0] = array indexing");
|
|
print(" - dict{\"0\"} = dictionary key access"); |