Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Breaking Up with Google Play: Why Conversations Is Now Free (gultsch.de)
    23comments
  2. Fifteen years later, the Apple Cards origin story (lexontech.org)
    6comments
  3. Revealing the details of how OpenAI agents hacked Hugging Face (swarmtraces.org)
    333comments
  4. Floci: Locally emulating any cloud service (floci.io)
    5comments
  5. We're gonna need a lot more mathematicians (terrytao.wordpress.com)
    239comments
  6. One Month Without AI (bustikiller.com)
    55comments
  7. Plan mode is dead (aymannadeem.com)
    335comments
  8. A single function Jev-like wrapper for LLMs, including vision models (allanrbo.blogspot.com)
    27comments
  9. Ollaya – Ollama for open-source, Jev-style decision models (ollaya.dev)
    122comments
  10. Show HN: Jev Plays Pokémon Red (jev-pokemon.vercel.app)
    88comments
  11. Is your Postgres migration safe or not safe? (safenotsafe.dev)
    12comments
  12. What even is an OS now? (sockpuppet.org)
    299comments
  13. 16GB iPod Nano 3G Upgrade (tuckerosman.com)
    3comments
  14. Parsing Expression Grammar vs. Regexes: Building Org Parser in Lisp, Export HTML (jointhefreeworld.org)
    3comments
  15. Calculating atmospheric drag on satellites for a Cubesat [pdf] (osti.gov)
    4comments
  16. The Murky History of Soviet-Born Tetris (mitpress.mit.edu)
    15comments
  17. ASML currently sells no chipmaking machines in Europe, executive says (nltimes.nl)
    4comments
  18. Gravity seems holographic. What does that mean for reality? (quantamagazine.org)
    180comments
  19. Jury finds Facebook liable for deceiving users in Cambridge Analytica case (cbsnews.com)
    62comments
  20. Ask HN: Who's still keeping a DOS machine up because the business depends on it?
    141comments
  21. Scientists build most accurate atomic clock (phys.org)
    8comments
  22. The far side of the Moon provides clues to a previous magnetic field (ethz.ch)
    1comments
  23. HomelabFest will be in St. Louis in September 2027 (homelabfest.org)
    27comments
  24. The Copilot+ PC brand is dead (windowscentral.com)
    2comments
  25. From Thin Air to Bootable Images: The Tine Build System (amutable.com)
    2comments
  26. Excel now supports multiple values in a single cell (techcommunity.microsoft.com)
    148comments
  27. A new world airport and its baggage (computer.rip)
    1comments
  28. Fourier Analysis: Drawing Llamas with Circles (adekau.github.io)
    6comments
  29. First Principles Thinking (sunilsadasivan.com)
    115comments
  30. Lab on a Contact Lens Can Measure Stress Through Serotonin (ieee.org)
    16comments

Parsing Expression Grammar vs. Regexes: Building Org Parser in Lisp, Export HTML

41 pointsby 2d agojointhefreeworld.org
3 comments
1h agoHN ↗

Ha, that's interesting.

I started exactly such a project, for org syntax, a while ago. Didn't get very far though because it seems to me that things in org cannot be parsed and understood in one go. For example the TODO keywords can be specified at the top of an org file and then would influence how headings in the document are understood. This cannot be done with merely a PEG.

Another tricky point is nested inline markup. Bold inside italic? Verbatim inside bold, inside italic? And so on. Would be great to support all meaningful combinations via recursive rules. Org has many inline markup things. Even programming language specific inline markup elements.

Another issue is, that Guile's PEG library, when using the non-string form of grammar rules, does not allow mutually recursive grammar rules, due to being buggy (in that way it is not excellent, but in other ways it is!). One has to use the string form or rules, which makes it a lot less nice to use, unfortunately. I hope that will be fixed at some point, because I like the library except for that. And it is in the standard lib, no need to install any dependencies. Like to use it for AoC puzzle inputs for example.

Will be interesting to read how far they got.

12m agoHN ↗

Due to personal failings, my main takeaway from this piece is that Regex is under attack -- I will not stand by as CS theory blorbo is maligned so! Of course there's an undeniable elegance to Lisp in all cases, and seeing Lisp in use today feels like seeing someone unsheathe Valerian steel. But still, the fact remains: regex is vastly underappreciated by the standard engineer, largely because a few of the most common implementations drop some of the most important features. Namely, composition.

I have no easy way to express this other than to plug my recently-released OSS, namely a library I wrote to implement "RegexStores" in Python[1] to compile complex, composed regexes upfront from a custom DSL. I'll link a representative usecase below[2], which I think drives home two things:

1. Regex deserves to be composed using named groups, at the very least! Most people aren't even aware that you can define named groups upfront and then reference them by name throughout, even 'capturing' them multiple times in one match.[3] Even when you do write patterns that use subroutines, the ergonomics of actually accessing, say, the three matched substrings for the `username` group in your single match is finnicky at best (without some magic[4]...).

2. Regex needs high quality syntax highlighting. The linked page is hopefully skimmable in a python sense, but trying to decipher the individual patterns in GitLab would be tough even for me, and I wrote the darn things. It's kinda awkwardly sized, but this screenshot drives home the basics of the point -- note the bright yellow named groups, which are basically subroutine invocations as discussed above: https://i.imgur.com/NllqM6S.png

Sorry to quasihijack the thread. Hopefully the fact that all this stuff has never been announced or published anywhere is proof enough of my good intentions -- that is, to defend my one n' only :)

Most of this functionality was conceived and implemented in a rage after I found out that Rust's main (only?) regex library avoids the possibility of infinite loops by just dropping half the features of the language, so excuse the jank. Even the halting problem seems solvable when you're willing to make moves like that!

[1]: https://gitlab.com/doering-ai/libs/basis/#regular-expression...

[2]: https://gitlab.com/doering-ai/apps/wiki-parse/-/blob/main/wi...

[3]: I wrote up an overview of advanced regexes in Python a while back, but was hit by the agential engineering bus before I had the time to polish and release it. Some may find it interesting, if overly long -- the aforementioned subroutines are covered under `3.1`, and repeated captures under `6.2`: https://gitlab.com/doering-ai/libs/basis/-/blob/main/docs/re...

[4]: https://gitlab.com/doering-ai/libs/basis/-/blob/main/my/rege...

7m agoHN ↗

“Org” in this context is emacs org mode. Seems odd in this day and age that anyone would see hierarchical text format and think “regex”!