2.4.0 • Published 2 months ago

antlr-calculator v2.4.0

Weekly downloads
56
License
MIT
Repository
github
Last release
2 months ago

antlr-calculator

Build Status npm

This calculator is using the ANTLR4 TypeScript target to calculate results from formulas that are passed in as string. Both JavaScript and TypeScript are supported.

Whenever a calculation is performed, a CalculationResult is returned with the following properties:

PropertyType
isValidbooleantrue if the formula could be parsed and calculated, else false
errorPositionnumberPosition of the offending symbol in the line, 0 based index, for invalid results, else null
errorMessagestringANTLR error message for invalid formulas, else null
resultnumberNaN for invalid formulas, else the actual result

You can check out the live demo here!

Installation

Clone this repository or just go with npm install antlr-calculator.

JavaScript

Just reference dist/bundle.js and the global variable antlrCalc is available.

var result = antlrCalc.Calculator.calculate('4*5');
console.log(JSON.stringify(result, null, 2));

//  {
//    "isValid": true,
//    "errorPosition": null,
//    "errorMessage": null,
//    "result": 20
//  }

TypeScript

Import the Calculator class and use the static calculate(formula: string) method to evaluate formulas.

import { Calculator } from 'antlr-calculator';

var result = Calculator.calculate('4*5');
console.log(JSON.stringify(result, null, 2));

//  {
//    "isValid": true,
//    "errorPosition": null,
//    "errorMessage": null,
//    "result": 20
//  }

Supported functions

Expression
FLOOR expressionRound down to zero accuracy
CEIL expressionRound up to zero accuracy
ABS expressionAbsolute value
ROUNDK '(' expression ';' expression ')'Round expr_1 with expr_2 accuracy
ROUND expressionRound with zero accuracy
TRUNC expressionTrim decimal digits
SIN expressionSinus
COS expressionCosinus
TAN expressionTangens
COT expressionCotangens
SINH expressionSinus Hypererbolicus
COSH expressionCosinus Hyperbolicus
TANH expressionTangens Hyperbolicus
ARCSIN expressionInverse Sinus
ARCCOS expressionInverse Cosinus
ARCTAN expressionInverse Tangens
ARCTAN2 '(' expression ';' expression ')'Atan2
ARCCOT expressionInverse Cotangens
EXP expressione ^ expr
LN expressionLogarithm to e
EEX expression10 ^ expr
LOG expressionLogarithm to 10
RAD expressionAngle to radians (360° base)
DEG expressionRadians to angle (360° base)
SQRT expressionSquare root
SQR expressionSquare product
expression op = ('^'|'**') expressionexpr_1 to the expr_2 th power
expression (MOD | '%' ) expressionModulo
expression DIV expressionWhole part of division rest
expression op = ('~'|'//') expressionexpr_1 nth root of expr_2
expression op = ('*'|'/') expressionMultiplication or division
expression op = ('+'|'-') expressionAddition or subtraction
NUMBERSingle integer or float number
'(' expression ')'Expression within parentheses
PI '()'?Mathematical constant pi = 3,141593
expression E+ expressionExponent, e.g. 10e+43
expression E- expressionInverted Exponent, e.g. 10e-43
EULERMathematical constant e = 2,718282
'-' expressionUnary minus sign (negative numbers)
'+' expressionUnary plus sign (positive numbers)
'(' expression ')' expressionExpressions without multiplication sign, e.g. 2(3) -> 2*(3)
expression '(' expression ')'Expressions without multiplication sign, e.g. 2(3) -> 2*(3)

expression may be any expression as functions can be nested. Example: DEG(2*PI) or LOG(10^3).

Formulas can be case invariant, e.g. SIN, sin and siN are all considered the same.

Comments in Formulas

Comments in Formulas are supported by encapsulating them either in /*...*/, '...' or "..." quote styles. Examples:

4/*Length*/*3/*Width*/ resolves to 12

4'Length'*3'Width' resolves to 12

4"Length"*3"Width" resolves to 12


MIT License

2.4.1-beta0008

2 months ago

2.4.1-beta0006

2 months ago

2.4.1-beta0004

2 months ago

2.4.1-beta0002

3 months ago

2.4.0

6 months ago

2.3.1-beta0006

6 months ago

2.3.1-beta0002

6 months ago

2.3.1-beta0004

6 months ago

2.4.0-beta0008

6 months ago

2.4.0-beta0009

6 months ago

2.2.1-beta0028

11 months ago

2.3.0

11 months ago

2.3.0-beta0030

11 months ago

2.2.1-beta0026

1 year ago

2.2.1-beta0024

1 year ago

2.2.1-beta0022

1 year ago

2.2.1-beta0020

1 year ago

2.2.1-beta0007

1 year ago

2.2.1-beta0005

2 years ago

2.2.1-beta0009

1 year ago

2.2.1-beta0003

2 years ago

2.2.1-beta0015

1 year ago

2.2.1-beta0013

1 year ago

2.2.1-beta0011

1 year ago

2.2.0

2 years ago

2.2.1-beta0002

2 years ago

2.1.2-beta0031

2 years ago

2.2.0-beta0034

2 years ago

2.2.0-beta0035

2 years ago

2.1.2-beta0033

2 years ago

2.1.2-beta0017

2 years ago

2.1.2-beta0015

2 years ago

2.1.2-beta0019

2 years ago

2.1.2-beta0021

2 years ago

2.1.2-beta0025

2 years ago

2.1.2-beta0023

2 years ago

2.1.2-beta0029

2 years ago

2.1.2-beta0027

2 years ago

2.1.2-beta0013

3 years ago

2.1.2-beta0009

3 years ago

2.1.2-beta0011

3 years ago

2.1.2-beta0007

3 years ago

2.1.2-beta0002

3 years ago

2.1.2-beta0003

3 years ago

2.1.2-beta0005

3 years ago

2.1.1

3 years ago

2.1.1-beta0005

3 years ago

2.1.1-beta0004

3 years ago

2.1.1-beta0002

3 years ago

2.1.0-beta0009

3 years ago

2.1.0

3 years ago

2.1.0-beta0012

3 years ago

2.1.0-beta0011

3 years ago

2.1.0-beta0014

3 years ago

2.1.0-beta0013

3 years ago

2.0.6-beta0005

3 years ago

2.0.6-beta0003

3 years ago

2.0.6-beta0001

4 years ago

2.0.5

4 years ago

2.0.5-beta0002

4 years ago

2.0.4

4 years ago

2.0.4-beta0004

4 years ago

2.0.4-beta0003

4 years ago

2.0.4-beta0005

4 years ago

2.0.4-beta0001

4 years ago

2.0.3

4 years ago

2.0.3-beta0003

4 years ago

2.0.2

4 years ago

2.0.2-beta0002

4 years ago

2.0.2-beta0003

4 years ago

2.0.0-beta0021

4 years ago

2.0.0-beta0020

4 years ago

2.0.0-beta0024

4 years ago

2.0.0-beta0023

4 years ago

2.0.1-beta0001

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.5

5 years ago

1.0.4

7 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago