Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
calc.pl
#!/usr/local/bin/perl -w
# calc.pl -- Taschenrechner mit der Perl-Version von lex und yacc;
# Vorher aufrufen: byacc -d -P CalcParser calc.y
use Parse::YYLex; # CPAN-Modul
use Getopt::Std; # Standardmodul
use vars qw ( $opt_v );
getopts("v") || die "usage: $0 [-v]\n"; # -v: Debugging
$debug = defined $opt_v ? 1 : 0;
my @tokens = (
number => '\d+',
eol => '\n',
opplus => '\+', opminus => '-',
optimes => '\*', opdiv => '/',
braceopen => '[({[]', braceclose => '[)}\]]',
other => '.'
);
my $lexer = Parse::YYLex->new(@tokens);
use CalcParser; # aus: byacc -d -P CalcParser calc.y
my $parser = CalcParser->new($lexer->getyylex, \&yyerror, $debug);
$lexer->from(\*STDIN);
$parser->yyparse(\*STDIN);
sub yyerror {
my $errmsg = shift;
print STDERR "Error: $errmsg\n";
exit 0;
}
[Prev] [Up] [Relevant Chapter] [Next]
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:52 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|