Apr 25, 01:41 PM

We differ from previous attempts at natural language programming in our use of entity extraction in the front end of a programming language interpreter/compiler. This greatly simplifies the task of adding new languages.

We also simplify the separation of procedural language from deictic language by supporting an entity called a ‘selector’.

Examples of selectors include “the first column of the first row”, “the file ‘f’ in the directory ‘d’”, and “the name in the table x whose id is 90123”.

Vaklipi converts any human language into an interlingua: an intermediate representation that captures the semantics of human language. Our interlingua is called ‘Spanner’. The Spanner ‘language’ resembles human language very closely.

For example, one symbol ‘=’ serves both as an assignment command and as an equality operator, as is the case with most human languages (but not the case with most programming languages).

Another interesting case is the overloaded use of the conjunction symbol ‘&’ for sequencing actions and as the conjunction operator.

Both & and = are disambiguated in the Vaklipi Spanner representation based on context.

Another interesting feature of Vaklipi Spanner is the precedence of operators. In many Indian languages, it is possible to say ‘or of ands’ but not ‘and of ors’.

For example you can say ‘x and y or m and n’ but not ‘x or y and m or n’.

This limitation is captured in the default Vaklipi Spanner precedence rules for boolean operators.

Since we use an interlingua as an intermediate representation, Vaklipi can do something most other programming language interpreters and compilers can’t. It can translate the programs that you feed it, from one language to another!

We’ve built a very simple translation system just to demonstrate this feature.

Cohan Sujay Carlos




Commenting is closed for this article.