Behold my babies and blessings be upon ye

seen from Jordan
seen from Spain

seen from United States

seen from Canada
seen from United States
seen from United States
seen from United States

seen from China

seen from United States
seen from China
seen from China
seen from United States

seen from United States
seen from Singapore

seen from United States

seen from United States
seen from United States
seen from China

seen from Jordan

seen from United States
Behold my babies and blessings be upon ye
Phaestus: A sphinx assassin out of my handful of OC's. Phaestus is a gay cis male, his fur/skin color is a soft grey, and his eyes are a vibrant pink. He's also a smoker, and he will give you a discount on some throwing daggers if you buy him a martini.
Like snow falling like snow When the living winds shake the clouds to pieces Like flutters of silence hurrying down To put a stop to the earth at her leafwork.
Alice Oswald, Memorial
Development note for February 19, 2015
I made the tokenizer actually do what it's supposed to do (return a list of tokens). I suppose it would make sense to write a bunch of unit tests now.
I also found a bug in the lexer (it wasn't recognizing ?>) as a stop sequence because I had the recognizer for ? ahead of the recognizer for ?> and so it never got to the latter one. I also added a rule to have it emit an "invalid" token if no other rule matched (which passes error detection up to the grammar, where it usually makes more sense to be doing anyway). This revealed that I wasn't handling white space correctly (indeed, at all): white space emitted "invalid" tokens so I added a recognizer to simply skip whitespace.
The main method is now harnessed to call the tokenizer on whatever input is provided, which is somewhat useful for testing.
Development summary for February 18, 2015
Today, mostly just cleaned a lot of (h)lint out of Phaestus (lots of unnecessary parentheses removed), but I also rewrote some of the subparsers to return strings instead of single chars or voids, in case I ever decide I want to capture the actual text recognized for some reason. Reorganized some code for better readability; also moved most of the subparsers out of the top-level of the Tokenizer.hs file (mostly to shut up HLint because I don't have type declarations on all of them, lazy me).
I especially think rewriting
optional (PC.char 'b') >> (PC.string "???") >> tabsAndSpaces >> (ident <|> (between (PC.char '\'') (PC.char '\'') ident) <|> (between (PC.char '"') (PC.char '"') ident)) >> nl
as
do bflag <- optionMaybe (PC.char 'b') _ <- PC.string ">>>" _ <- tabsAndSpaces lbl <- ident <|> between (PC.char '\'') (PC.char '\'') ident <|> between (PC.char '"') (PC.char '"') ident _ <- nl
is a massive improvement in readability (note, the semantics of these are not identical, and neither snippet is complete, no need towrite me to tell me that my code is broken. :)
Development note for February 9, 2015
Not much today either. My son had an appointment with his orthopedist and that took long than I expected. I did manage to finish converting Phaestus to build in a cabal sandbox instead of an old style cabal-dev sandbox, and I dumped the old half baked AST I wrote for it ages ago and started the process of simplifying the grammar to remove unnecessary or redundant productions. I'm still not happy with EclipseFP performance, especially buildwrapper, which sucks down two gigs of RAM every time it fires up.