annotate mayachemtool/mayachemtools/lib/Parsers/SimpleCalcParser.yy @ 0:a4a2ad5a214e draft default tip

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