About Grammar License
 
Commercial & freeware products Try our software for free before purchase Buy now Company news channel Company informations
  Home » Products » TemlCode » Overview  

19.08.2011
SnapDraw is FREE

15.07.2011
101+ Analog Clocks for Android

29.03.2011
101+ Vector Clocks Available

24.02.2011
Announcing Vector Clock Pro

01.01.2011
New beautiful set of Free Vector Clocks

 

TemlCode Overview

Note:   TemlCode is a brand new data storage specification of our own production. This product is not for sale. By this, we offer you an insight under the hood so you can make a picture about technologies we created and used in our other products.

The Tilde Escape Markup Logic Code (TemlCode) is a general-purpose specification for creating custom markup languages and protocols. It's main purpose is storing plain or structured data in human-readable form, which in combination with tilde escape code markup syntax guarantees data serialization and interchange functionality on any target platform. TemlCode data files can be stored using any encoding assuming individual code points conforms to the ISO/IEC 10646 international standard. It is usable for wide variety of application tasks like simple to complex rich text attributing, configuration files, data structures content and definition storage, binary data storage (eg. images), storage of international text, complex documents storage and many more.

TemlCode can be considered (in functional way) to be an alternative to XML. The reason, why we choosed to develop TemlCode over the use of existing XML was to achieve a better readability, more flexibility and smaller footprint. We also needed an unobtrusive markup code for providing complex text formatting capabilities. The use and support of existing html (or xml based) protocols for this task is itself of a size of a web browser project, it forces to abide standards and thus limits potential creativity. Another negative aspect of XML itself is it's very simple markup escape sequence (< ... >) by using which it is very easy for human to quickly get lost in nested structures not to mention the obtrusiveness of necessity of closing each structure element. In TemlCode, user also needs to indicate the end of a structure, but it can be done in quicker and more direct manner.

Main Features

  Good readability for humans
Escape markup sequences can adapt to the layout of the natural human text segmentation. Indentation & end of lines are not important for TemlCode parser to retrieve the appropriate data structures. Good readability is amplified by distinctive markup tags semantics with more types of syntax differentiation.
 
  Unobtrusive escape sequences design
By using a rare combination of two common ascii characters to start a markup tag, it is possible to use all code points for plain text. In HTML or XML for example, you cannot use "<" character in text part of the document directly, but instead you have to use an appropriate entity reference - &lt;.
 
  Lower footprint
The amount of overhead data, by which the TemlCode markup tags increase the size of plain text document, are lower that comparable similar markups like HTML or XML. This is due to fact, that closing of structural elements is done with very short sequences while in other markups the whole names of closing elements must be mentioned. In TemlCode, there is also a possibility to close some structural element by mentioning it's name. For clarity, it is even possible to label opening tag with temporary name and then close appropriate structure with close tag mentioning that particular label name. But to act like this, is not necessity in TemlCode, and when all structure nesting is well-formed, it is sufficient to use just the short form of closing tags without mentioning the elements names.
 
  Data definitions
TemlCode support data definitions inside markup tags with syntax similar to common programming languages. Besides data serialization, this is most useful when TemlCode parser reads the data in and it already knows their type and interpretes it that way. User then doesn't have to explicitely convert element data to eg. integers, but directly grabs eg. integer values from the parser tree structures.
 
  Integrability
Due to it's unobtrusive markup sequence design, TemlCode can be seamlessly incorporated into the source code of existing programming languages and also into the HTML or XML based documents. Of course, when integrating, TemlCode blocks cannot be placed anywhere. It seamlessly integrates, when put inside a comment block of a particular language (eg. // ..., { ... }, (* ... *‍), /* ... */, <!-- ... -->, etc.).
 
  Embeddability
TemlCode offers a great inclusion capabilities. Any programming or markup language, as well as any binary data can be a part of TemlCode data stream. Even if there would be a potential possibility, that for example a binary block of data will contain TemlCode syntax elements, which would break the TemlCode parsing logic, it is possible to localy override the initiating escape sequence (called delimiter) as a part of immediate markup tag definition.
 
  Extensibility
TemlCode specification doesn't defines a single name of any markup tag, to be used with it. To use it, the user must extend TemlCode by specifying names of markup tags, by which a dialect is created. TemlCode dialects in combination with rules of when use a which kind of markup tag, creates protocols.
 
  Inlining
TemlCode markup tags can be individually labeled with custom names. This allows for functionality, where blocks of data are referenced for the purposes of multiple reuse. It is possible for instance, label some piece of text (also a very complex one) and reference it many times with meaning of inserting that text in place, where that reference occured. On top of that, references can pass custom parameters on occurence, just like a function call with parameters in programming languages.
 
  Functional Languages
TemlCode is suitable as a content carrier for implementing some Functional Language in it. In functional languages, it is not important how you make to get things done, but the definition of what you want to be done. And this is a kind of stuff, TemlCode is also good for.
 
  Freeware & Royalty Free
TemlCode is free for commercial or non commercial use. There are also no royalty fees for it's use. Please refer to the Licence page for full legal information.

 


The Basic Principle

The most basic principle of TemlCode markup is in use of a rare combination of two common ascii characters - a Tilde "~" immediately followed by one of parenthesis type characters "(", ")", "<", ">", "{", "}", "[", "]" - or backslash "\".

The data space occupied by TemlCode is then divided in two categories:

  Plain Text
Anything outside TemlCode markup. This space can serve as document text area or just as space for comments about meaning of enclosing markups.
 
  Markup Tags
Anything inside (or part of) sequences described in the table below. This space serves for user definition of higher structures and markup language itself.

 
The valid TemlCode Markup Tags are summarized in following table:

TemlCode Markup Tag Classification
~\ ... \ Section
~< ... > Property
~>
~[ ... ] Structure
~]
~{ ... } Metadata
~} Break
~( ... ) Insertable
~) CRLF

The  " ... "  part inside Markup Tags summary above, is subject to internal syntax definition described in subsequent chapters of this specification. In short, internal syntax consists of basic buildings parts, which we will call for the purposes of this specification - elements. TemlCode Markup Tags can span across as many source file lines, as needed.

Nothing else except combinations in table above is considered to be a valid markup escape sequence.
For example Tilde character "~" immediately followed by anything than "(", ")", "<", ">", "{", "}", "[", "]", "\", is considered to be a Plain Text.
 
 
For clarity, here is a table of character code points used for TemlCode markup escape sequences according to ISO/IEC 10646 UCS international standard. We will introduce a table like this everytime from now on, a new characters emerge in further syntax definitions.

Character Name Code Point
~ TILDE U+007E
\ REVERSE SOLIDUS U+005C
< LESS-THAN SIGN U+003C
> GREATER-THAN SIGN U+003E
[ LEFT SQUARE BRACKET U+005B
] RIGHT SQUARE BRACKET U+005D
{ LEFT CURLY BRACKET U+007B
} RIGHT CURLY BRACKET U+007D
( LEFT PARENTHESIS U+0028
) RIGHT PARENTHESIS U+0029

 
Specification Status

Document version: 1.00

The definition of TemlCode is declared by this specification, and we consider it to be stable.
However, we reserve the right for change anytime if necessary.

Proper TemlCode Parser & Processing Application implementations must be conformant to functionality described in this specification.

Please read the licence conditions first before proceeding any further.
 


Tell Us What You Think

Your Name
Your Email
Your Message
We accept anonymous messages. However, if you wish to receive a response, please include your email and name.

Next Chapter

TemlCode Properties

  Generated from TemlCode based document. Graphics on this page is rendered with CrossGL SDK. Last page update: 19.8.2011