File:  [LON-CAPA] / loncom / html / adm / LC_math_editor / src / operator.js
Revision 1.2: download - view: text, annotated - select for diffs
Tue Feb 24 15:20:44 2015 UTC (9 years, 6 months ago) by damieng
Branches: MAIN
CVS tags: version_2_12_X, HEAD
updated to git version (see git for log history), and changed param separator to ,

/*

Copyright (C) 2014  Michigan State University Board of Trustees

The JavaScript code in this page is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version.  The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.

As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.

*/

"use strict";

/**
 * Null denotation function
 * @callback nudFunction
 * @param {Parser} p - the parser
 * @returns {ENode}
 */

/**
 * Left denotation function
 * @callback ledFunction
 * @param {Parser} p - the parser
 * @param {ENode} left - left node
 * @returns {ENode}
 */

/**
 * Parser operator, like "(".
 * @constructor
 * @param {string} id - Characters used to recognize the operator
 * @param {number} arity (UNKNOWN, UNARY, BINARY, TERNARY)
 * @param {number} lbp - left binding power
 * @param {number} rbp - right binding power
 * @param {nudFunction} nud - Null denotation function
 * @param {ledFunction} led - Left denotation function
 */
function Operator(id, arity, lbp, rbp, nud, led) {
    this.id = id;
    this.arity = arity;
    this.lbp = lbp;
    this.rbp = rbp;
    this.nud = nud;
    this.led = led;
}

Operator.UNKNOWN = 0;
Operator.UNARY = 1;
Operator.BINARY = 2;
Operator.TERNARY = 3;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>