Mercurial > repos > deepakjadmin > mayatool3_test2
diff docs/modules/txt/SimpleCalcParser.txt @ 0:4816e4a8ae95 draft default tip
Uploaded
author | deepakjadmin |
---|---|
date | Wed, 20 Jan 2016 09:23:18 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/modules/txt/SimpleCalcParser.txt Wed Jan 20 09:23:18 2016 -0500 @@ -0,0 +1,126 @@ +NAME + Parsers::SimpleCalcParser + +SYNOPSIS + use Parsers::SimpleCalcParser ; + + use Parsers::SimpleCalcParser qw(:all); + +DESCRIPTION + Parsers::SimpleCalcParser class provides the following methods: + + new, yyclearin, yyerrok, yyerror, yyparse + + Parsers::SimpleCalcParse.yy parser grammer definition file implements a + simple calculator and is provided to highlight usage of lexer capability + available through Parsers::SimpleCalcYYLexer, which in turn uses + Parsers::YYLexer and Parsers::Lexer classes to procide underlying lexer + functionality. + + The parser package and token table files, Parsers::SimpleCalcParser.pm + and SimpleCalcParser.tab.ph, are automatically generated from parser + grammar definition file, Parsers::SimpleCalcParser.yy, using byacc + available through perl-byacc1.8 modified with perl5-byacc-patches-0.5 + for generation of object oriented parser: + + byacc -l -P -d -b SimpleCalcParser SimpleCalcParser.yy + mv SimpleCalcParser.tab.pl SimpleCalcParser.pm + + METHODS + new + $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror); + $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror, $Debug); + + Using specified *YYLex* *YYError* functions, new method generates a + new SimpleCalcParser and returns a reference to newly created + SimpleCalcYYParser object. + + Examples: + + # Input string... + $InputText = "3 + 4 +6\nx=3\ny=5\nx+y\nx+z\n"; + $YYLexer = new Parsers::SimpleCalcYYLexer($InputText); + $YYLex = $YYLexer->GetYYLex(); + + $Debug = 0; + $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror, $Debug); + $Value = $SimpleCalcParser->yyparse(); + print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\n"; + + # Input file... + $InputFile = "TestSimpleCalcParser.txt"; + open INPUTFILE, "$InputFile" or die "Couldn't open $InputFile: $!\n"; + + $YYLexer = new Parsers::SimpleCalcYYLexer(\*INPUTFILE); + $YYLex = $YYLexer->GetYYLex(); + + $Debug = 0; + $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror, $Debug); + $Value = $SimpleCalcParser->yyparse(); + print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\n"; + + close INPUTFILE; + + # Input iterator... + $InputFile = "TestSimpleCalcParser.txt"; + open INPUTFILE, "$InputFile" or die "Couldn't open $InputFile: $!\n"; + $InputIterator = sub { return <INPUTFILE>; }; + + $YYLexer = new Parsers::SimpleCalcYYLexer($InputIterator); + $YYLex = $YYLexer->GetYYLex(); + + $Debug = 0; + $SimpleCalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror, $Debug); + $Value = $SimpleCalcParser->yyparse(); + print "Value = " . (defined($Value) ? "$Value" : "Undefined") . "\n"; + + close INPUTFILE; + + yyclearin + $SimpleCalcParser->yyclearin(); + + yyclearin method clears any previous look-ahead token after + encountering a syntax error during parsing. It can be used after + yyerrok in a grammer rule with the reserved word error. + + yyerrok + $SimpleCalcParser->yyerrok(); + + yyerrok method is used with the reserved word error in grammer rule + to indcate error recovery is complete after encountering a syntax + error during parsing. + + yyerror + $SimpleCalcParser->yyerror(); + + yyerror function is provided for the caller to use during + initialization of a parser. It is used by yyparse to print any error + messages encountered during parsing of the input. + + yyparse + $Value = $SimpleCalcParser->yyparse(); + + Returns *Value* after parsing all the input from a input stream + using specified grammer rules. + +AUTHOR + Manish Sud <msud@san.rr.com> + +SEE ALSO + Lexer.pm, YYLexer.pm, SimpleCalcYYLexer.pm + +COPYRIGHT + Copyright (C) 2015 Manish Sud. All rights reserved. + + This file is part of MayaChemTools. + + MayaChemTools is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or (at + your option) any later version. +