FALSE programming language: D implementation

Rémy Mouëza remy.moueza-dontspamme at gmail.com
Sat Mar 10 18:58:39 UTC 2018


On Saturday, 10 March 2018 at 11:47:48 UTC, snowCat wrote:
> Recently, the task of implementing the FALSE programming 
> language on D has come up and I have faced the problem of 
> splitting the FALSE expression into a list of strings from its 
> typical elements: blocks of comments, numbers, strings and 
> operators.
> How to properly implement such a partition, tell me please.
> Or at least tell me how to describe his grammar in Pegged.
> Your name in the article about the implementation of my blog is 
> guaranteed.

I implemented a small concatenative language in 2016 and used 
Pegged for the lexing.
I uploaded the source on github: 
https://github.com/remy-j-a-moueza/stacky.
The Pegged grammar is at the beginning of `stacky.d`.
Pegged is also pretty well documented in its wiki and tutorial 
(https://github.com/PhilippeSigaud/Pegged/wiki/Pegged-Tutorial).

As for a hand made lexer, the last time I clearly remember 
working on one was in 2007, on D1, trying to lex C++.
I copied part of that code here: 
https://gist.github.com/remy-j-a-moueza/8909819cbf972430bfbb16dff768b97d

The algorithm is mainly:
- try to match a regular expression
-- on a match: create a token for what has been matched, move 
forward in your string input, loop to the next iteration,
-- on error: try again with another regular expression.
By the end you should have accumulated your tokens.

There is a lot of resources online about parsing, in various 
programming languages and libraries, way better than what I have 
provided. Whatever the tools, the principles stay the same. 
Whatever you can learn somewhere else will still be usable in D, 
just a bit differently.

I hope this help.
Have fun.


More information about the Digitalmars-d mailing list