Note that there are some explanatory texts on larger screens.

plurals
  1. USJosh Haberman
    primarykey
    data
    text
    plurals
    1. This table or related slice is empty.
    1. COAs a short proof of this, consider that `a(?=..b)` is the empty language, because `a ∩ a..b = ϵ`. So if we follow your line of reasoning `r = ϵ` and `([^a]|a(?=..b))*` is equivalent to `([^a]|ϵ)*` or just `[^a]*`. But this is clearly false because `aaab` matches the original regex but not the supposedly equivalent one.
      singulars
    2. CO@Moron: you are presuming that lookahead expressions compose the same way that regular expressions do. You are presuming that `([^a]|r)*` matches the same language as `([^a]|a(?=..b))`, which *is not true*, even if `r` matches the same language as `a(?=..b)`. If you do the DFA expansion yourself you will see. Since lookahead matches characters without consuming them, it doesn't compose in the same way that regular expressions do. If you are still unconvinced of this I will post an actual DFA expansion later.
      singulars
    3. COI have a parser capable of parsing a binary serialization format at >500MB/s. The parser passes the parsed data to the client application through a set of callbacks. One of these callbacks is called for every value (every 5-10 bytes). A convenient way to provide a concrete implementation for a set of callbacks in C++ is to implement a virtual base class. A JITted version could parse 100s of megabytes. If I use plain C++ virtual function dispatch, every 5-10 bytes I have to chase two extra pointers in my critical path, and I have to use an indirect branch which may be predicted incorrectly.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload