annotate lib/Parsers/SimpleCalcParser.yy @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1 %{
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
2 package Parsers::SimpleCalcParser;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
3 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
4 # $RCSfile: SimpleCalcParser.yy,v $
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
5 # $Date: 2015/02/28 20:50:55 $
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
6 # $Revision: 1.10 $
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
7 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
8 # Author: Manish Sud <msud@san.rr.com>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
9 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
10 # Copyright (C) 2015 Manish Sud. All rights reserved.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
11 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
12 # This file is part of MayaChemTools.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
13 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
14 # MayaChemTools is free software; you can redistribute it and/or modify it under
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
15 # the terms of the GNU Lesser General Public License as published by the Free
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
16 # Software Foundation; either version 3 of the License, or (at your option) any
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
17 # later version.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
18 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
19 # MayaChemTools is distributed in the hope that it will be useful, but without
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
20 # any warranty; without even the implied warranty of merchantability of fitness
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
21 # for a particular purpose. See the GNU Lesser General Public License for more
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
22 # details.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
23 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
24 # You should have received a copy of the GNU Lesser General Public License
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
25 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
26 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
27 # Boston, MA, 02111-1307, USA.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
28 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
29 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
30 # A WORD TO THE WISE:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
31 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
32 # The parser package and token table files, SimpleCalcParser.pm and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
33 # SimpleCalcParser.tab.ph, are automatically generated from parser grammar
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
34 # definition file, SimpleCalcParser.yy, using byacc available through perl-byacc1.8
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
35 # modified with perl5-byacc-patches-0.5 for generation of object oriented parser:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
36 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
37 # byacc -l -P -d -b SimpleCalcParser SimpleCalcParser.yy
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
38 # mv SimpleCalcParser.tab.pl SimpleCalcParser.pm
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
39 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
40
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
41 use Carp;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
42
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
43 # Setup a hash map for mapping of words/letters to values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
44 %LetterToValueMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
45
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
46 %}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
47
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
48 %start list
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
49
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
50 %token NUMBER LETTER
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
51
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
52 %left '+' '-'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
53 %left '*' '/'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
54 %left '%'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
55
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
56 %%
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
57
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
58 list :
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
59 | list stat '\n'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
60 { $$ = $2; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
61 | list error '\n'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
62 { $p->yyerrok; $p->yyclearin; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
63 ;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
64
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
65
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
66 stat : expr
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
67 { $ExprOut = sprintf "%5i", $1; print "$ExprOut\n"; $$ = $1; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
68 | LETTER '=' expr
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
69 { $LetterToValueMap{$1} = $3; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
70 ;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
71
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
72 expr : '(' expr ')'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
73 { $$ = $2; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
74 | expr '+' expr
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
75 { $$ = $1 + $3; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
76 | expr '-' expr
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
77 { $$ = $1 - $3; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
78 | expr '*' expr
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
79 { $$ = $1 * $3; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
80 | expr '/' expr
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
81 { $$ = $1 / $3; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
82 | expr '%' expr
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
83 { $$ = $1 % $3; }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
84 | NUMBER
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
85 | LETTER
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
86 {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
87 if (exists $LetterToValueMap{$1}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
88 $$ = $LetterToValueMap{$1};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
89 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
90 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
91 $Letter = $1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
92 print "Undefined variable $Letter encountered by SimpleCalcParser; Value set to 0\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
93 $$ = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
94 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
95 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
96 ;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
97
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
98 %%
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
99
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
100 # yyerror function supplied to parser along with a lexer during initialization of
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
101 # the parser...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
102 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
103 sub yyerror {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
104 my ($msg) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
105 print "yyerror: $msg...\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
106 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
107
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
108 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
109
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
110 __END__
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
111
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
112 =head1 NAME
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
113
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
114 Parsers::SimpleCalcParser
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
115
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
116 =head1 SYNOPSIS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
117
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
118 use Parsers::SimpleCalcParser ;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
119
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
120 use Parsers::SimpleCalcParser qw(:all);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
121
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
122 =head1 DESCRIPTION
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
123
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
124 B<Parsers::SimpleCalcParser> class provides the following methods:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
125
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
126 new, yyclearin, yyerrok, yyerror, yyparse
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
127
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
128 B<Parsers::SimpleCalcParse.yy> parser grammer definition file implements a simple
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
129 calculator and is provided to highlight usage of lexer capability available through
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
130 B<Parsers::SimpleCalcYYLexer>, which in turn uses B<Parsers::YYLexer> and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
131 B<Parsers::Lexer> classes to procide underlying lexer functionality.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
132
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
133 The parser package and token table files, B<Parsers::SimpleCalcParser.pm> and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
134 B<SimpleCalcParser.tab.ph>, are automatically generated from parser grammar definition
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
135 file, B<Parsers::SimpleCalcParser.yy>, using byacc available through perl-byacc1.8 modified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
136 with perl5-byacc-patches-0.5 for generation of object oriented parser:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
137
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
138 byacc -l -P -d -b SimpleCalcParser SimpleCalcParser.yy
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
139 mv SimpleCalcParser.tab.pl SimpleCalcParser.pm
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
140
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
141 =head2 METHODS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
142
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
143 =over 4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
144
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
145 =item B<new>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
146
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
147 $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
148 \&Parsers::SimpleCalcParser::yyerror);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
149 $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
150 \&Parsers::SimpleCalcParser::yyerror, $Debug);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
151
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
152 Using specified I<YYLex> I<YYError> functions, B<new> method generates a new
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
153 B<SimpleCalcParser> and returns a reference to newly created B<SimpleCalcYYParser> object.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
154
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
155 Examples:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
156
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
157 # Input string...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
158 $InputText = "3 + 4 +6\nx=3\ny=5\nx+y\nx+z\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
159 $YYLexer = new Parsers::SimpleCalcYYLexer($InputText);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
160 $YYLex = $YYLexer->GetYYLex();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
161
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
162 $Debug = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
163 $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
164 \&Parsers::SimpleCalcParser::yyerror, $Debug);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
165 $Value = $SimpleCalcParser->yyparse();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
166 print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
167
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
168 # Input file...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
169 $InputFile = "TestSimpleCalcParser.txt";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
170 open INPUTFILE, "$InputFile" or die "Couldn't open $InputFile: $!\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
171
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
172 $YYLexer = new Parsers::SimpleCalcYYLexer(\*INPUTFILE);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
173 $YYLex = $YYLexer->GetYYLex();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
174
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
175 $Debug = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
176 $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
177 \&Parsers::SimpleCalcParser::yyerror, $Debug);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
178 $Value = $SimpleCalcParser->yyparse();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
179 print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
180
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
181 close INPUTFILE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
182
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
183 # Input iterator...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
184 $InputFile = "TestSimpleCalcParser.txt";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
185 open INPUTFILE, "$InputFile" or die "Couldn't open $InputFile: $!\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
186 $InputIterator = sub { return <INPUTFILE>; };
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
187
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
188 $YYLexer = new Parsers::SimpleCalcYYLexer($InputIterator);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
189 $YYLex = $YYLexer->GetYYLex();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
190
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
191 $Debug = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
192 $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
193 \&Parsers::SimpleCalcParser::yyerror, $Debug);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
194 $Value = $SimpleCalcParser->yyparse();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
195 print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
196
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
197 close INPUTFILE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
198
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
199 =item B<yyclearin>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
200
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
201 $SimpleCalcParser->yyclearin();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
202
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
203 B<yyclearin> method clears any previous look-ahead token after encountering a syntax error
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
204 during parsing. It can be used after B<yyerrok> in a grammer rule with the reserved word
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
205 B<error>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
206
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
207 =item B<yyerrok>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
208
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
209 $SimpleCalcParser->yyerrok();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
210
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
211 B<yyerrok> method is used with the reserved word B<error> in grammer rule to indcate
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
212 error recovery is complete after encountering a syntax error during parsing.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
213
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
214 =item B<yyerror>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
215
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
216 $SimpleCalcParser->yyerror();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
217
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
218 B<yyerror> function is provided for the caller to use during initialization of a parser. It
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
219 is used by B<yyparse> to print any error messages encountered during parsing of the
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
220 input.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
221
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
222 =item B<yyparse>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
223
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
224 $Value = $SimpleCalcParser->yyparse();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
225
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
226 Returns I<Value> after parsing all the input from a input stream using specified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
227 grammer rules.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
228
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
229 =back
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
230
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
231 =head1 AUTHOR
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
232
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
233 Manish Sud <msud@san.rr.com>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
234
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
235 =head1 SEE ALSO
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
236
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
237 Lexer.pm, YYLexer.pm, SimpleCalcYYLexer.pm
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
238
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
239 =head1 COPYRIGHT
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
240
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
241 Copyright (C) 2015 Manish Sud. All rights reserved.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
242
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
243 This file is part of MayaChemTools.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
244
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
245 MayaChemTools is free software; you can redistribute it and/or modify it under
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
246 the terms of the GNU Lesser General Public License as published by the Free
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
247 Software Foundation; either version 3 of the License, or (at your option)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
248 any later version.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
249
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
250 =cut
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
251