Featureless Linux Library Specification

IKI-0002 (Simple Script)

The version date of this specification is 2023/07/14.

This specification provides a small set of vocabulary names meant to be used for substitution in simple scripts.

This specification only loosely defines the vocabulary context. This vocabulary may be further extended but must at least support the taxonomy defined here. Flexibility on interpretation is intended so that the context can be more fine-tuned and customized.

The taxonomy for the context, define, and parameter are intentionally not defined here and left open. One utilizing this should document the taxonomy for each of these as desired.

Vocabulary:

context
Intended to be used for printing (or tagging) context codes before and after text, such as with color context.
define
Intended to be used for global properties, much like a C/C++ #define.
parameter
Intended to be used for parameters or variables.

Common Specification Rules

IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax.

The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name. The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification. The variable name is considered the Object. The variable value is considered the Content.

The IKI format will use iki-0000 to represent an IKI with no explicitly defined vocabulary. Whereas iki-0001 and beyond represent a specific IKI vocabulary.

A potential IKI variable name starts on word (or _, -, +) characters. White space and non-word (and non _, -, +) character punctuations may not exist as part of the variable name. The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (U+2010 and U+2011).

Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash " before the colon code::" that is before the opening quote (single or double).

Unicode punctuation connector characters are supported just like _, except when they connect outside the current line (such as U+FE33 ). Unicode invisible punctuations (such as invisible plus: U+2064) are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid _, -, or + Unicode equivalents.

Key:

  • \o = any printable word character, including _, -, + (and Unicode equivalents).
  • \c = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.
  • \q = either a single quote ' or a double quote ".
  • \x = any character.
  • \W = any non-word character, discluding _, -, + (and Unicode equivalents).
  • \e = an optional escape sequence of any number of backslashes, such as \.
  • * = zero or more occurrences.
  • ~ = one or more occurrences, or zero if at start of file.

Before Structure:

  • \x*\W~\*:*

Structure:

  • \o\e:\q\c\q

After Structure:

Example File:

# fss-000c iki-0000

This is my sentence, anything can go here but sometimes I want to emphasis:"emphasize some text".

Other times I want to render a url such as this example url: url:'http://www.example.com/url with space/'.

There are no comments, except for maybe the FSS header (which would not resolve to any IKI syntax anyway).

Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".

The following emphasis\:"is escaped to not be treated as IKI data".

Example Results:

Objects would be:
  1) emphasis
  2) url
  3) code

Contents would be:
  1.1) emphasize some text
  2.1) http://www.example.com/url with space/
  3.1) const char *string = "My \"quoted\" C string.";