digitalmars.D - D for Suneido
- Pragma Tix (5/5) Aug 12 2012 Andrew McKinlay author of Sundeido[1] is playing around with D.
- Walter Bright (2/7) Aug 12 2012 I suspect his problems come mostly from trying to write Java code in D.
- Pragma Tix (15/16) Aug 12 2012 Sure, but atm I have no idea what is a good D solution for the following...
- Walter Bright (3/18) Aug 12 2012 There's a whole thread here about building a lexer in D entitled "std.d....
- bearophile (20/31) Aug 12 2012 From the blog post:
- Era Scarecrow (11/26) Aug 12 2012 Done that before :) Quite heavily in one of my sources.
Andrew McKinlay author of Sundeido[1] is playing around with D. On his blog[2] he talks about problems in porting Java to D and D in general. A fair article, though. 1) http://www.suneido.com/ 2) http://thesoftwarelife.blogspot.fr/2012/08/d-tours.html
Aug 12 2012
On 8/12/2012 10:47 AM, Pragma Tix wrote:Andrew McKinlay author of Sundeido[1] is playing around with D. On his blog[2] he talks about problems in porting Java to D and D in general. A fair article, though. 1) http://www.suneido.com/ 2) http://thesoftwarelife.blogspot.fr/2012/08/d-tours.htmlI suspect his problems come mostly from trying to write Java code in D.
Aug 12 2012
Am 12.08.2012 20:51, schrieb Walter Bright:I suspect his problems come mostly from trying to write Java code in D.Sure, but atm I have no idea what is a good D solution for the following problem. Quote Andrew : The first thing I ran into was that the lexer returns "tokens", which in the Java code are not just integer enums, but actual enum classes with fields and methods. ...... In typical new user fashion, I tried to reproduce the Java style token enum in D. (It's hard not to avoid "cutting against the grain" when learning a new language.) D does allow you to use structs for enums so it seemed this would work. But if you use structs then you lose the automatic assignment of consecutive integer values, and D struct's are value types so they aren't necessarily unique. end quote What is the D way here ?
Aug 12 2012
On 8/12/2012 12:27 PM, Pragma Tix wrote:Am 12.08.2012 20:51, schrieb Walter Bright:There's a whole thread here about building a lexer in D entitled "std.d.lexer requirements" and another entitled "D Lexer" which should be most helpful.I suspect his problems come mostly from trying to write Java code in D.Sure, but atm I have no idea what is a good D solution for the following problem. Quote Andrew : The first thing I ran into was that the lexer returns "tokens", which in the Java code are not just integer enums, but actual enum classes with fields and methods. ...... In typical new user fashion, I tried to reproduce the Java style token enum in D. (It's hard not to avoid "cutting against the grain" when learning a new language.) D does allow you to use structs for enums so it seemed this would work. But if you use structs then you lose the automatic assignment of consecutive integer values, and D struct's are value types so they aren't necessarily unique. end quote What is the D way here ?
Aug 12 2012
Pragma Tix:2) http://thesoftwarelife.blogspot.fr/2012/08/d-tours.htmlFrom the blog post: -----------------------Another minor annoyance was the lack of an equivalent to Java's static import. If I want to refer to the tokens as just IF or ELSE I could make them "anonymous". But then they don't have a specific type. Or I can give the enum a named type, but then I have to always reference them with Token.IF . In Java I could say import static Token.* and then just use the bare names.<This helps: with(Token) { // lot and lot of code here } ---------------------One of them being that you can't store immutable objects in a map! Hopefully this is something they'll figure out. I eventually gave up on immutable and managed to get const to work, although even that was a struggle.<Maybe rebindable helps: import std.typecons; immutable class A { this() immutable {} } void main() { Rebindable!(immutable(A))[int] values; values[0] = new A; } Or maybe he refers to what Object ref was trying to do. Bye, bearophile
Aug 12 2012
On Sunday, 12 August 2012 at 23:35:39 UTC, bearophile wrote:Pragma Tix:2) http://thesoftwarelife.blogspot.fr/2012/08/d-tours.htmlFrom the blog post: -----------------------Another minor annoyance was the lack of an equivalent to Java's static import. If I want to refer to the tokens as just IF or ELSE I could make them "anonymous". But then they don't have a specific type. Or I can give the enum a named type, but then I have to always reference them with Token.IF . In Java I could say import static Token.* and then just use the bare names.This helps: with(Token) { // lot and lot of code here }Done that before :) Quite heavily in one of my sources. Glancing at the code for his lexer I wonder if the approach is right. I've only written a couple half lexers for minor projects, but he's duplicating what's in std.range & std.ascii; Also his structure and methods go twoards suggesting he's making a range but not working with D on it (next, nextAll vs front, popFront). Wouldn't an actual range for his tokens/lexer be better (which then creates/calculates and returns the current token)? I've done this once in one of my projects and it actually turned out to work very well.
Aug 12 2012