144 Commits
Author SHA1 Message Date
Guillem L. Jara 8d80ab8284 Merge pull request #52 from Franklin-Qi/fix-bug#37-Parser-unenforced-non-keyword-names-on-namespaced-identifiers
parser: reject reserved keywords in qualified identifiers
2026-06-28 20:20:54 +02:00
Guillem L. Jara 40a3c8bae0 parser: keep tests 2026-06-28 20:03:41 +02:00
Guillem L. Jara 5c96dbd379 parser, lexer: move explicit ident qualification to parser. 2026-06-28 19:49:34 +02:00
Franklin-QiandSylvestre Ledru 04610f1cb2 parser: extend Pratt error spans to cover subexpressions (#50)
- Track an anchor at the start of each Pratt subexpression and report errors from that anchor through the offending token, instead of highlighting only the final token.

- Apply this to assignment/index/place errors, prefix operators, unclosed parentheses and brackets, and related Pratt paths. Keep narrow spans for non-associative operators (e.g. chained = ).

- Add unit tests that assert the highlighted source snippets for common parse failures.

Closes: #42

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
2026-06-28 18:57:27 +02:00
yushuoqi 7436420736 parser: reject reserved keywords in qualified identifiers
Validate namespace and literal parts of ns::name against gawk's reserved
keyword list when building identifiers, including @namespace directives.

Closes: #37
2026-06-28 18:22:44 +02:00
Guillem L. Jaraandyor1xd 67bf583c51 interpreter: widen instructions, immediates (#47)
* interpreter: widen instructions, immediates

* lexer, parser: add tokens and nodes for built-in functions

* chore: fix CI

---------

Co-authored-by: yor1xd <gabrielhenriquenf1@gmail.com>
2026-06-28 18:21:48 +02:00
yushuoqi 1b96ee9d92 Add unit tests for parser and lexer
Expand test coverage for the parser and lexer using existing patterns: test_parser! macro assertions for AST s-expressions and token-slice comparisons for the lexer.

Closes: #43
2026-06-17 12:01:53 +02:00
Photon101 0bbf52227c parser: recognize exponentiation operators 2026-06-11 17:53:47 +02:00
Guillem L. Jara 55b1fbd561 lexer, parser: add small integer atoms
Useful for immediate values in the interpreter; allows us to save on register loads and loads & stores in the constants table.
2026-06-02 12:20:32 +02:00
Guillem L. Jara b23d1e317c interpreter: print statements; calling conventions 2026-05-29 02:06:25 +02:00
yor1xd 1df4886ac5 parser: handle chained array indexing in parse_place and add tests 2026-05-29 00:57:01 +02:00
yor1xd ad6ba45c7c parser: add support for multidimensional arrays 2026-05-29 00:57:01 +02:00
Guillem L. Jara ecc7dcced6 interpreter: binary placing operations; expand IR 2026-05-27 18:16:45 +02:00
Guillem L. Jara fa77cb8f44 parser: lower matched regexes to typed ones 2026-05-25 14:14:05 +02:00
Guillem L. Jara 98fa3c33c2 perf: switch to ahash, indexmap-allocator-api 2026-05-25 01:50:22 +02:00
Guillem L. Jara 8b29b26050 chore: add rustfmt.toml
Pretty sure nobody was working on anything atm, sorry otherwise...
2026-05-24 02:46:09 +02:00
Guillem L. Jara d82792d3ee interpreter: begin codegening expressions 2026-05-21 17:23:20 +02:00
Guillem L. Jara 5af0dbc4d0 chore(parser): add tests 2026-05-19 23:57:44 +02:00
Guillem L. Jara ea5bd85525 parser: fix delete array indexing 2026-05-19 22:58:19 +02:00
Guillem L. Jara 49dfed25d8 chore(parser): format tests 2026-05-19 16:48:00 +02:00
Guillem L. Jara 38779a4457 chore(parser): add tests 2026-05-18 17:50:52 +02:00
Guillem L. Jara 0a19623285 parser: tighten for loop logic; solve gawk ambiguity 2026-05-18 17:33:21 +02:00
Guillem L. Jara 4d28100f0b chore(parser): add tests 2026-05-18 13:00:23 +02:00
Guillem L. Jara 66ed9a914e parser: multidimensional look-ups 2026-05-18 12:50:37 +02:00
Guillem L. Jara 8422aac095 parser: do not process array indexing 2026-05-18 12:23:26 +02:00