title: ParsingMechanism
tags: mechanism dev
created: 201311011307
modified: 201311011307

! Introduction

The parsing mechanism analyses the text of a tiddler against a set of parsing rules, producing a tree representing the structure of the text. The RenderingMechanism is used to transform parse trees into render trees of widget nodes.

TiddlyWiki5 includes ParserModules for several types of tiddler:

* WikiText
* Raw HTML
* Plain text
* Images (bitmap, SVG and PDF)

The WikiText parser is the most complex, comprising separate individual WikiRuleModules encapsulating each parsing rule.

! Parse Trees

The output of parsing a tiddler is an object containing a tree of parse nodes corresponding to the original text. For example:

```
> JSON.stringify($tw.wiki.parseText("text/vnd.tiddlywiki","Some //italics// and a {{Transclusion}}.").tree)

[
	{type: "element", tag: "p", children: [
		{type: "text", text: "Some "},
		{type: "element", tag: "em", children: [
			{type: "text", text: "italics"}
		]},
		{type: "text", text: " and a "},
		{type: "tiddler", attributes:{
			tiddler: {type: "string", value: "Transclusion"}
		}, children:[
			{type: "transclude", attributes:{
				tiddler: {type: "string", value: "Transclusion"}
			}}
		]},
		{type: "text", text: "."}
	]}
]
```

Parse tree nodes are plain JavaScript objects, and do not have a prototype.
