Le mer. 17 oct. 2018 à 08:44, Dimitris Chloupis <kilon.al...@gmail.com> a écrit : > > Those are interesting languages and probably better ideas than what I am > thinking. However they are not what I am talking about. > > The language I am making is called "Magnatar" > > Magnatar is not Smalltalk, but it is a Smalltalk trojan horse. > > My main goals are > > 1) Create 100% readable C code, code that it looks like it was written by a > person and not automatically generated , leaving no room for suspicion > 2) Keep as close to Smalltalk as I can > 3) Map to C syntax , one to one > 4) Implement a loose variant of OOP > 5) Powerful macro system for source manipulation without the need for header > files > 6) CMake integration (automate building which a headache in C/C++) > > Essentially I am trying to make a language that can allow a smalltalker to > write C in Smalltalk and none noticing that he did. Hence why I talked about > a trojan horse. I got the live coding part covered already but I would also > like to use Pharo as the IDE of the language if I can. Also because of (3) > Magnatar will be purely statically typed not because I have any love for > static types but because it makes (3) far easier to accomplish. So Magnatar > wont be a Smalltalk implementation neither a replacement for it.
I believe you're trying to rewrite SLANG... Maybe you can reuse part of it. Making a better SLANG would certainly help, in more areas than one! Thierry > This means also that Magnatar will be a way to extend Pharo on low level. > Writting readable C using Smalltalky syntax for extensions instead of just > writting in C and then using Pharo's UFFI. Of course this will benefit those > that want to squeeze much more performance out of Pharo. > Magnatar also is not another language trying to take over the world but a > language I will use to write C code for a project I am working on which is 3d > graphics and I need the full performance. So in the end it will be a personal > language. > > Unfortunately this means no dynamic types at all, no GC , no VM, no > bytecodes, not intepretation of any sort, no image format. The only thing I > am keeping will be live coding. Also OOP will be basically super simple, only > c structs and c functions with a small API to allow you to "compose" objects > similarly to prototype based OOP but I am considering some syntax for basic > classes also. Again all these are under the prime goal of 100% readable > idiomatic C code. The rule is simple "if it cannot easily map to C , it wont > get in". So this is a highly focused language. > > I have not found yet a language that compiles to readable C code although > there a lot of them that compile to unreadable C (nim, ECL, chicken scheme, > etc). > > On Wed, Oct 17, 2018 at 8:37 AM H. Hirzel <hannes.hir...@gmail.com> wrote: >> >> The successor of Ni is 'Spry' >> >> https://github.com/gokr/spry >> http://sprylang.se/ >> >> "Spry borrows homoiconicity from Rebol and Lisp, free form syntax from >> Forth and Rebol, the word of different types from Rebol, good data >> structure literal support from JavaScript and the general coding >> experience and style from Smalltalk. It also has a few ideas of its >> own, like an interesting argument passing mechanism and a relatively >> novel take on OO." >> >> --Hannes >> >> On 10/17/18, Ben Coman <b...@openinworld.com> wrote: >> > Have you looked at Ni? (I only read about it) >> > http://goran.krampe.se/2015/09/16/ni-a-strange-little-language/ >> > >> > cheers -ben >> > >> > On Wed, 17 Oct 2018 at 03:45, Dimitris Chloupis <kilon.al...@gmail.com> >> > wrote: >> > >> >> Thank you Thierry , that was exactly what i was looking for :) >> >> >> >> On the subject of syntax, StrongTalk looks far more advanced compared to >> >> what I am aiming which is basically writting C code with Smalltalk like >> >> syntax. I am looking at this >> >> >> >> http://bracha.org/nwst.html >> >> >> >> Which describes some really impressive features. So I am aiming only for >> >> source to source compiler and not implementation of complex systems for >> >> incremental compilations , optional type system etc. >> >> >> >> On parsing strange code that is not much of an issue cause the project I >> >> am working on has pretty reasonable code and will probably offer a way to >> >> inline c code in case the parser fail. In any case my goals are small , >> >> cause I dont have resources for complex implementations. Its also a >> >> language that will be designed solely for my needs and be offered open >> >> source for anyone else that may find it useful. In any case I am sure I >> >> will have many questions to ask :) >> >> >> >> I was looking into ANTLR , since the book I am reading on language design >> >> is using ANTLR but I rather implement this in Pharo. I used SmaCC when I >> >> was working for my Python bridge and I really liked it , mostly because >> >> it >> >> offers ready made syntax definitions for most popular languages. Which >> >> makes my life a lot easier. >> >> >> >> >> >> On Tue, Oct 16, 2018 at 9:45 PM Thierry Goubier >> >> <thierry.goub...@gmail.com> >> >> wrote: >> >> >> >>> Hi Dimitris, >> >>> >> >>> Le 16/10/2018 à 19:39, Dimitris Chloupis a écrit : >> >>> > yes i already said that i followed the instructions in the github repo >> >>> >> >>> Yes, by default that installation of SmaCC does not load all parsers >> >>> (some of them are fairly large). However, most of them are in the >> >>> downloaded repository, so you can load them independently. >> >>> >> >>> Otherwise, loading that way, should load everything: >> >>> >> >>> Metacello new >> >>> baseline: 'SmaCC'; >> >>> repository: 'github://SmaCCRefactoring/SmaCC'; >> >>> load: #('Tools' 'Examples' 'Examples-Extra') >> >>> >> >>> Regarding your language question, I'd suggest two things: >> >>> >> >>> - Look at StrongTalk for a way to write Smalltalk with type >> >>> declarations... >> >>> >> >>> - C parsers able to parse most strange C code one may encounter takes >> >>> some work... >> >>> >> >>> Regards, >> >>> >> >>> Thierry >> >>> >> >>> > On Tue, Oct 16, 2018 at 8:18 PM H. Hirzel <hannes.hir...@gmail.com >> >>> > <mailto:hannes.hir...@gmail.com>> wrote: >> >>> > >> >>> > Refers to >> >>> > https://github.com/SmaCCRefactoring/SmaCC >> >>> > >> >>> > which says >> >>> > >> >>> > This is the port for Smalltalk/Pharo 1.3, 2, 3, 4, 5 and 6. >> >>> > >> >>> > >> >>> > Installing a Development version of Pharo for the latest Pharo >> >>> > (with >> >>> > no guarantees): >> >>> > >> >>> > Metacello new >> >>> > baseline: 'SmaCC'; >> >>> > repository: 'github://SmaCCRefactoring/SmaCC'; >> >>> > load >> >>> > >> >>> > On 10/16/18, H. Hirzel <hannes.hir...@gmail.com >> >>> > <mailto:hannes.hir...@gmail.com>> wrote: >> >>> > > What about trying >> >>> > > >> >>> > > >> >>> > > Metacello new >> >>> > > baseline: 'SmaCC'; >> >>> > > repository: 'github://ThierryGoubier/SmaCC'; >> >>> > > load >> >>> > > >> >>> > > This worked in Pharo 6.1 in November 2017 >> >>> > > >> >>> > > On 10/16/18, Dimitris Chloupis <kilon.al...@gmail.com >> >>> > <mailto:kilon.al...@gmail.com>> wrote: >> >>> > >> thanks for the info Peter , will give it a try :) >> >>> > >> >> >>> > >> On Tue, Oct 16, 2018 at 7:35 PM PBKResearch >> >>> > <pe...@pbkresearch.co.uk <mailto:pe...@pbkresearch.co.uk>> >> >>> > >> wrote: >> >>> > >> >> >>> > >>> Dimitris >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> If you download the latest Moose Suite 6.1, you will have >> >>> > Pharo >> >>> > 6.1 with >> >>> > >>> lots of extra packages, including SmaCC. The SmaCC includes >> >>> > compilers >> >>> > >>> for >> >>> > >>> C, Smalltalk and Java, among others, but with little or no >> >>> > >>> documentation. >> >>> > >>> I >> >>> > >>> am not a SmaCC expert, so I can’t say whether it will do what >> >>> > you want, >> >>> > >>> but >> >>> > >>> at least it will give you a start. Moose also includes >> >>> > PetitParser and >> >>> > >>> PP2,if you want to try other parsing approaches. Of course, >> >>> > the >> >>> > Windows >> >>> > >>> version is 32-bit only, for reasons explained elsewhere in >> >>> > this >> >>> > thread. >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> HTH >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> Peter Kenny >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> *From:* Pharo-users <pharo-users-boun...@lists.pharo.org >> >>> > <mailto:pharo-users-boun...@lists.pharo.org>> *On Behalf Of >> >>> > >>> *Dimitris >> >>> > >>> Chloupis >> >>> > >>> *Sent:* 16 October 2018 15:40 >> >>> > >>> *To:* Any question about pharo is welcome >> >>> > <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org>> >> >>> > >>> *Subject:* [Pharo-users] Installing SmaCC >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> Hey guys >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> I downloaded the latest Pharo 6.1 64bit for Windows and tried >> >>> > to install >> >>> > >>> SmaCC through the catalog browser but it failed >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> I did manage to install it following the instruction in the >> >>> > github repo >> >>> > >>> but I see that I am missing most parser packages. >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> The languages I am interested are Smalltalk (which is >> >>> > included) >> >>> > and C >> >>> > >>> (if >> >>> > >>> possible C++ too) cause I will be creating a new language >> >>> > which >> >>> > will be >> >>> > >>> a >> >>> > >>> cross between C and Smalltalk (very similar to smalltalk >> >>> > syntax >> >>> > but with >> >>> > >>> the addtion of C types and no GC and dynamic typing and also >> >>> > a >> >>> > partial >> >>> > >>> implementation of OOP that is quite diffirent). My goal is >> >>> > compilation >> >>> > >>> of >> >>> > >>> my language to readable C code so the ability to parse also >> >>> > existing C >> >>> > >>> code >> >>> > >>> is needed. >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> Any help is greatly appreciated , thanks :) >> >>> > >>> >> >>> > >> >> >>> > > >> >>> > >> >>> >> >>> >> >>> >> > >>