I’ve been fascinated by the Scala language since I first saw it. I’ve been fortunate enough to be able to use Scala in a couple of projects. One of the parts of the Scala standard library I really like is the parser combinator stuff. I’ve been spending a bit of time recently playing with some ideas as to how something like it could be made for the new Swift language from Apple and I’ve made a first cut here.
It still needs a lot of work, but at the moment it is usable. What I’m thinking is I will use it as the basis of a much nicer one that follows the Scala version more closely now that I have a better understanding of how Swift works. I doubt I’ll be able to make it a nice as the Scala one, but I may be able to get close with any luck 🙂
I have managed to get the Objective-C version of pegged to spit out a parser using Swift rather than Objective-C 🙂
It’s getting late, so I really should get some sleep.
I finally figured out what was causing the compiler to crash. The following code will crash the Swift compiler unless the inout parameter to the block type is removed.
I’ve been spending a bit of time having a play with Apple’s Swift. So far I find the language to be interesting.
It seems to be missing a few things. Working with strings is a real pain 🙁 Hopefully this will be fixed in later versions of the language/compiler.
I’m also hitting many problems with the Xcode 6.0 beta crashing, but more annoyingly after getting a fairly large amount of Swift code ready it seems to be crashing the compiler 🙁
I’m trying to port the pegged parser generator to swift. The first step is to update the existing tool to generate swift as output. This I got working fairly quickly, then it was down to fixing the various syntax errors and learning how things are done in Swift. Now there are no syntax errors, but it still won’t compile 🙁 Ah well. Maybe I should just have a go at writing one from scratch 😉
I’ve been playing with the new language from Apple called Swift. It looks like it might be interesting, especially if they open it up so it can be used on other platforms.