1: # The LearningOnline Network with CAPA - LON-CAPA
2: # Parser operator
3: #
4: # Copyright (C) 2014 Michigan State University Board of Trustees
5: #
6: # This program is free software: you can redistribute it and/or modify
7: # it under the terms of the GNU General Public License as published by
8: # the Free Software Foundation, either version 3 of the License, or
9: # (at your option) any later version.
10: #
11: # This program is distributed in the hope that it will be useful,
12: # but WITHOUT ANY WARRANTY; without even the implied warranty of
13: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: # GNU General Public License for more details.
15: #
16: # You should have received a copy of the GNU General Public License
17: # along with this program. If not, see <http://www.gnu.org/licenses/>.
18: #
19:
20: ##
21: # Parser operator, like "(".
22: ##
23: package Apache::math_parser::Operator;
24:
25: use strict;
26: use warnings;
27: use utf8;
28:
29: use enum qw(UNKNOWN UNARY BINARY TERNARY);
30:
31: ##
32: # Constructor
33: # @param {string} id - Characters used to recognize the operator
34: # @param {integer} arity (Operator::UNKNOWN, UNARY, BINARY, TERNARY)
35: # @param {integer} lbp - left binding power
36: # @param {integer} rbp - right binding power
37: # @param {nudFunction} nud - Null denotation function. Parameters: Parser p. Returns: ENode.
38: # @param {ledFunction} led - Left denotation function Parameters: Parser p, ENode left. Returns: ENode.
39: ##
40: sub new {
41: my $class = shift;
42: my $self = {
43: _id => shift,
44: _arity => shift,
45: _lbp => shift,
46: _rbp => shift,
47: _nud => shift,
48: _led => shift,
49: };
50: bless $self, $class;
51: return $self;
52: }
53:
54: # Attribute helpers
55:
56: sub id {
57: my $self = shift;
58: return $self->{_id};
59: }
60: sub arity {
61: my $self = shift;
62: return $self->{_arity};
63: }
64: sub lbp {
65: my $self = shift;
66: return $self->{_lbp};
67: }
68: sub rbp {
69: my $self = shift;
70: return $self->{_rbp};
71: }
72: sub nud {
73: my $self = shift;
74: return $self->{_nud};
75: }
76: sub led {
77: my $self = shift;
78: return $self->{_led};
79: }
80:
81: 1;
82: __END__
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>