---
# System prepended metadata

title: '[42sh] Manual'

---

# [42sh] Manual

### Reunions - Contre Rendu

- [02/01/2026 - 15h00: Premiere Reunion](https://hackmd.io/@lWehRfRKTLCdaKy7vo7QYw/SJURV4HV-e/edit)
- [04/01/2026 - 10h00: Deuxieme Reunion](https://hackmd.io/@GBaechler/HkFSGo8NZg/edit)
- [05/01/2026 - 19h30: Troisieme Reunion](https://hackmd.io/@lWehRfRKTLCdaKy7vo7QYw/SJ6pxFtEWg/edit)
- [08/01/2026 - 12h00: Reunion AST/Lexer/Parser](https://hackmd.io/@GBaechler/rkxLR-p4-e/edit)
- [08/01/2026 - 19h00: Reunion2 AST/Lexer/Parser](https://hackmd.io/@lWehRfRKTLCdaKy7vo7QYw/B1agydpNZx/edit)
- [10/01/2026 - 19h00: Reunion Fix lexer](https://hackmd.io/@GBaechler/Bk1ZB9kSWe/edit)
- [11/01/2026 - 10h30: Reunion objectifs à finir de step 1 et prévoir la step 2](https://hackmd.io/@24x-N-KbSWKeEgla1yeuJA/r1CNJxZHZl/edit)
- [12/01/2026 - 14h38: Reunion Lexer théorique](https://hackmd.io/@GBaechler/r1kr1gbS-e/edit)
- [18/01/2026 - 10h00: Reunion post rendu step-2](https://hackmd.io/@GBaechler/BkQ0MXcSZl/edit)
- [20/01/2026 - 17h47: Reunion feat Variables ](https://hackmd.io/@24x-N-KbSWKeEgla1yeuJA/B19UWmqHZe)
- [25/01/2020 - 14h: Reunion derniere semaine](https://hackmd.io/@TxbKjcpNT-6ci1Mj2cDAbw/Bkmpl9mU-l/edit)


### Coaching
- [09/01/2026 - 18h30: Premier Coaching](https://hackmd.io/@GBaechler/BJ_P7aA4Zx/edit)
- [16/01/2026 - 16h00/16h30: Deuxieme Coaching](https://hackmd.io/@24x-N-KbSWKeEgla1yeuJA/rJ-6z1OBbx)

### Code Review

- [TODO](https://hackmd.io/@GBaechler/SkoZ2hfrZe/edit)

### Documentation - Liens Utiles
- [Slide](https://hackmd.io/@lWehRfRKTLCdaKy7vo7QYw/BJUpjivNbx/edit)
- [Trove](https://trove.assistants.epita.fr/docs/42sh)
- [Gitlab](https://gitlab.cri.epita.fr/guilhem.baechler/42sh)
- [SCL](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08)
- [Lien SCL (Regle du Lexer)](https://pubs.opengroup.org/onlinepubs/009604499/utilities/xcu_chap02.html#tag_02_03)
- [Syntax eBNF](https://trove.assistants.epita.fr/docs/42sh/guide/shell_syntax/)
- Notre documentation:
    - [Convention](https://hackmd.io/@lWehRfRKTLCdaKy7vo7QYw/SyH8sUrV-e)
    - [Compiler 42sh avec autotools](/779tbCmSTf6mFH1W8KiKgQ)
    - [Théorie SCL](https://hackmd.io/@OCLMOA3MSOCfifUbI8-djA/HyMD9kNSZe/edit)
    - [Parser Theory](https://hackmd.io/@GBaechler/Hy1aS9PH-x/edit)

### Implementations
- [Pipeline](/MjfoYafMRjifG8gOv9LMWA)
- [Redirection](https://hackmd.io/@24x-N-KbSWKeEgla1yeuJA/HyJf3geLbx)
- [Function](https://hackmd.io/@TxbKjcpNT-6ci1Mj2cDAbw/ByfEzcw8Zg/edit)

## Roadmap

#### STEP 2 [Lundi - Mardi Matin]:
- [x] While: Florian + Louis Alexandre
- [x] Negation + Pipeline : Matthis
- [x] Variables : Florian + Guilhem
- [x] Redirections <> et (>& <&) a test : Guilhem
    - [x] <>
    - [x] >& <&

#### STEP 3 [Mardi aprem - Jeudi soir]:
- [ ] Fix: Prendre le temps de reflechir au edge case.
- [x] Continuer les fixs.
    - [x] split exec_cmd
    - [x] split redirection_{run/file} 
    - [x] redir
        - [x] IONUMBER doit etre coller a un > pour etre conisderer comme tel
        - [x] expand sur les filename / IONUMBER
            - [x] filename / FD
            - [ ] IONUMBER (necessite un LL(2) probablement on va pas le faire sauf si on a le temps)
- [ ] Test Fn
    - [ ] revoir les tests fait sur toutes les features
    - [ ] croiser les features dans les tests
    - [ ] sur les cas d'erreur de parsing / lexing
    - [ ] erreur d'exec
- [ ] Builtin: 
    - [x] exit (Florian)
    - [x] export (Florian)
    - [ ] break/continue (Louis-Alexandre)
    - [x] dot (Guilhem)


MERCREDI SOIR:
- [x] Command Block (Florian + Matthis): Mardi
- [ ] Functions (Matthis + Guilhem): Mercredi
- [ ] Command Substitution:
=> FIN JEUDI TOUT FINIT