[ragel-users] union operator and thread-local variables

Adrian Thurston adrian.thurston at esentire.com
Thu Oct 29 12:39:55 UTC 2009


I do recognize the value of such a feature, and I would like to add 
features that make programming in Ragel a better experience, however, 
the feature that you describe is just not possible in Ragel. A mapping 
from the current input character and current state to some thread 
context is beyond the limits of the DFA execution model, to which the 
Ragel compiler is confined.

-Adrian

Devin Bayer wrote:
> Hi Adrian:
> 
> After our discussion I think I can express this more clearly. 
> Ragel works well to recognize my grammar but doesn't expose the 
> primitive constructs required to determine context, which is 
> important for extracting values from the input stream.
> 
> Workarounds are available but they require an unmaintainable 
> amount of copy & pasting and are less efficient, since they use 
> backtracking or duplication of all shared states. A macro 
> language would improve the situation, but it would only hide the 
> complexity.
> 
> My proposal would make ragel easier to use. Constructs like 
> matching text before ']]>', which the manual admits cannot be 
> expressed using ragel's RE operators, would become simpler.
> 
> Each state is in one or more threads.  It doesn't require any 
> runtime overhead to make this information available and I don't 
> see any major hurdles with keeping track of the information in 
> the compiler.  It doesn't require action rewriting, just building 
> one more piece of data.
> 
> So my concern is not about implementation, but that you don't 
> recognize the value of this feature.
> 
> Thanks,
> Devin
> 
> _______________________________________________
> ragel-users mailing list
> ragel-users at complang.org
> http://www.complang.org/mailman/listinfo/ragel-users
> 




More information about the ragel-users mailing list