bumble.sf.net language and parsing

plain text

Colombian saying """ Nobody knows who they are working for. """

## NOM EXAMPLE SCRIPTS

This folder contains some example scripts in the [nom] script language. Scripts have the file extension ".pss". These examples can be run using the interpreter and debugger (the "pep" interpreter) or by translating to [nom:translation.links] and then (maybe compiling and) running.

/doc/doc.dir.index.html contains a list of scripts and documents in this folder.

Documentation for the [nom] language and [pep] virtual machine is in the /doc/.

The scripts which begin with *ro.* are solutions (or attempted solutions) to problems on the www.rosettacode.org site. For example the script ro.balanced.brackets.pss solves the rosetta://balanced.brackets problem .

examples can be run with the interpreter by typing pep -f eg/script.pss # or pep -f eg/script.pss -i ,,,,

Examples can be translated into [nom:translation.links] by running the appropriate translation script.

translate a nom script into go, compile and run pep -f tr/translate.go.pss eg/script.pss > script.go go build script.go echo "" | ./script ,,,,

### SOME EXAMPLE SCRIPTS

xml.parse.pss is an [xml] parser and error checker

nom.reference.syntax.pss is a syntax checker for the [nom] language which provides precise error messages.

json.check.pss checks the syntax of a [json] text data file.

text.tohtml.pss transforms a "plain-text" (minimal mark-up) document into html

sed.tojava.pss transpiles a gnu [sed] script into the [java] language (branch syntax with 't' etc is not supported because java has not [goto] statement )

maths.parse.pss parses and error checks arithmetic infix expressions.

maths.to.latex.pss transforms arithmetic, symbolic and logical expressions into printable [latex] formulas.

exp.tolisp.pss transforms an arithmetic infix expression into [lisp] This is a simpler and older version of the 2 scripts above

toybnf.pss translates simple [bnf] type grammar rules into [nom] scripts. This is the basis for a *bnf* style parsing and compiling language

natural.language.pss implements an extremely limited natural language parser.

### IDEAS FOR EXAMPLE SCRIPTS

#### BREAK LINES

A script which breaks lines at a ':' character and indents the remainder 2 spaces *more* than the original line

example guache: rough, crude, uneducated (from Bacata indigenous language) # becomes guache:
rough, crude, uneducated (from Bacata indigenous language) ,,,,

#### DICTIONARY OR GLOSSARY FORMATTING

A script to format a plain-test dictionary into html and [latex] using a standard dictionary format.

### TODO

Make a "table of contents" parser: that is, extract headings from some document and format and accumulate them in a tape cell (probably the first tape cell). Also parse and translate the rest of the document at the same time. This involves making sure that multiple "pop;" statements do not move the tape pointer back to the 1st tape cell. One solution is to use mark/go to realign the tape pointer

#: The ---+ delimiter means that what follows is nom code.

a nom table of contents parser. ----+ begin { ++; mark "top"; } read; # .... more code "token*token*" { clear; get; ++; get; --; put; clear; add "newtoken*"; push; go "top"; } "heading*heading*" { clear; get; add "\n"; ++; get; --; put; clear; add "newtoken*"; push; go "top"; } # I am not even sure that the go "top"; code is # necessary ,,,,

or invent a new drawing/animation/gaming language (getting ambitious which has a slightly more sensible syntax than that of the "logo" language.

The start of a drawing language is implemented in /eg/drawbasic.pss This is currently implemented as a *transpiler* to [python]