Hi, @Oscar.K !
Thank you for your kind words, and for taking the time to visit my blog. This is actually my third attempt at keeping a blog, and I guess this time will work.
I also found the meetup fascinating, where we discussed several issues, and I’ll be glad to share my experience with SableCC as a framework for developing compilers and interpreters. I think it did not receive the attention it deserved, because when I began to play around with it, ANTLR and JavaCC didn’t provide an easy way of generating visitors. This came later on.
As for your language, I have had the opportunity to look at it, and I must say that you have put a lot of effort into producing a language for data processing that one can use. This isn’t clear from the documentation, but I guessed it was meant for data processing based on the statistics modules, the structures provided, etc…
I prefer the SCR syntax over the PPL one. I find it easier to read. However, knowing that it is just a pre-processor to generate PPL code, I believe that this makes the interpreter slower, because you have to parse it twice.
The tree structure is interesting, and that reminds me of how the data structures in WebLang work. I have had issues with large data sets, where it would take considerable time to process the data. I have been thinking of implementing a tree based VM for it, and I believe it will run much faster. Right now, it just builds and processes an AST generated from XML, HTML and JSON parsers. This was a Compaq project, and HP just ditched it back in the early 2000s. I managed to get the source code and refactored it so that it could run on Java 8. It probably runs on older versions, but I haven’t tested it. My goal was Java 8 as a minimum.
Does your language produce bytecode, or does it work on the trees as well?
I liked the fact that you have provided extensive documentation, which was easy to follow. However, certain things need clarification. For instance, the switch statement says that it receives an expression, but I couldn’t find if strings were valid values or not. Is it only integers or numbers in general?
I inspected the postfix program and compared the C# with the PPL version, and found it to be a little verbose. I would expect it to be shorter, particularly because you have to use the arrays that I suppose work as map (or hashtable) when you provide the values separated by comma.
This made the code a little verbose, and longer than the C# version.
The functions I noticed that the return values are in the formal parameters (is it the first paremeter?). Can you return more than one value?
I didn’t really read into the documentation in full, so forgive me if I am saying something that isn’t quite right. Perhaps you could brief me a little bit more on these questions, as they are more questions than criticism. I always like to learn about the intention so that I can understand it better.
I like the fact that you can produce DLLs and then be able to call them, but I was not sure if you can specify the path where you can load them from. Do they have to be on the same folder as the PPL script, or can you place it some place else and specify that in the configuration node?
I’d compare this language with R, and I find it easier to read. However, the parenthetical version is pretty hard to read.
Sometimes I find myself crunching data, and I normally use Python or WebLang, depending on the type of data. But I could see me using this to process data files. Specially Excel files that I noticed it supports.
The results you have achieved thus far only shows how focus and determination can make us reach our goals.
Thanks once again for sharing this, and I look forward to your explanations.
Fidel H Viegas