Introduction

NETS is an experimental product for interpretting and compiling grammars. It is based on 'A Common Model for Language Grammars' (Nelms, 2013) and the NEBNF and GXML grammars it defines. NETS supports some common, and other not so common features, of interpretted and compiled parsers.

This guide is organised into the following sections:

Features

Feature Description
ISO/IEC 14977 Grammars NETS supports the ISO/IEC 14977 standard for grammars. NETS Parser supports the full feature set including rules, terminals, non-terminals, group sequences, optional sequences, repeating sequences, exceptions, factors, the empty sequence and comments. Special sequences are supported as production terminals.
Parser Expression Grammars NETS supports Parser Expression Grammars or PEGs (Ford, 2004) and the 'and' and 'not' predicates in particular. In addition NETS introduces the 'again' predicate.
Declarative Abstract Syntax Trees based on W3C DOM NETS supports a declarative model of Abstract Syntax Trees (ASTs) based on the W3C DOM model. This model is unified with the NETS input/output model. NETS supports Document, Element, Attribute, Entity, Entity Reference, Text, ProcessingInstruction and Comment nodes.
Grammar XML GXML is an XML representation of language grammars and provides a unified model for language grammars including BNF, EBNF, PEG and NEBNF. NETS is an implementation of GXML.
Pipelines NETS EBNF introduces pipelines, which allow grammars to be chained together in sequences with the output of one primary becoming the input to another. Pipelines simplify parsers and grammars.
Grammar Libraries NETS supports user defined and system defined grammar libraries in compiled and interpretted forms.
Stream Support NETS supports files, pipes and memory streams as well as DOM based ASTs for intput and output.
Production Terminals and Echoing NETS supports production terminals in NEBNF and GXML. In addition primaries can be echo'd, supporting input/output redirection.
Character Encoding NETS supports both multi-byte and wide character encodings for input, output and processing.