The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
1. The lounge is for the CodeProject community to discuss things of interest to the community, and as a place for the whole community to participate. It is, first and foremost, a respectful meeting and discussion area for those wishing to discuss the life of a Software developer.
The #1 rule is: Be respectful of others, of the site, and of the community as a whole.
2. Technical discussions are welcome, but if you need specific programming question answered please use Quick Answers[^], or to discussion your programming problem in depth use the programming forums[^]. We encourage technical discussion, but this is a general discussion forum, not a programming Q&A forum. Posts will be moved or deleted if they fit better elsewhere.
4. No politics (including enviro-politics[^]), no sex, no religion. This is a community for software development. There are plenty of other sites that are far more appropriate for these discussions.
5. Nothing Not Safe For Work, nothing you would not want your wife/husband, your girlfriend/boyfriend, your mother or your kid sister seeing on your screen.
6. Any personal attacks, any spam, any advertising, any trolling, or any abuse of the rules will result in your account being removed.
7. Not everyone's first language is English. Be understanding.
Please respect the community and respect each other. We are of many cultures so remember that. Don't assume others understand you are joking, don't belittle anyone for taking offense or being thin skinned.
We are a community for software developers. Leave the egos at the door.
I just saw an item on the BBC America service, covering research in Europe somewhere. Apparently some biologist is trying to modify the genes of the coffee plant so it will produce beans without caffeine! How brilliant! The whole point of coffee is the caffeine! What is the world coming to?
By the end of the day I should have a rudimentary implementation of GLoRy, my GLR parser.
GLR is the most powerful parsing algorithm known. It allows you to express your grammar however you want with never any conflicts (all "conflicts" make the GLR fork its stack and try each conflicting rule)
It can process highly ambiguous grammars, including natural language!
The tables are only LALR(1) sized, and how fast it is is inversely proportional to how many times it has been forked. This is all very very good, as it leads to linear time O(n) parsing when there are no ambiguities/forks
Also this is the only GLR implementation i've seen capable of streaming. The rest force you to load the entire document into memory at once.
The upshot of that is you could feed it an entire Bible and not worry about memory.
If there is a parser generator to end all parser generators its this.
It only has one real disadvantage and that's that it's more difficult to use depending on how you're using it. Since it can return multiple parse trees for a single parse the code to use it has to be able to handle that.
Anyway, GLoRy is peak parsing. If you can't parse it with GLoRy chances are it can't be parsed. =)