Mercurial > repos > deepakjadmin > mayatool3_test2
comparison docs/modules/txt/SimpleCalcYYLexer.txt @ 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 NAME | |
| 2 Parsers::SimpleCalcYYLexer | |
| 3 | |
| 4 SYNOPSIS | |
| 5 use Parsers::SimpleCalcYYLexer; | |
| 6 | |
| 7 use Parsers::SimpleCalcYYLexer qw(:all); | |
| 8 | |
| 9 DESCRIPTION | |
| 10 SimpleCalcYYLexer class provides the following methods: | |
| 11 | |
| 12 new, YYLex, GetYYLex, StringifySimpleCalcYYLexer | |
| 13 | |
| 14 Parser::SimpleCalcYYLexer class is derived from Parser::YYLexer class, | |
| 15 which in turn is derived from base class Parser::Lexer that provides all | |
| 16 the underlying lexer functionality. SimpleCalcYYLexer class is designed | |
| 17 to be used with yyparse code generated by running byacc on a parser | |
| 18 defined using parser definition SimpleCalcParser.yy file. | |
| 19 | |
| 20 The parser package and token table files, SimpleCalcParser.pm and | |
| 21 SimpleCalcParser.tab.ph, are automatically generated from parser grammar | |
| 22 definition file, SimpleCalcParser.yy, using byacc available through | |
| 23 perl-byacc1.8 modified with perl5-byacc-patches-0.5 for generation of | |
| 24 object oriented parser: | |
| 25 | |
| 26 byacc -l -P -d -b SimpleCalcParser SimpleCalcParser.yy | |
| 27 mv SimpleCalcParser.tab.pl SimpleCalcParser.pm | |
| 28 | |
| 29 SimpleCalcYYLexer.pm class implements a lexer for a simple calculator | |
| 30 and is provided to highlight usasge of YYLex through yyparse. | |
| 31 | |
| 32 The default specification of lexer tokens for SimpleCalcYYLexer.pm | |
| 33 includes: | |
| 34 | |
| 35 @YYLexerTokensSpec = ( | |
| 36 [ 'LETTER', qr/[a-zA-Z]/ ], | |
| 37 [ 'NUMBER', qr/\d+/ ], | |
| 38 [ 'SPACE', qr/[ ]*/, | |
| 39 sub { my($This, $TokenLabel, $MatchedText) = @_; return ''; } | |
| 40 ], | |
| 41 [ 'NEWLINE', qr/(?:\r\n|\r|\n)/, | |
| 42 sub { my($This, $TokenLabel, $MatchedText) = @_; return "\n"; } | |
| 43 ], | |
| 44 [ 'CHAR', qr/./ ] | |
| 45 ); | |
| 46 | |
| 47 The default SimpleCalcParser.tab.ph file containing token identifiers | |
| 48 for SimpleCalcParser.yy includes: | |
| 49 | |
| 50 $NUMBER=257; | |
| 51 $LETTER=258; | |
| 52 | |
| 53 METHODS | |
| 54 new | |
| 55 $SimpleCalcYYLexer = new Parsers::SimpleCalcYYLexer($Input); | |
| 56 | |
| 57 Using specified *Input*, new method generates a new | |
| 58 SimpleCalcYYLexer and returns a reference to newly created | |
| 59 SimpleCalcYYLexer object. | |
| 60 | |
| 61 Examples: | |
| 62 | |
| 63 # Input string... | |
| 64 $InputText = "3 + 4 +6\nx=3\ny=5\nx+y\nx+z\n"; | |
| 65 | |
| 66 $YYLexer = new Parsers::SimpleCalcYYLexer($InputText); | |
| 67 $YYLex = $YYLexer->GetYYLex(); | |
| 68 | |
| 69 $Debug = 0; | |
| 70 $CalcParser = new Parsers::SimpleCalcParser($YYLex, | |
| 71 \&Parsers::SimpleCalcParser::yyerror, $Debug); | |
| 72 $Value = $SimpleCalcParser->yyparse(); | |
| 73 print "Value: $Value\n"; | |
| 74 | |
| 75 # Input file... | |
| 76 $InputFile = "Input.txt"; | |
| 77 open INPUTFILE, "$InputFile" or die "Couldn't open $InputFile: $!\n"; | |
| 78 $YYLexer = new Parsers::SimpleCalcYYLexer($InputFile); | |
| 79 $YYLex = $YYLexer->GetYYLex(); | |
| 80 | |
| 81 $CalcParser = new Parsers::SimpleCalcParser($YYLex, | |
| 82 \&Parsers::SimpleCalcParser::yyerror); | |
| 83 $Value = $SimpleCalcParser->yyparse(); | |
| 84 print "Value: $Value\n"; | |
| 85 | |
| 86 # Input file iterator... | |
| 87 $InputFile = "TestSimpleCalcParser.txt"; | |
| 88 open INPUTFILE, "$InputFile" or die "Couldn't open $InputFile: $!\n"; | |
| 89 $InputIterator = sub { return <INPUTFILE>; }; | |
| 90 $YYLexer = new Parsers::SimpleCalcYYLexer($InputIterator); | |
| 91 $YYLex = $YYLexer->GetYYLex(); | |
| 92 | |
| 93 $CalcParser = new Parsers::SimpleCalcParser($YYLex, | |
| 94 \&Parsers::SimpleCalcParser::yyerror); | |
| 95 $Value = $SimpleCalcParser->yyparse(); | |
| 96 print "Value: $Value\n"; | |
| 97 | |
| 98 StringifySimpleCalcYYLexer | |
| 99 $YYLexerString = $YYLexer->StringifySimpleCalcYYLexer(); | |
| 100 | |
| 101 Returns a string containing information about *YYLexer* object. | |
| 102 | |
| 103 AUTHOR | |
| 104 Manish Sud <msud@san.rr.com> | |
| 105 | |
| 106 SEE ALSO | |
| 107 Lexer.pm, YYLexer.pm, SimpleCalcParser.yy | |
| 108 | |
| 109 COPYRIGHT | |
| 110 Copyright (C) 2015 Manish Sud. All rights reserved. | |
| 111 | |
| 112 This file is part of MayaChemTools. | |
| 113 | |
| 114 MayaChemTools is free software; you can redistribute it and/or modify it | |
| 115 under the terms of the GNU Lesser General Public License as published by | |
| 116 the Free Software Foundation; either version 3 of the License, or (at | |
| 117 your option) any later version. | |
| 118 |
