this post was submitted on 11 Mar 2024
12 points (87.5% liked)
Programming
17416 readers
51 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
If I can remember my theory correctly the difference between languages revolves around the machinery required to recognize the language.
Regular expressions can be recognized with just finite state machines (NFA or DFA have the same power).
Context free languages require a Push down automata. And context sensitive languages need a Turing Machine.
When looking at regular expressions as NFAs you can see the operations you mentioned.
Concat a b: is just state transition
Union a b: have an epsilon transition from the start state to an NFA for a and one into the NFA for b
Repeat a: add an epsilon transition from the accept state of a to it's own start state
With the more powerful grammars you might be able to do similar analysis on the ability to join machines together but it's been too many years since I did any formal work like that.