uutils / uutils/awk

uutils AWK progress report

Open
#16 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
27
Forks
7
Avg merge
4h 32m
Merged PRs (30d)
11

Description

I will be updating this issue as we make progress. Please feel free to take down good first issues here and in the issue tracker.

Interpreter Tasklist

  • for-each loops. May be complicated to get right due to the configurable order, so I'm putting it off a bit.
  • Field splitting mode of FIELDWIDTHS.
  • Some other record splitting modes.
  • Support for getline and print/print redirections in the VM.
  • General I/O in the event loop and VM dispatch.
  • Wire in lexer/parser in the interpreter for robust indirect call parsing + built-in funs disambiguation, libloaded funs disambiguation.
  • Remaining built-in vars auto-setting.
  • Magic around SYMTAB, FUNCTAB, PROCINFO. I'm handling this.
  • Range patterns. Requires either allocating a register for the duration of the program or doing so as an internal symbol in the symbol table.
  • Etc.

Various

  • One or two parser differentials I've got written down and should get to fixing. God I hate AWK's grammar. It would be neat to refactor/rewrite the parser into using chumsky combinators.
  • More robust --pretty-printing, with more precedence disambiguation and default args expansion for built-in functions.
  • Fully wire in compatibility modes and ensure they are enforced.
  • Library loading (via libloading) and C/FFI function calls.
  • Debugger.
  • Get clap to behave properly.
  • Sanity.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or single entry point. Choose one unchecked item from the Interpreter Tasklist, then trace the relevant interpreter, VM, event-loop, lexer, or parser area named in the task. Done requires completing that narrowly selected item and verifying its behavior against the project's existing checks.

Written by the indexing model from the issue text.

Assessment

Tech stack
awk, rust
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.