Hi, I am Fidel!

Hello, everyone!

My name is Fidel and I have been interested in programming language translation ever since I encountered programming back in late 80s, early 90s. However, I have only written my first transpiler in the late 90s, as part of my final year project for my degree in Computer and Information Engineering.

I have been working in all sorts of software (web, desktop and command line), and occasionally I write some DSLs for any particular task we need to automate, and make it easier to work with.

I have implemented a concurrent Pascal (a subset of Pascal-FC) to Java transpiler, as my final year project, and I have written a couple of DSLs for web development, database design, and user interface design.

All my projects are implemented either with SableCC, and occasionally Gentle-97. In addition, I write some SNOBOL4 scripts once in a while, but I am not an expert in the language. I find it easy to put together quick text processors and sometimes even parsers.

At the moment I am working on a VimScript to Lua transpiler (recursive descent), and have joined the Modula-2 Software Foundation to work on a Modula-2 Revision 2010 compiler project.

I joined this community because I am very passionate about compiler engineering, language design and text processing in general.

I look forward to drinking from your experiences, and whenever possible share my own.

Thanks once again for the warm welcome.

Regards,

Fidel H Viegas

3 Likes

Hi Fidel,
I listened with interest to your speech at the videoconference 06/12/22, and also got acquainted with your website Geekstakulus Blog.
I will be glad to get your opinion on the PPL language I have developed, relying on your rich experience in the field of programming languages development. I have been working on this project for the last 2 years of my 40 years of programming experience. My colleagues have started using this language and I am extending it according to their wishes. You will find programs, tutorial, program generator and more here:
github.com/okogosov/ppl.
Cheers
Oscar

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. :smiley:

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.

Kind regards,

Fidel H Viegas