#!/usr/bin/perl # package S2::TokenPunct; use strict; use S2::Token; use vars qw($VERSION @ISA $LT $LTE $GTE $GT $EQ $NE $ASSIGN $INCR $PLUS $DEC $MINUS $DEREF $SCOLON $COLON $DCOLON $LOGAND $BITAND $LOGOR $BITOR $MULT $DIV $MOD $NOT $DOT $DOTDOT $LBRACE $RBRACE $LBRACK $RBRACK $LPAREN $RPAREN $COMMA $QMARK $DOLLAR $HASSOC %finals ); $VERSION = '1.0'; @ISA = qw(S2::Token); $LTE = new S2::TokenPunct '<=', 1; $LT = new S2::TokenPunct '<', 1; $GTE = new S2::TokenPunct '>=', 1; $GT = new S2::TokenPunct '>', 1; $EQ = new S2::TokenPunct "==", 1; $HASSOC = new S2::TokenPunct "=>", 1; $ASSIGN = new S2::TokenPunct "=", 1; $NE = new S2::TokenPunct "!=", 1; $INCR = new S2::TokenPunct "++", 1; $PLUS = new S2::TokenPunct "+", 1; $DEC = new S2::TokenPunct "--", 1; $MINUS = new S2::TokenPunct "-", 1; $DEREF = new S2::TokenPunct "->", 1; $SCOLON = new S2::TokenPunct ";", 1; $DCOLON = new S2::TokenPunct "::", 1; $COLON = new S2::TokenPunct ":", 1; $LOGAND = new S2::TokenPunct "&&", 1; $BITAND = new S2::TokenPunct "&", 1; $LOGOR = new S2::TokenPunct "||", 1; $BITOR = new S2::TokenPunct "|", 1; $MULT = new S2::TokenPunct "*", 1; $DIV = new S2::TokenPunct "/", 1; $MOD = new S2::TokenPunct "%", 1; $NOT = new S2::TokenPunct "!", 1; $DOT = new S2::TokenPunct ".", 1; $DOTDOT = new S2::TokenPunct "..", 1; $LBRACE = new S2::TokenPunct "{", 1; $RBRACE = new S2::TokenPunct "}", 1; $LBRACK = new S2::TokenPunct "[", 1; $RBRACK = new S2::TokenPunct "]", 1; $LPAREN = new S2::TokenPunct "(", 1; $RPAREN = new S2::TokenPunct ")", 1; $COMMA = new S2::TokenPunct ",", 1; $QMARK = new S2::TokenPunct "?", 1; $DOLLAR = new S2::TokenPunct '$', 1; sub new { my ($class, $punct, $final) = @_; return $finals{$punct} if defined $finals{$punct}; my $this = { 'chars' => $punct }; $finals{$punct} = $this if $final; bless $this, $class; } sub getPunct { shift->{'chars'}; } sub asHTML { my ($this, $o) = @_; if ($this->{'chars'} =~ m![\[\]\(\)\{\}]!) { $o->write("$this->{'chars'}"); } else { $o->write("" . S2::BackendHTML::quoteHTML($this->{'chars'}) . ""); } } sub asS2 { my ($this, $o) = @_; $o->write($this->{'chars'}); } sub toString { my $this = shift; "[TokenPunct] = $this->{'chars'}"; } 1;