ℙ𝕖𝕡 🙴 ℕ𝕠𝕞

home | documentation | examples | translators | download | blog | all blog posts

Do you like my watch? Its a family heirloom. My grandfather sold it to me on his death bed. Woody Allen

about the ℙ𝕖𝕡 and ℕ𝕠𝕞 blog

The ℙ𝕖𝕡 🙵 ℕ𝕠𝕞 system is a system for parsing and translating context-free languages. It uses the en.wikipedia.org/wiki/Unix text-stream editing philosophy and applies it to formal languages and patterns . I hope you enjoy it! (I do)

This blog written by me, mjb<at>nomlang.org is a set of posts exploring the potential of the Parsing Engine for Patterns (pep) and the Nom scripting language. Nom doesn't “stand for” anything but is similar to an indo-european root for “name” and may also be a vague accolade and reference to Noam Chomsky for his classification of formal languages.

The home page for ℙ𝕖𝕡 🙵 ℕ𝕠𝕞 is located at www.nomlang.org although all the source code, examples , translation scripts and other documentation is at Sourceforge (Thankyou!).

I will try to make these posts as general as possible, exploring ideas of language, parsing, compiling, transpiling and translating (although pep/nom in it’s current form is not suitable for translating natural human language).

I also try to write a general blog about language, culture, art, travel, the garden, making things or whatever which is called Shrob

ℙ𝕖𝕡 and ℕ𝕠𝕞

“Pep” is the Parsing Engine for Patterns and “Nom” is a scripting (and compilable) language for parsing and translating context-free languages . Nom compiles itself and can also translate itself into other languages like go and tcl java and ruby and javascript.

The pep pattern engine and the Nom parsing language form a system for parsing, translating, compiling and transpiling context-free languages. The system is, to some extent, experimental.

The source code is located at Sourceforge and there is also a blog on this server

This site www.nomlang.org also contains extensive documentation for the nom language and the pep virtual machine in the /doc/ folder.

an example script, word by word parsing

   # the lexical analysis phase of the script
   while [:space:]; clear;
   whilenot [:space:]; put; clear; add "word*"; push;

   # the parsing/compiling phase
   parse>

   pop; pop;
   # format as one word per line
   "word*word*", "text*word*" {
     clear; get; add "\n"; ++; get; --; put; clear;
     add "text*"; push; .reparse
   }
   push; push;
   # when the end of the input-stream is encountered
   (eof) {
     pop; clear; get; print; quit; 
   }