File: pt_introduction.man

package info (click to toggle)
tcllib 1.14-dfsg-3%2Bdeb7u1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 33,036 kB
  • sloc: tcl: 148,302; ansic: 14,067; sh: 10,320; xml: 1,766; yacc: 753; pascal: 551; makefile: 129; perl: 84; f90: 84; python: 33; ruby: 13; php: 11
file content (157 lines) | stat: -rw-r--r-- 4,356 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
[comment {-*- text -*- doctools manpage}]
[manpage_begin pt_introduction n 1]
[include include/module.inc]
[titledesc {Introduction to Parser Tools}]
[description]

Welcome to the Parser Tools, a system for the creation and
manipulation of parsers and the grammars driving them.

[para]

What are your goals which drove you here ?

[list_begin enumerated]
[enum]
Do you simply wish to create a parser for some language ?

[para]
In that case have a look at our parser generator application,
[cmd pt], or, for a slightly deeper access, the package underneath it,
[package pt::pgen].

[enum]
Do you wish to know more about the architecture of the system ?

[para]
This is described in the section
[sectref {Parser Tools Architecture}], below

[enum]
Is your interest in the theoretical background upon which the packages
and tools are build ?

[para]
See the [manpage {Introduction to Parsing Expression Grammars}].

[list_end]

[section {Parser Tools Architecture}]

The system can be split into roughly three layers, as seen in the
figure below

[para][image architecture][para]

These layers are, from high to low:

[list_begin enumerated]
[enum]

At the top we have the application and the packages using the packages
of the layer below to implement common usecases. One example is the
aforementioned [package pt::pgen] which provides a parser generator.

[para]

The list of packages belonging to this layer can be found in section
[sectref {User Packages}]

[enum]

In this layer we have the packages which provide the core of the
functionality for the whole system. They are, in essence, a set of
blocks which can be combined in myriad ways, like Lego (tm). The
packages in the previous level are 'just' pre-fabricated combinations
to cover the most important use cases.

[para]

The list of packages belonging to this layer can be found in section
[sectref {Core Packages}]

[enum]

Last, but not least is the layer containing support packages providing
generic functionality which not necessarily belong into the module.

[para]

The list of packages belonging to this layer can be found in section
[sectref {Support Packages}]

[list_end]

[subsection {User Packages}]
[list_begin definitions]
[def [package pt::pgen]]
[list_end]


[subsection {Core Packages}]

This layer is further split into six sections handling the storage,
import, export, transformation, and execution of grammars, plus
grammar specific support packages.

[list_begin definitions]
[def Storage]
[list_begin definitions][comment {----- core storage ---}]
[def [package pt::peg::container]]
[list_end][comment {------------------- core storage ---}]

[def Export]
[list_begin definitions][comment {----- core export ---}]
[def [package pt::peg::export]]
[def [package pt::peg::export::container]]
[def [package pt::peg::export::json]]
[def [package pt::peg::export::peg]]
[def [package pt::peg::to::container]]
[def [package pt::peg::to::json]]
[def [package pt::peg::to::peg]]
[def [package pt::peg::to::param]]
[def [package pt::peg::to::tclparam]]
[def [package pt::peg::to::cparam]]
[list_end][comment {------------------- core export ---}]

[def Import]
[list_begin definitions][comment {----- core import ---}]
[def [package pt::peg::import]]
[def [package pt::peg::import::container]]
[def [package pt::peg::import::json]]
[def [package pt::peg::import::peg]]
[def [package pt::peg::from::container]]
[def [package pt::peg::from::json]]
[def [package pt::peg::from::peg]]
[list_end][comment {------------------- core import ---}]

[def Transformation]
[def Execution]
[list_begin definitions][comment {----- core execution ---}]
[def [package pt::peg::interp]]
[def [package pt::rde]]
[list_end][comment {------------------- core execution ---}]

[def Support]
[list_begin definitions][comment {----- core support ---}]
[def [package pt::tclparam::configuration::snit]]
[def [package pt::tclparam::configuration::tcloo]]
[def [package pt::cparam::configuration::critcl]]
[def [package pt::ast]]
[def [package pt::pe]]
[def [package pt::peg]]
[list_end][comment {------------------- core support ---}]
[list_end]


[subsection {Support Packages}]
[list_begin definitions]
[def [package pt::peg::container::peg]]
[def [package text::write]]
[def [package configuration]]
[def [package paths]]
[def [package char]]
[list_end]

[include include/feedback.inc]
[manpage_end]