comparison docs/modules/man3/SimpleCalcParser.3 @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4816e4a8ae95
1 .\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings. \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
21 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 . ds -- \(*W-
28 . ds PI pi
29 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31 . ds L" ""
32 . ds R" ""
33 . ds C` ""
34 . ds C' ""
35 'br\}
36 .el\{\
37 . ds -- \|\(em\|
38 . ds PI \(*p
39 . ds L" ``
40 . ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD. Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 . de IX
53 . tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 . nr % 0
56 . rr F
57 .\}
58 .el \{\
59 . de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear. Run. Save yourself. No user-serviceable parts.
65 . \" fudge factors for nroff and troff
66 .if n \{\
67 . ds #H 0
68 . ds #V .8m
69 . ds #F .3m
70 . ds #[ \f1
71 . ds #] \fP
72 .\}
73 .if t \{\
74 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 . ds #V .6m
76 . ds #F 0
77 . ds #[ \&
78 . ds #] \&
79 .\}
80 . \" simple accents for nroff and troff
81 .if n \{\
82 . ds ' \&
83 . ds ` \&
84 . ds ^ \&
85 . ds , \&
86 . ds ~ ~
87 . ds /
88 .\}
89 .if t \{\
90 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 . \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 . \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 . \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 . ds : e
114 . ds 8 ss
115 . ds o a
116 . ds d- d\h'-1'\(ga
117 . ds D- D\h'-1'\(hy
118 . ds th \o'bp'
119 . ds Th \o'LP'
120 . ds ae ae
121 . ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "SIMPLECALCPARSER 1"
127 .TH SIMPLECALCPARSER 1 "2015-03-29" "perl v5.14.2" "MayaChemTools"
128 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 Parsers::SimpleCalcParser
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 use Parsers::SimpleCalcParser ;
137 .PP
138 use Parsers::SimpleCalcParser qw(:all);
139 .SH "DESCRIPTION"
140 .IX Header "DESCRIPTION"
141 \&\fBParsers::SimpleCalcParser\fR class provides the following methods:
142 .PP
143 new, yyclearin, yyerrok, yyerror, yyparse
144 .PP
145 \&\fBParsers::SimpleCalcParse.yy\fR parser grammer definition file implements a simple
146 calculator and is provided to highlight usage of lexer capability available through
147 \&\fBParsers::SimpleCalcYYLexer\fR, which in turn uses \fBParsers::YYLexer\fR and
148 \&\fBParsers::Lexer\fR classes to procide underlying lexer functionality.
149 .PP
150 The parser package and token table files, \fBParsers::SimpleCalcParser.pm\fR and
151 \&\fBSimpleCalcParser.tab.ph\fR, are automatically generated from parser grammar definition
152 file, \fBParsers::SimpleCalcParser.yy\fR, using byacc available through perl\-byacc1.8 modified
153 with perl5\-byacc\-patches\-0.5 for generation of object oriented parser:
154 .PP
155 .Vb 2
156 \& byacc \-l \-P \-d \-b SimpleCalcParser SimpleCalcParser.yy
157 \& mv SimpleCalcParser.tab.pl SimpleCalcParser.pm
158 .Ve
159 .SS "\s-1METHODS\s0"
160 .IX Subsection "METHODS"
161 .IP "\fBnew\fR" 4
162 .IX Item "new"
163 .Vb 4
164 \& $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
165 \& \e&Parsers::SimpleCalcParser::yyerror);
166 \& $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
167 \& \e&Parsers::SimpleCalcParser::yyerror, $Debug);
168 .Ve
169 .Sp
170 Using specified \fIYYLex\fR \fIYYError\fR functions, \fBnew\fR method generates a new
171 \&\fBSimpleCalcParser\fR and returns a reference to newly created \fBSimpleCalcYYParser\fR object.
172 .Sp
173 Examples:
174 .Sp
175 .Vb 4
176 \& # Input string...
177 \& $InputText = "3 + 4 +6\enx=3\eny=5\enx+y\enx+z\en";
178 \& $YYLexer = new Parsers::SimpleCalcYYLexer($InputText);
179 \& $YYLex = $YYLexer\->GetYYLex();
180 \&
181 \& $Debug = 0;
182 \& $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
183 \& \e&Parsers::SimpleCalcParser::yyerror, $Debug);
184 \& $Value = $SimpleCalcParser\->yyparse();
185 \& print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\en";
186 \&
187 \& # Input file...
188 \& $InputFile = "TestSimpleCalcParser.txt";
189 \& open INPUTFILE, "$InputFile" or die "Couldn\*(Aqt open $InputFile: $!\en";
190 \&
191 \& $YYLexer = new Parsers::SimpleCalcYYLexer(\e*INPUTFILE);
192 \& $YYLex = $YYLexer\->GetYYLex();
193 \&
194 \& $Debug = 0;
195 \& $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
196 \& \e&Parsers::SimpleCalcParser::yyerror, $Debug);
197 \& $Value = $SimpleCalcParser\->yyparse();
198 \& print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\en";
199 \&
200 \& close INPUTFILE;
201 \&
202 \& # Input iterator...
203 \& $InputFile = "TestSimpleCalcParser.txt";
204 \& open INPUTFILE, "$InputFile" or die "Couldn\*(Aqt open $InputFile: $!\en";
205 \& $InputIterator = sub { return <INPUTFILE>; };
206 \&
207 \& $YYLexer = new Parsers::SimpleCalcYYLexer($InputIterator);
208 \& $YYLex = $YYLexer\->GetYYLex();
209 \&
210 \& $Debug = 0;
211 \& $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
212 \& \e&Parsers::SimpleCalcParser::yyerror, $Debug);
213 \& $Value = $SimpleCalcParser\->yyparse();
214 \& print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\en";
215 \&
216 \& close INPUTFILE;
217 .Ve
218 .IP "\fByyclearin\fR" 4
219 .IX Item "yyclearin"
220 .Vb 1
221 \& $SimpleCalcParser\->yyclearin();
222 .Ve
223 .Sp
224 \&\fByyclearin\fR method clears any previous look-ahead token after encountering a syntax error
225 during parsing. It can be used after \fByyerrok\fR in a grammer rule with the reserved word
226 \&\fBerror\fR.
227 .IP "\fByyerrok\fR" 4
228 .IX Item "yyerrok"
229 .Vb 1
230 \& $SimpleCalcParser\->yyerrok();
231 .Ve
232 .Sp
233 \&\fByyerrok\fR method is used with the reserved word \fBerror\fR in grammer rule to indcate
234 error recovery is complete after encountering a syntax error during parsing.
235 .IP "\fByyerror\fR" 4
236 .IX Item "yyerror"
237 .Vb 1
238 \& $SimpleCalcParser\->yyerror();
239 .Ve
240 .Sp
241 \&\fByyerror\fR function is provided for the caller to use during initialization of a parser. It
242 is used by \fByyparse\fR to print any error messages encountered during parsing of the
243 input.
244 .IP "\fByyparse\fR" 4
245 .IX Item "yyparse"
246 .Vb 1
247 \& $Value = $SimpleCalcParser\->yyparse();
248 .Ve
249 .Sp
250 Returns \fIValue\fR after parsing all the input from a input stream using specified
251 grammer rules.
252 .SH "AUTHOR"
253 .IX Header "AUTHOR"
254 Manish Sud <msud@san.rr.com>
255 .SH "SEE ALSO"
256 .IX Header "SEE ALSO"
257 Lexer.pm, YYLexer.pm, SimpleCalcYYLexer.pm
258 .SH "COPYRIGHT"
259 .IX Header "COPYRIGHT"
260 Copyright (C) 2015 Manish Sud. All rights reserved.
261 .PP
262 This file is part of MayaChemTools.
263 .PP
264 MayaChemTools is free software; you can redistribute it and/or modify it under
265 the terms of the \s-1GNU\s0 Lesser General Public License as published by the Free
266 Software Foundation; either version 3 of the License, or (at your option)
267 any later version.