Games-Axmud
view release on metacpan or search on metacpan
lib/Language/Axbasic/Statement.pm view on Meta::CPAN
package Language::Axbasic::Statement::play;
package Language::Axbasic::Statement::poke;
package Language::Axbasic::Statement::pokedec;
package Language::Axbasic::Statement::pokedelete;
package Language::Axbasic::Statement::pokedechash;
package Language::Axbasic::Statement::pokeempty;
package Language::Axbasic::Statement::pokefalse;
package Language::Axbasic::Statement::pokeinc;
package Language::Axbasic::Statement::pokeinchash;
package Language::Axbasic::Statement::pokeint;
package Language::Axbasic::Statement::pokeadd;
package Language::Axbasic::Statement::pokedivide;
package Language::Axbasic::Statement::pokeminus;
package Language::Axbasic::Statement::pokemultiply;
package Language::Axbasic::Statement::pokeplus;
package Language::Axbasic::Statement::pokepop;
package Language::Axbasic::Statement::pokepush;
package Language::Axbasic::Statement::pokereplace;
package Language::Axbasic::Statement::pokeset;
package Language::Axbasic::Statement::pokeshift;
package Language::Axbasic::Statement::poketrue;
package Language::Axbasic::Statement::pokeundef;
package Language::Axbasic::Statement::pokeunshift;
package Language::Axbasic::Statement::pop;
package Language::Axbasic::Statement::print;
package Language::Axbasic::Statement::profile;
package Language::Axbasic::Statement::push;
package Language::Axbasic::Statement::randomize;
package Language::Axbasic::Statement::read;
package Language::Axbasic::Statement::redim;
package Language::Axbasic::Statement::relay;
package Language::Axbasic::Statement::rem;
package Language::Axbasic::Statement::reset;
package Language::Axbasic::Statement::restore;
package Language::Axbasic::Statement::return;
package Language::Axbasic::Statement::revpath;
package Language::Axbasic::Statement::select;
package Language::Axbasic::Statement::send;
package Language::Axbasic::Statement::setalias;
package Language::Axbasic::Statement::setgauge;
package Language::Axbasic::Statement::sethook;
package Language::Axbasic::Statement::setmacro;
package Language::Axbasic::Statement::setstatus;
package Language::Axbasic::Statement::settimer;
package Language::Axbasic::Statement::settrig;
package Language::Axbasic::Statement::shift;
package Language::Axbasic::Statement::skipiface;
package Language::Axbasic::Statement::sort;
package Language::Axbasic::Statement::sortcase;
package Language::Axbasic::Statement::sortcaser;
package Language::Axbasic::Statement::sortr;
package Language::Axbasic::Statement::speak;
package Language::Axbasic::Statement::speed;
package Language::Axbasic::Statement::stop;
package Language::Axbasic::Statement::sub;
package Language::Axbasic::Statement::titlewin;
package Language::Axbasic::Statement::unflashwin;
package Language::Axbasic::Statement::unshift;
package Language::Axbasic::Statement::until;
package Language::Axbasic::Statement::waitactive;
package Language::Axbasic::Statement::waitalive;
package Language::Axbasic::Statement::waitarrive;
package Language::Axbasic::Statement::waitdead;
package Language::Axbasic::Statement::waitep;
package Language::Axbasic::Statement::waitgp;
package Language::Axbasic::Statement::waithp;
package Language::Axbasic::Statement::waitmp;
package Language::Axbasic::Statement::waitnextxp;
package Language::Axbasic::Statement::waitnotactive;
package Language::Axbasic::Statement::waitpassout;
package Language::Axbasic::Statement::waitscript;
package Language::Axbasic::Statement::waitsleep;
package Language::Axbasic::Statement::waitsp;
package Language::Axbasic::Statement::waittask;
package Language::Axbasic::Statement::waittotalxp;
package Language::Axbasic::Statement::waittrig;
package Language::Axbasic::Statement::waitxp;
package Language::Axbasic::Statement::warning;
package Language::Axbasic::Statement::while;
package Language::Axbasic::Statement::winaddgauge;
package Language::Axbasic::Statement::winaddcongauge;
package Language::Axbasic::Statement::windelgauge;
package Language::Axbasic::Statement::winsetgauge;
package Language::Axbasic::Statement::write;
package Language::Axbasic::Statement::writewin;
}
##################
# Constructors
sub new {
# Called by LA::Line->parse (or by the ->parse function of another LA::Statement::xxx
# object)
# The class that handles the parsing of a single Axbasic statement
# This function blesses itself, then calls $self->refine to decide what kind of statement it
# is (PRINT, LET, DATA, etc)
# $self->refine creates a LA::Statement::<keyword> object, where <keyword> is the first
# keyword in the statement (matches an element in LA::Token->keywordList). <keyword> is
# set to the implied LET for a statement beginning with a variable.
# This function then returns the blessed reference of the LA::Statement::<keyword> object (a
# subclass which inherits from this one)
#
# Expected arguments
# $scriptObj - Blessed reference of the parent LA::Script
# $lineObj - Blessed reference of the calling LA::Line
# $tokenGroupObj - Blessed reference of the line's LA::TokenGroup
#
# Optional arguments
# $lineNumOk - Set to 'line_num_ok' when called by LA::Statement::if, in situations
# like 'IF ... THEN 20' in which case, this statement knows that the
# 'THEN 20' part should be parsed as 'THEN GOTO 20'. Otherwise, set to
# 'undef'
#
# Return values
# 'undef' on improper arguments, or if the statement can't be parsed at all (i.e. doesn't
# begin with a keyword, including an implied LET), or begins with a 'weak' keyword
# like STEP (matching a key in LA::Script->weakKeywordHash)
# Blessed reference to the newly-created object on success
my ($class, $scriptObj, $lineObj, $tokenGroupObj, $lineNumOk, $check) = @_;
lib/Language/Axbasic/Statement.pm view on Meta::CPAN
# Called by LA::Line->parse directly after a call to LA::Statement->new
#
# Expected arguments
# (none besides $self)
#
# Return values
# 'undef' on improper arguments or if there is an error
# 1 otherwise
my ($self, $check) = @_;
# Check for improper arguments
if (defined $check) {
return $axmud::CLIENT->writeImproper($self->_objClass . '->parse', @_);
}
# Extract tokens. If the extraction is successful, they are stored in $self->parseDataList,
# ready for $self->implement to access
if (! $self->parseWaitInterface()) {
# ($self->scriptObj->setError has already been called)
return undef;
}
# Parsing complete
return 1;
}
sub implement {
# Called by LA::Line->implement directly after a call to $self->parse
#
# Expected arguments
# (none besides $self)
#
# Return values
# 'undef' on improper arguments or if there is an error
# 1 otherwise
my ($self, $check) = @_;
# Check for improper arguments
if (defined $check) {
return $axmud::CLIENT->writeImproper($self->_objClass . '->implement', @_);
}
# Implement the statement, haveing parsed it
if (! $self->implementWaitInterface('alias')) {
# ($self->scriptObj->setError has already been called)
return undef;
}
# Implementation complete
return 1;
}
}
{ package Language::Axbasic::Statement::waitalive;
use strict;
use warnings;
# use diagnostics;
use Glib qw(TRUE FALSE);
@Language::Axbasic::Statement::waitalive::ISA = qw(
Language::Axbasic
Language::Axbasic::Statement
);
# WAITALIVE [ expression ]
##################
# Methods
sub parse {
# Called by LA::Line->parse directly after a call to LA::Statement->new
#
# Expected arguments
# (none besides $self)
#
# Return values
# 'undef' on improper arguments or if there is an error
# 1 otherwise
my ($self, $check) = @_;
# Local variables
my $timeoutExp;
# Check for improper arguments
if (defined $check) {
return $axmud::CLIENT->writeImproper($self->_objClass . '->parse', @_);
}
# Get the timeout, if specified, and convert it into an expression
if (defined $self->tokenGroupObj->shiftMatchingToken(',')) {
$timeoutExp = Language::Axbasic::Expression::Arithmetic->new(
$self->scriptObj,
$self->tokenGroupObj,
);
if (! defined $timeoutExp) {
return $self->scriptObj->setError(
'missing_or_illegal_expression',
$self->_objClass . '->parse',
);
}
}
# Check that nothing follows the expression(s)
if (! $self->tokenGroupObj->testStatementEnd()) {
return $self->scriptObj->setError(
'unexpected_keywords,_operators_or_expressions',
$self->_objClass . '->parse',
);
}
# Store the expression (if specified), so $self->implement can retrieve it
$self->ivAdd('parseDataHash', 'timeout', $timeoutExp);
lib/Language/Axbasic/Statement.pm view on Meta::CPAN
return 1;
}
sub implement {
# Called by LA::Line->implement directly after a call to $self->parse
#
# Expected arguments
# (none besides $self)
#
# Return values
# 'undef' on improper arguments or if there is an error
# 1 otherwise
my ($self, $check) = @_;
# Local variables
my ($timeoutExp, $timeout);
# Check for improper arguments
if (defined $check) {
return $axmud::CLIENT->writeImproper($self->_objClass . '->implement', @_);
}
# If the Axbasic script isn't being run from within an Axmud task, ignore the statement
if (! $self->scriptObj->parentTask) {
# Implementation complete. Execution resumes from the next statement
return 1;
}
# Otherwise, retrieve the argument (if any) stored by $self->parse
$timeoutExp = $self->ivShow('parseDataHash', 'timeout');
# Evaluate the expression, if specified
if (defined $timeoutExp) {
$timeout = $timeoutExp->evaluate();
if (! ($timeout =~ /^\d+$/)) {
return $self->scriptObj->setError(
'invalid_integer',
$self->_objClass . '->implement',
);
} elsif ($timeout < 1) {
return $self->scriptObj->setError(
'number_NUM_out_of_range',
$self->_objClass . '->implement',
'NUM', $timeout,
);
}
}
# Inform the parent task that it should start waiting
$self->scriptObj->parentTask->setUpMonitoring(
'status',
'alive',
undef,
$timeout,
);
# Halt execution of the Axbasic script to allow control to be passed back to the parent task
$self->scriptObj->set_scriptStatus('wait_status');
# Implementation complete
return 1;
}
}
{ package Language::Axbasic::Statement::waitarrive;
use strict;
use warnings;
# use diagnostics;
use Glib qw(TRUE FALSE);
@Language::Axbasic::Statement::waitarrive::ISA = qw(
Language::Axbasic
Language::Axbasic::Statement
);
# WAITARRIVE [ expression ]
##################
# Methods
sub parse {
# Called by LA::Line->parse directly after a call to LA::Statement->new
#
# Expected arguments
# (none besides $self)
#
# Return values
# 'undef' on improper arguments or if there is an error
# 1 otherwise
my ($self, $check) = @_;
# Local variables
my $timeoutExp;
# Check for improper arguments
if (defined $check) {
return $axmud::CLIENT->writeImproper($self->_objClass . '->parse', @_);
}
# Get the timeout, if specified, and convert it into an expression
if (defined $self->tokenGroupObj->shiftMatchingToken(',')) {
$timeoutExp = Language::Axbasic::Expression::Arithmetic->new(
$self->scriptObj,
$self->tokenGroupObj,
);
( run in 0.826 second using v1.01-cache-2.11-cpan-39bf76dae61 )