Permalink
Browse files

implemented range operator

  • Loading branch information...
1 parent 887fd5a commit f2c8ad15a2d2d8717bf92e3756aba76d64477054 @fglock committed Aug 30, 2010
View
@@ -8,7 +8,7 @@ dev version - 2010-08-23
- lists
- 'Mu'
- several fixes in Hash, Array, Block, Bool, Str
-- operators: numeric autoincrements, defined-or
+- operators: numeric autoincrements, defined-or, range
6.0 2010-07-27
- Ruby backend bootstrap.
@@ -465,7 +465,19 @@ class Apply {
if $code eq 'infix:<<>' { return '(' ~ (@.arguments.>>emit_javascript).join(' < ') ~ ')' };
if $code eq 'infix:<>=>' { return '(' ~ (@.arguments.>>emit_javascript).join(' >= ') ~ ')' };
if $code eq 'infix:<<=>' { return '(' ~ (@.arguments.>>emit_javascript).join(' <= ') ~ ')' };
-
+
+ if $code eq 'infix:<..>' {
+ return '(function (a) { '
+ ~ 'for (var i=' ~ @.arguments[0].emit_javascript()
+ ~ ', l=' ~ @.arguments[1].emit_javascript() ~ '; '
+ ~ 'i<=l; ++i)'
+ ~ '{ '
+ ~ 'a.push(i) '
+ ~ '}; '
+ ~ 'return a '
+ ~ '})([])'
+ }
+
if $code eq 'infix:<&&>' { return 'f_and('
~ @.arguments[0].emit_javascript() ~ ', '
~ 'function () { return ' ~ @.arguments[1].emit_javascript() ~ '})'
@@ -322,6 +322,7 @@ class Apply {
if $code eq 'infix:<==>' { return '(' ~ (@.arguments.>>emit_perl5).join(' == ') ~ ')' };
if $code eq 'infix:<!=>' { return '(' ~ (@.arguments.>>emit_perl5).join(' != ') ~ ')' };
if $code eq 'infix:<=>>' { return '(' ~ (@.arguments.>>emit_perl5).join(' => ') ~ ')' };
+ if $code eq 'infix:<..>' { return '[' ~ (@.arguments.>>emit_perl5).join(' .. ') ~ ']' };
if $code eq 'ternary:<?? !!>' {
my $cond = @.arguments[0];
@@ -180,6 +180,17 @@ class MiniPerl6::Precedence {
$prec = $prec - 1;
add_op( 'infix', '|', $prec, { assoc => 'list' } );
add_op( 'prefix', '|', $prec );
+ $prec = $prec - 1;
+ add_op( 'infix', '<=>', $prec );
+ add_op( 'infix', 'leg', $prec );
+ add_op( 'infix', 'cmp', $prec );
+ add_op( 'infix', 'does', $prec );
+ add_op( 'infix', 'but', $prec );
+ add_op( 'infix', '..', $prec );
+ add_op( 'infix', '^..', $prec );
+ add_op( 'infix', '..^', $prec );
+ add_op( 'infix', '^..^', $prec );
+
$prec = $prec - 1;
add_op( 'infix', 'ne', $prec, { assoc => 'chain' } );
add_op( 'infix', 'eq', $prec, { assoc => 'chain' } );
@@ -193,6 +204,7 @@ class MiniPerl6::Precedence {
add_op( 'infix', '!=', $prec, { assoc => 'chain' } );
add_op( 'infix', '<', $prec, { assoc => 'chain' } );
add_op( 'infix', '>', $prec, { assoc => 'chain' } );
+ add_op( 'infix', '~~', $prec, { assoc => 'chain' } );
$prec = $prec - 1;
add_op( 'infix', '&&', $prec );
$prec = $prec - 1;

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -146,7 +146,7 @@ sub new { shift; bless { @_ }, "Apply" }
sub code { $_[0]->{code} };
sub arguments { $_[0]->{arguments} };
sub namespace { $_[0]->{namespace} };
-sub emit_perl5 { my $self = $_[0]; (my $ns = ''); if (Main::bool($self->{namespace})) { ($ns = $self->{namespace} . '::') } ; (my $code = $ns . $self->{code}); if (Main::bool(Main::isa($code, 'Str'))) { } else { return('(' . $self->{code}->emit_perl5() . ')->(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') }; if (Main::bool(($code eq 'self'))) { return('$self') } ; if (Main::bool(($code eq 'Mu'))) { return('undef') } ; if (Main::bool(($code eq 'make'))) { return('($MATCH->{capture} = (' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . '))') } ; if (Main::bool(($code eq 'say'))) { return('Main::say(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'print'))) { return('Main::print(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'warn'))) { return('warn(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'array'))) { return('@{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '}') } ; if (Main::bool(($code eq 'pop'))) { return('pop( @{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '} )') } ; if (Main::bool(($code eq 'push'))) { return('push( @{' . ($self->{arguments}->[0])->emit_perl5() . '}, ' . ($self->{arguments}->[1])->emit_perl5() . ' )') } ; if (Main::bool(($code eq 'shift'))) { return('shift( @{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '} )') } ; if (Main::bool(($code eq 'unshift'))) { return('unshift( @{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '} )') } ; if (Main::bool(($code eq 'Int'))) { return('(0+' . ($self->{arguments}->[0])->emit_perl5() . ')') } ; if (Main::bool(($code eq 'Num'))) { return('(0+' . ($self->{arguments}->[0])->emit_perl5() . ')') } ; if (Main::bool(($code eq 'bool'))) { return('Main::bool(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'prefix:<~>'))) { return('("" . ' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')') } ; if (Main::bool(($code eq 'prefix:<!>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ' ? 0 : 1)') } ; if (Main::bool(($code eq 'prefix:<?>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ' ? 1 : 0)') } ; if (Main::bool(($code eq 'prefix:<$>'))) { return('${' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '}') } ; if (Main::bool(($code eq 'prefix:<@>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ' || [])') } ; if (Main::bool(($code eq 'prefix:<%>'))) { return('%{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '}') } ; if (Main::bool(($code eq 'postfix:<++>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')++') } ; if (Main::bool(($code eq 'postfix:<-->'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')--') } ; if (Main::bool(($code eq 'prefix:<++>'))) { return('++(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')') } ; if (Main::bool(($code eq 'prefix:<-->'))) { return('--(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')') } ; if (Main::bool(($code eq 'list:<~>'))) { return('' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' . ') . '') } ; if (Main::bool(($code eq 'infix:<+>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' + ') . ')') } ; if (Main::bool(($code eq 'infix:<->'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' - ') . ')') } ; if (Main::bool(($code eq 'infix:<*>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' * ') . ')') } ; if (Main::bool(($code eq 'infix:</>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' / ') . ')') } ; if (Main::bool(($code eq 'infix:<>>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' > ') . ')') } ; if (Main::bool(($code eq 'infix:<<>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' < ') . ')') } ; if (Main::bool(($code eq 'infix:<>=>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' >= ') . ')') } ; if (Main::bool(($code eq 'infix:<<=>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' <= ') . ')') } ; if (Main::bool(($code eq 'infix:<x>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' x ') . ')') } ; if (Main::bool(($code eq 'infix:<&&>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' && ') . ')') } ; if (Main::bool(($code eq 'infix:<||>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' || ') . ')') } ; if (Main::bool(($code eq 'infix:<//>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' // ') . ')') } ; if (Main::bool(($code eq 'infix:<eq>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' eq ') . ')') } ; if (Main::bool(($code eq 'infix:<ne>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ne ') . ')') } ; if (Main::bool(($code eq 'infix:<le>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' le ') . ')') } ; if (Main::bool(($code eq 'infix:<ge>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ge ') . ')') } ; if (Main::bool(($code eq 'infix:<==>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' == ') . ')') } ; if (Main::bool(($code eq 'infix:<!=>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' != ') . ')') } ; if (Main::bool(($code eq 'infix:<=>>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' => ') . ')') } ; if (Main::bool(($code eq 'ternary:<?? !!>'))) { (my $cond = $self->{arguments}->[0]); if (Main::bool((Main::isa($cond, 'Var') && ($cond->sigil() eq '@')))) { ($cond = Apply->new(('code' => 'prefix:<@>'), ('arguments' => [$cond]))) } ; return('(' . Perl5::to_bool($cond)->emit_perl5() . ' ? ' . ($self->{arguments}->[1])->emit_perl5() . ' : ' . ($self->{arguments}->[2])->emit_perl5() . ')') } ; if (Main::bool(($code eq 'circumfix:<( )>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'infix:<=>'))) { return(emit_bind($self->{arguments}->[0], $self->{arguments}->[1])) } ; $code . '(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')' };
+sub emit_perl5 { my $self = $_[0]; (my $ns = ''); if (Main::bool($self->{namespace})) { ($ns = $self->{namespace} . '::') } ; (my $code = $ns . $self->{code}); if (Main::bool(Main::isa($code, 'Str'))) { } else { return('(' . $self->{code}->emit_perl5() . ')->(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') }; if (Main::bool(($code eq 'self'))) { return('$self') } ; if (Main::bool(($code eq 'Mu'))) { return('undef') } ; if (Main::bool(($code eq 'make'))) { return('($MATCH->{capture} = (' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . '))') } ; if (Main::bool(($code eq 'say'))) { return('Main::say(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'print'))) { return('Main::print(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'warn'))) { return('warn(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'array'))) { return('@{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '}') } ; if (Main::bool(($code eq 'pop'))) { return('pop( @{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '} )') } ; if (Main::bool(($code eq 'push'))) { return('push( @{' . ($self->{arguments}->[0])->emit_perl5() . '}, ' . ($self->{arguments}->[1])->emit_perl5() . ' )') } ; if (Main::bool(($code eq 'shift'))) { return('shift( @{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '} )') } ; if (Main::bool(($code eq 'unshift'))) { return('unshift( @{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '} )') } ; if (Main::bool(($code eq 'Int'))) { return('(0+' . ($self->{arguments}->[0])->emit_perl5() . ')') } ; if (Main::bool(($code eq 'Num'))) { return('(0+' . ($self->{arguments}->[0])->emit_perl5() . ')') } ; if (Main::bool(($code eq 'bool'))) { return('Main::bool(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'prefix:<~>'))) { return('("" . ' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')') } ; if (Main::bool(($code eq 'prefix:<!>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ' ? 0 : 1)') } ; if (Main::bool(($code eq 'prefix:<?>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ' ? 1 : 0)') } ; if (Main::bool(($code eq 'prefix:<$>'))) { return('${' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '}') } ; if (Main::bool(($code eq 'prefix:<@>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ' || [])') } ; if (Main::bool(($code eq 'prefix:<%>'))) { return('%{' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . '}') } ; if (Main::bool(($code eq 'postfix:<++>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')++') } ; if (Main::bool(($code eq 'postfix:<-->'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')--') } ; if (Main::bool(($code eq 'prefix:<++>'))) { return('++(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')') } ; if (Main::bool(($code eq 'prefix:<-->'))) { return('--(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ') . ')') } ; if (Main::bool(($code eq 'list:<~>'))) { return('' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' . ') . '') } ; if (Main::bool(($code eq 'infix:<+>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' + ') . ')') } ; if (Main::bool(($code eq 'infix:<->'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' - ') . ')') } ; if (Main::bool(($code eq 'infix:<*>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' * ') . ')') } ; if (Main::bool(($code eq 'infix:</>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' / ') . ')') } ; if (Main::bool(($code eq 'infix:<>>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' > ') . ')') } ; if (Main::bool(($code eq 'infix:<<>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' < ') . ')') } ; if (Main::bool(($code eq 'infix:<>=>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' >= ') . ')') } ; if (Main::bool(($code eq 'infix:<<=>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' <= ') . ')') } ; if (Main::bool(($code eq 'infix:<x>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' x ') . ')') } ; if (Main::bool(($code eq 'infix:<&&>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' && ') . ')') } ; if (Main::bool(($code eq 'infix:<||>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' || ') . ')') } ; if (Main::bool(($code eq 'infix:<//>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' // ') . ')') } ; if (Main::bool(($code eq 'infix:<eq>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' eq ') . ')') } ; if (Main::bool(($code eq 'infix:<ne>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ne ') . ')') } ; if (Main::bool(($code eq 'infix:<le>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' le ') . ')') } ; if (Main::bool(($code eq 'infix:<ge>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' ge ') . ')') } ; if (Main::bool(($code eq 'infix:<==>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' == ') . ')') } ; if (Main::bool(($code eq 'infix:<!=>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' != ') . ')') } ; if (Main::bool(($code eq 'infix:<=>>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' => ') . ')') } ; if (Main::bool(($code eq 'infix:<..>'))) { return('[' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ' .. ') . ']') } ; if (Main::bool(($code eq 'ternary:<?? !!>'))) { (my $cond = $self->{arguments}->[0]); if (Main::bool((Main::isa($cond, 'Var') && ($cond->sigil() eq '@')))) { ($cond = Apply->new(('code' => 'prefix:<@>'), ('arguments' => [$cond]))) } ; return('(' . Perl5::to_bool($cond)->emit_perl5() . ' ? ' . ($self->{arguments}->[1])->emit_perl5() . ' : ' . ($self->{arguments}->[2])->emit_perl5() . ')') } ; if (Main::bool(($code eq 'circumfix:<( )>'))) { return('(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')') } ; if (Main::bool(($code eq 'infix:<=>'))) { return(emit_bind($self->{arguments}->[0], $self->{arguments}->[1])) } ; $code . '(' . Main::join(([ map { $_->emit_perl5() } @{ $self->{arguments} } ]), ', ') . ')' };
sub emit_bind { my $parameters = $_[0]; my $arguments = $_[1]; if (Main::bool(Main::isa($parameters, 'Call'))) { (my $a = $parameters); return('((' . ($a->invocant())->emit_perl5() . ')->{' . $a->method() . '} = ' . $arguments->emit_perl5() . ')') } ; if (Main::bool(Main::isa($parameters, 'Lit::Array'))) { (my $a = $parameters->array1()); (my $str = 'do { '); (my $i = 0); for my $var ( @{[@{($a || [])}]} ) { ($str = $str . ' ' . emit_bind($var, Index->new(('obj' => $arguments), ('index_exp' => Val::Int->new(('int' => $i))))) . '; '); ($i = ($i + 1)) }; return($str . $parameters->emit_perl5() . ' }') } ; if (Main::bool(Main::isa($parameters, 'Lit::Hash'))) { (my $a = $parameters->hash1()); (my $b = $arguments->hash1()); (my $str = 'do { '); (my $i = 0); my $arg; for my $var ( @{[@{($a || [])}]} ) { ($arg = Apply->new(('code' => 'Mu'), ('arguments' => []))); for my $var2 ( @{[@{($b || [])}]} ) { if (Main::bool((($var2->[0])->buf() eq ($var->[0])->buf()))) { ($arg = $var2->[1]) } }; ($str = $str . ' ' . emit_bind($var->[1], $arg) . '; '); ($i = ($i + 1)) }; return($str . $parameters->emit_perl5() . ' }') } ; if (Main::bool(((Main::isa($parameters, 'Var') && ($parameters->sigil() eq '@')) || (Main::isa($parameters, 'Decl') && ($parameters->var()->sigil() eq '@'))))) { ($arguments = Lit::Array->new(('array1' => [$arguments]))) } ; '(' . $parameters->emit_perl5() . ' = ' . $arguments->emit_perl5() . ')' }
}
@@ -69,6 +69,16 @@ add_op('prefix', '&', $prec);
add_op('infix', '|', $prec, { ('assoc' => 'list'), });
add_op('prefix', '|', $prec);
($prec = ($prec - 1));
+add_op('infix', '<=>', $prec);
+add_op('infix', 'leg', $prec);
+add_op('infix', 'cmp', $prec);
+add_op('infix', 'does', $prec);
+add_op('infix', 'but', $prec);
+add_op('infix', '..', $prec);
+add_op('infix', '^..', $prec);
+add_op('infix', '..^', $prec);
+add_op('infix', '^..^', $prec);
+($prec = ($prec - 1));
add_op('infix', 'ne', $prec, { ('assoc' => 'chain'), });
add_op('infix', 'eq', $prec, { ('assoc' => 'chain'), });
add_op('infix', 'lt', $prec, { ('assoc' => 'chain'), });
@@ -81,6 +91,7 @@ add_op('infix', '==', $prec, { ('assoc' => 'chain'), });
add_op('infix', '!=', $prec, { ('assoc' => 'chain'), });
add_op('infix', '<', $prec, { ('assoc' => 'chain'), });
add_op('infix', '>', $prec, { ('assoc' => 'chain'), });
+add_op('infix', '~~', $prec, { ('assoc' => 'chain'), });
($prec = ($prec - 1));
add_op('infix', '&&', $prec);
($prec = ($prec - 1));
Oops, something went wrong.

0 comments on commit f2c8ad1

Please sign in to comment.