HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //usr/share/perl5/Math/Calc/Units/Grammar.y
# To process: yapp -s -m Math::Calc::Units::Grammar Grammar.y

%{
    use Math::Calc::Units::Compute qw(plus minus mult divide power construct);
%}

# Lowest
%nonassoc BARE_UNIT
%nonassoc NUMBER CONSTRUCT
%left '+' '-'
%left '*' '/'
%left WORD
%left '**'
# Highest

%%

START : expr
      | '#' unit
;

expr : expr '+' expr   { return plus($_[1], $_[3]); }
     | expr '-' expr   { return minus($_[1], $_[3]); }
     | expr '*' expr   { return mult($_[1], $_[3]); }
     | expr '/' expr   { return divide($_[1], $_[3]); }
     | expr '**' expr  { return power($_[1], $_[3]); }
     | '(' expr ')'    { return $_[2]; }
     | value           { return $_[1]; }
     | expr unit       { return mult($_[1], [ 1, $_[2] ]); }
;

value : NUMBER unit
                       { return [ $_[1] => $_[2] ] }
      | unit %prec BARE_UNIT
                       { return [ 1 => $_[1] ] }
      | NUMBER         { return [ $_[1] => {} ] }
      | '-' NUMBER     { return [ -$_[2] => {} ] }
      | '@' NUMBER     { return [ $_[2] => { 'timestamp' => 1 } ] }
      | CONSTRUCT      { return construct($_[1]) }
;

unit : WORD	       { return { $_[1] => 1 } }
     | WORD WORD       { my $u = {}; $u->{$_[1]}++; $u->{$_[2]}++; return $u; }
;

%%