Mercurial > repos > deepakjadmin > mayatool3_test3
view mayachemtools/docs/modules/man3/SimpleCalcYYLexer.3 @ 0:73ae111cf86f draft
Uploaded
author | deepakjadmin |
---|---|
date | Wed, 20 Jan 2016 11:55:01 -0500 |
parents | |
children |
line wrap: on
line source
.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SIMPLECALCYYLEXER 1" .TH SIMPLECALCYYLEXER 1 "2015-03-29" "perl v5.14.2" "MayaChemTools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Parsers::SimpleCalcYYLexer .SH "SYNOPSIS" .IX Header "SYNOPSIS" use Parsers::SimpleCalcYYLexer; .PP use Parsers::SimpleCalcYYLexer qw(:all); .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBSimpleCalcYYLexer\fR class provides the following methods: .PP new, YYLex, GetYYLex, StringifySimpleCalcYYLexer .PP \&\fBParser::SimpleCalcYYLexer\fR class is derived from \fBParser::YYLexer\fR class, which in turn is derived from base class \fBParser::Lexer\fR that provides all the underlying lexer functionality. \fBSimpleCalcYYLexer\fR class is designed to be used with \&\fByyparse\fR code generated by running \fBbyacc\fR on a parser defined using parser definition \fBSimpleCalcParser.yy\fR file. .PP The parser package and token table files, \fBSimpleCalcParser.pm\fR and \fBSimpleCalcParser.tab.ph\fR, are automatically generated from parser grammar definition file, \fBSimpleCalcParser.yy\fR, using byacc available through perl\-byacc1.8 modified with perl5\-byacc\-patches\-0.5 for generation of object oriented parser: .PP .Vb 2 \& byacc \-l \-P \-d \-b SimpleCalcParser SimpleCalcParser.yy \& mv SimpleCalcParser.tab.pl SimpleCalcParser.pm .Ve .PP \&\fBSimpleCalcYYLexer.pm\fR class implements a lexer for a simple calculator and is provided to highlight usasge of \fBYYLex\fR through \fByyparse\fR. .PP The default specification of lexer tokens for \fBSimpleCalcYYLexer.pm\fR includes: .PP .Vb 11 \& @YYLexerTokensSpec = ( \& [ \*(AqLETTER\*(Aq, qr/[a\-zA\-Z]/ ], \& [ \*(AqNUMBER\*(Aq, qr/\ed+/ ], \& [ \*(AqSPACE\*(Aq, qr/[ ]*/, \& sub { my($This, $TokenLabel, $MatchedText) = @_; return \*(Aq\*(Aq; } \& ], \& [ \*(AqNEWLINE\*(Aq, qr/(?:\er\en|\er|\en)/, \& sub { my($This, $TokenLabel, $MatchedText) = @_; return "\en"; } \& ], \& [ \*(AqCHAR\*(Aq, qr/./ ] \& ); .Ve .PP The default \fBSimpleCalcParser.tab.ph\fR file containing token identifiers for \&\fBSimpleCalcParser.yy\fR includes: .PP .Vb 2 \& $NUMBER=257; \& $LETTER=258; .Ve .SS "\s-1METHODS\s0" .IX Subsection "METHODS" .IP "\fBnew\fR" 4 .IX Item "new" .Vb 1 \& $SimpleCalcYYLexer = new Parsers::SimpleCalcYYLexer($Input); .Ve .Sp Using specified \fIInput\fR, \fBnew\fR method generates a new \fBSimpleCalcYYLexer\fR and returns a reference to newly created \fBSimpleCalcYYLexer\fR object. .Sp Examples: .Sp .Vb 2 \& # Input string... \& $InputText = "3 + 4 +6\enx=3\eny=5\enx+y\enx+z\en"; \& \& $YYLexer = new Parsers::SimpleCalcYYLexer($InputText); \& $YYLex = $YYLexer\->GetYYLex(); \& \& $Debug = 0; \& $CalcParser = new Parsers::SimpleCalcParser($YYLex, \& \e&Parsers::SimpleCalcParser::yyerror, $Debug); \& $Value = $SimpleCalcParser\->yyparse(); \& print "Value: $Value\en"; \& \& # Input file... \& $InputFile = "Input.txt"; \& open INPUTFILE, "$InputFile" or die "Couldn\*(Aqt open $InputFile: $!\en"; \& $YYLexer = new Parsers::SimpleCalcYYLexer($InputFile); \& $YYLex = $YYLexer\->GetYYLex(); \& \& $CalcParser = new Parsers::SimpleCalcParser($YYLex, \& \e&Parsers::SimpleCalcParser::yyerror); \& $Value = $SimpleCalcParser\->yyparse(); \& print "Value: $Value\en"; \& \& # Input file iterator... \& $InputFile = "TestSimpleCalcParser.txt"; \& open INPUTFILE, "$InputFile" or die "Couldn\*(Aqt open $InputFile: $!\en"; \& $InputIterator = sub { return <INPUTFILE>; }; \& $YYLexer = new Parsers::SimpleCalcYYLexer($InputIterator); \& $YYLex = $YYLexer\->GetYYLex(); \& \& $CalcParser = new Parsers::SimpleCalcParser($YYLex, \& \e&Parsers::SimpleCalcParser::yyerror); \& $Value = $SimpleCalcParser\->yyparse(); \& print "Value: $Value\en"; .Ve .IP "\fBStringifySimpleCalcYYLexer\fR" 4 .IX Item "StringifySimpleCalcYYLexer" .Vb 1 \& $YYLexerString = $YYLexer\->StringifySimpleCalcYYLexer(); .Ve .Sp Returns a string containing information about \fIYYLexer\fR object. .SH "AUTHOR" .IX Header "AUTHOR" Manish Sud <msud@san.rr.com> .SH "SEE ALSO" .IX Header "SEE ALSO" Lexer.pm, YYLexer.pm, SimpleCalcParser.yy .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2015 Manish Sud. All rights reserved. .PP This file is part of MayaChemTools. .PP MayaChemTools is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.