Skip to content

Instantly share code, notes, and snippets.

@dolsup
Last active March 15, 2020 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dolsup/ec7a8a6ab4f094fedda29c2b044a0cda to your computer and use it in GitHub Desktop.
Save dolsup/ec7a8a6ab4f094fedda29c2b044a0cda to your computer and use it in GitHub Desktop.
EBNF-inspired Data Dictionary Notation for Data Flow Diagram

EBNF-inspired Data Dictionary Notation for Data Flow Diagram

a Data Dictionary Notation for Data Flow Diagram, inspired by EBNF and normal programming languages

Purposes

  • It is more about human-friendliness than syntactic rigor.
  • Its notation should be able to written by normal IME.
  • It is should be easy to understand and use for software developers.

General Idea

  • 'Data Element' corresponds 'element' in EBNF.
  • Unlike EBNF, No predefined terminal symbols or elements. Every element is basically considered as terminal, excepting 'Composite Data Element'.
  • Unspecified behaviors should be construed in terms of EBNF and DD as possible.
  • Notation symbols must be in ASCII charset in order to make typing easy. Format text such as superscripts are not used unlike general DD notation.

Specification

Notation Table

symbol meaning EBNF DD
= equals, is composed of, assignment, definition =, ::= :=
+ and, concatenation, sequence , +
- exception -
| mutually exclusive or, alternation, selection | [|]
() grouping ()
{} , {}min..max repetition, iteration
min or max can be omitted and its default values are 0, infinity.
{} {}
[] optional [] ()
<> non-terminal data element <>
* * comment (* *) * *

Assignment

  • It defines non-terminal composite data element.

  • Assignment statement enclosed with () can be evaluated to composite element. (like 'assignment expression' in JavaScript)

    example: <request> = header + ( <body> = { item } + metadata )

Order of Operations

  1. (), {}, []
  2. +, -, |
  3. =
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment