Mercurial > repos > deepakjadmin > mayatool3_test2
diff docs/modules/txt/SimpleCalcYYLexer.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/SimpleCalcYYLexer.txt Wed Jan 20 09:23:18 2016 -0500 @@ -0,0 +1,118 @@ +NAME + Parsers::SimpleCalcYYLexer + +SYNOPSIS + use Parsers::SimpleCalcYYLexer; + + use Parsers::SimpleCalcYYLexer qw(:all); + +DESCRIPTION + SimpleCalcYYLexer class provides the following methods: + + new, YYLex, GetYYLex, StringifySimpleCalcYYLexer + + Parser::SimpleCalcYYLexer class is derived from Parser::YYLexer class, + which in turn is derived from base class Parser::Lexer that provides all + the underlying lexer functionality. SimpleCalcYYLexer class is designed + to be used with yyparse code generated by running byacc on a parser + defined using parser definition SimpleCalcParser.yy file. + + The parser package and token table files, SimpleCalcParser.pm and + SimpleCalcParser.tab.ph, are automatically generated from parser grammar + definition file, 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 + + SimpleCalcYYLexer.pm class implements a lexer for a simple calculator + and is provided to highlight usasge of YYLex through yyparse. + + The default specification of lexer tokens for SimpleCalcYYLexer.pm + includes: + + @YYLexerTokensSpec = ( + [ 'LETTER', qr/[a-zA-Z]/ ], + [ 'NUMBER', qr/\d+/ ], + [ 'SPACE', qr/[ ]*/, + sub { my($This, $TokenLabel, $MatchedText) = @_; return ''; } + ], + [ 'NEWLINE', qr/(?:\r\n|\r|\n)/, + sub { my($This, $TokenLabel, $MatchedText) = @_; return "\n"; } + ], + [ 'CHAR', qr/./ ] + ); + + The default SimpleCalcParser.tab.ph file containing token identifiers + for SimpleCalcParser.yy includes: + + $NUMBER=257; + $LETTER=258; + + METHODS + new + $SimpleCalcYYLexer = new Parsers::SimpleCalcYYLexer($Input); + + Using specified *Input*, new method generates a new + SimpleCalcYYLexer and returns a reference to newly created + SimpleCalcYYLexer 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; + $CalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror, $Debug); + $Value = $SimpleCalcParser->yyparse(); + print "Value: $Value\n"; + + # Input file... + $InputFile = "Input.txt"; + open INPUTFILE, "$InputFile" or die "Couldn't open $InputFile: $!\n"; + $YYLexer = new Parsers::SimpleCalcYYLexer($InputFile); + $YYLex = $YYLexer->GetYYLex(); + + $CalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror); + $Value = $SimpleCalcParser->yyparse(); + print "Value: $Value\n"; + + # Input file 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(); + + $CalcParser = new Parsers::SimpleCalcParser($YYLex, + \&Parsers::SimpleCalcParser::yyerror); + $Value = $SimpleCalcParser->yyparse(); + print "Value: $Value\n"; + + StringifySimpleCalcYYLexer + $YYLexerString = $YYLexer->StringifySimpleCalcYYLexer(); + + Returns a string containing information about *YYLexer* object. + +AUTHOR + Manish Sud <msud@san.rr.com> + +SEE ALSO + Lexer.pm, YYLexer.pm, SimpleCalcParser.yy + +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. +