Lambda functions, introduced since C++11, are convenient way of passing different types of callbacks, doing parametrized operations, etc.

And as in many other languages, C++ lambdas are closures. That is, they can capture bindings from the outer scope, and use them inside. However they do this with some C++ specifics.

This is a second chapter of the “Building a RegExp machine” series, where we discuss a theory and implementation behind the regular languages and regular expressions.

Audience: experienced programmers, professionals.

You can also see more details, and enroll to full course.

In the first part we’ve been talking about generic…

In this series of articles we’re going to study a theory and implementation behind the formalism of regular expressions, — the technique used for text processing, implementation of tokenizers, etc.

Audience: experienced programmers, professionals.

You can also see more details, and enroll to full course.

Note: this is not a…

The purpose of this note is to have a distinct, and exact terminology for different types of scopes used in JS, and in programming languages in general.

Audience: experienced engineers, professionals.

Many JavaScript developers know, that JS (as well as most of the existing today languages) uses static scope.


In this small note we’ll talk about new plugin for the Syntax tool, which allows building parsers for Rust programming language.

NOTE: if you’re not familiar with the Syntax tool, you can address this introductory article.

Automatic parsers

Writing a manual parser “by hands” might be fun, but mostly when you learn…

It’s not a secret, that today JS RegExp library is pretty limited in contrast with Python regexes, or PCRE. A good thing though, ES2018 is going to bring several great improvements to regular expressions.

Some of the new features, and other convenient extensions can already be used today, using transpilation…

TL;DR: RegExp Tree is a regular expressions processor, which includes parser, traversal, transformer, optimizer, and compat-compiler APIs.


Recently I realized that a regular expression for an empty string can be a “palindrome”:

And that this is also a valid regexp:

This revelation came to me while…

In this post we’ll briefly talk about the new language agnostic parser generator, called Syntax.

Note: we don’t describe here parsers algorithms in detail; the target audience is supposed to be familiar with parsers terminology, and basic parsing techniques. …

In this small note we recap concepts of objects relationships in Object-Oriented programming.

Recently Allen Wirfs-Brock raised an interesting topic for distinguishing and abstracting a concept of “an open set of objects that share a common interface and implementation”.

A first possible definition that comes in mind can be…

Dmitry Soshnikov

Software engineer interested in learning and education. Sometimes blog on topics of programming languages theory, compilers, and ECMAScript.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store