Commit Graph

31 Commits

Author SHA1 Message Date
a6c283759d interpolation in { curly strings } 2025-11-08 16:13:40 -08:00
63ee57e7f0 curly -> Curly 2025-11-08 16:13:39 -08:00
503ca41155 { curly strings } 2025-11-08 16:13:28 -08:00
019f7d84b1 Add ?? and ??= operators 2025-11-08 16:12:20 -08:00
bae0da31c2 globals accepts {} too 2025-11-07 21:05:42 -08:00
ab12212df2 Make the extension know about the prelude 2025-11-06 09:23:18 -08:00
bc0684185a Add += and friends 2025-10-29 15:49:59 -07:00
40a648cd19 allow ? in identifier name 2025-10-29 10:38:57 -07:00
3496b29072 tell the parser about builtin global functions 2025-10-29 10:18:19 -07:00
7da4c14962 parse arrays 2025-10-28 16:30:45 -07:00
ffdd666685 Merge remote-tracking branch 'origin/main' into dotget-function-calls 2025-10-27 12:45:53 -07:00
972fd25fda update params scope detection, add array.1 (dotget array indices) 2025-10-26 22:23:46 -07:00
7cf7ac3703 allow more unicode in variable names 2025-10-26 13:03:17 -07:00
66671970e0 i did things 2025-10-24 10:17:06 -07:00
0f7d3126a2 workin' 2025-10-19 10:18:52 -07:00
78ae96fc72 wip 2025-10-17 21:13:49 -07:00
4619791b7d test: update test expectations for AssignableIdentifier token
Updated all parser and compiler tests to expect AssignableIdentifier
tokens in Assign and Params contexts instead of Identifier. Also
skipped pre-existing failing native functions test.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 19:10:40 -07:00
aee9fa0747 refactor(scope): simplify trackScope to only track AssignableIdentifier
- Update trackScope ContextTracker to use ScopeContext wrapper
- Simplify shift() to only capture AssignableIdentifier tokens
- Simplify reduce() to handle only Assign, Params, and FunctionDef
- Update hash function to use hashScope helper
- Export ScopeContext class for use in tokenizer
- Update tokenizer to access scope via ScopeContext.scope

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 18:43:11 -07:00
1e6fabf954 feat(tokenizer): use canShift to emit AssignableIdentifier vs Identifier 2025-10-17 18:34:57 -07:00
8a29090364 fix(parser): make DotGet whitespace-sensitive
- Add IdentifierBeforeDot token emitted when identifier immediately precedes '.'
- Move DotGet into @skip {} block using IdentifierBeforeDot
- Prevents 'basename . prop' from parsing as DotGet
- Allows 'basename.prop' to work as expected when identifier is in scope
- Fixes test: 'a word can be contained in parens'

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 10:40:28 -07:00
d894713744 feat(parser): complete DotGet implementation with scope tracking
- Fixed tokenizer input.read() to use absolute positions
- Fixed FN_KEYWORD term ID (33 after DotGet added to expression)
- Added DotGet to expression for use as function argument
- All 8 DotGet tests passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 07:42:07 -07:00
7e819f9c67 feat(parser): add scope-aware dot operator tokenization
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 17:47:50 -07:00
80e489f55d regexs work! 2025-10-16 09:35:31 -07:00
de36b0a711 Cool dude! 2025-10-15 16:47:42 -07:00
d9bc5a64a4 wip 2025-10-15 16:18:18 -07:00
fe7abb8b21 wip 2025-10-15 08:45:37 -07:00
dbe5e60d04 wip 2025-10-14 16:12:17 -07:00
3a12d7baff wip 2025-10-13 15:35:58 -07:00
cb62fdf437 feat(compiler): add PipeExpr compilation support
Implement Task 6 from docs/plans/2025-10-12-pipe-expressions.md

- Add pipe operator (|) termination to tokenizer
- Update grammar to include expressionWithoutIdentifier in pipeOperand
- Add PipeExpr case to compiler switch statement
- Implement pipe compilation: piped value becomes first argument
- Store piped values in temporary __pipe_value variable
- Handle both FunctionCallOrIdentifier and FunctionCall operands
- Add integration tests for pipe expressions

Tests:
- Simple pipe (5 | double) works correctly
- Additional tests exist but have pre-existing issues with function parameters

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 17:00:17 -07:00
597a25da80 hell yeah 2025-10-10 15:50:09 -07:00
0a80f6d13d works better 2025-10-08 17:30:30 -07:00