mathjslab
所属分类:matlab编程
开发工具:TypeScript
文件大小:0KB
下载次数:0
上传日期:2023-08-13 17:49:53
上 传 者:
sh-1993
说明: 具有MATLAB Octave等语言语法的解释器,
(Interpreter with language syntax like MATLAB Octave,)
文件列表:
.editorconfig (485, 2024-01-06)
.eslintrc.js (817, 2024-01-06)
.prettierrc (79, 2024-01-06)
CHANGES.md (8966, 2024-01-06)
CODE_OF_CONDUCT.md (5224, 2024-01-06)
CONTRIBUTING.md (9015, 2024-01-06)
LICENSE (1099, 2024-01-06)
package.json (3271, 2024-01-06)
src/ (0, 2024-01-06)
src/AST.ts (11845, 2024-01-06)
src/CharString.spec.ts (176, 2024-01-06)
src/CharString.ts (2093, 2024-01-06)
src/ComplexDecimal.spec.ts (2673, 2024-01-06)
src/ComplexDecimal.ts (61080, 2024-01-06)
src/CoreFunctions.spec.ts (209, 2024-01-06)
src/CoreFunctions.ts (27542, 2024-01-06)
src/FunctionHandle.spec.ts (212, 2024-01-06)
src/FunctionHandle.ts (2546, 2024-01-06)
src/LexerErrorListener.ts (773, 2024-01-06)
src/LinearAlgebra.spec.ts (739, 2024-01-06)
src/LinearAlgebra.ts (20175, 2024-01-06)
src/MathJSLabLexer.g4 (14397, 2024-01-06)
src/MathJSLabParser.g4 (19055, 2024-01-06)
src/MathOperation.spec.ts (2126, 2024-01-06)
src/MathOperation.ts (12437, 2024-01-06)
src/MultiArray.spec.ts (1197, 2024-01-06)
src/MultiArray.ts (58275, 2024-01-06)
src/ParserErrorListener.ts (777, 2024-01-06)
src/Structure.spec.ts (207, 2024-01-06)
src/Structure.ts (6757, 2024-01-06)
src/SymbolTable.spec.ts (197, 2024-01-06)
src/SymbolTable.ts (2605, 2024-01-06)
src/configuration.spec.ts (339, 2024-01-06)
src/configuration.ts (8077, 2024-01-06)
src/evaluator.spec.ts (616, 2024-01-06)
src/evaluator.ts (74561, 2024-01-06)
src/lib.ts (567, 2024-01-06)
src/substSymbol.ts (2929, 2024-01-06)
... ...
# MathJSLab
[![npm version](https://badge.fury.io/js/mathjslab.svg)](https://badge.fury.io/js/mathjslab)
[![MIT License](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://github.com/sergiolindau/mathjslab/blob/main/LICENSE)
> An interpreter with language syntax like [MATLAB®](https://www.mathworks.com/)/[Octave](https://www.gnu.org/software/octave/) written in [Typescript](https://www.typescriptlang.org/).
**ISBN 978-65-00-82338-7**
This package emulates a parser and evaluator for a subset of
[MATLAB®](https://www.mathworks.com/)/[Octave](https://www.gnu.org/software/octave/)
language. It is written completely in [Typescript](https://www.typescriptlang.org/).
It can run in browser environment and implements an arbitrary precision
arithmetics using [decimal.js](https://www.npmjs.com/package/decimal.js)
package.
It uses the [ANTLR](https://www.antlr.org/)
[parser generator](https://en.wikipedia.org/wiki/Compiler-compiler) to
generate a [parser](https://en.wikipedia.org/wiki/Parsing) that create an
[AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree)
([Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree)) of input.
Other components besides the [parser](https://en.wikipedia.org/wiki/Parsing)
are the evaluator, which computes the inputs, and the [MathML](https://www.w3.org/Math/)
unparser, that generates mathematical representations of the inputs and results.
This software is intended for educational purposes, to provide teachers and
students with a computer aided calculation tool that is capable of running in
a browser environment. So it can be easily adapted to be used on different devices
and environments.
A functional [demo](https://mathjslab.netlify.app/) use of this package in a
[Web application](https://en.wikipedia.org/wiki/Web_application) can be found
[here](https://github.com/sergiolindau/mathjslab-calculator).
## Features
- Runs on any [JavaScript](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/) engine.
- Comes with a large set of built-in functions and constants.
- Is easily extensible.
- [Open source](https://en.wikipedia.org/wiki/Open-source_software) with fully documented code.
- Test suites.
- Improved [demo](https://mathjslab.netlify.app/) [Web application](https://en.wikipedia.org/wiki/Web_application).
## Browser support
MathJSLab works on any [ES2016](https://262.ecma-international.org/7.0/) compatible
[JavaScript](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/)
engine, including [Node.js](https://nodejs.org/),
[Chrome](https://www.google.com/chrome/),
[Firefox](https://www.mozilla.org/en-US/firefox/),
[Safari](https://www.apple.com/safari/),
and [Edge](https://www.microsoft.com/edge).
## Installation
Install the `mathjslab` package:
```bash
npm install mathjslab
```
[![](https://badgen.net/bundlephobia/minzip/mathjslab)](https://bundlephobia.com/package/mathjslab)
## Usage
The basic API is an instantiation of `Evaluator` with optional configuration.
Import MathJSLab API:
```typescript
import { Evaluator, TEvaluatorConfig } from 'mathjslab';
```
Initialize evaluator with:
```typescript
let evaluator = Evaluator.initialize(EvaluatorConfiguration);
```
### Examples:
* Parsing
```typescript
let tree = evaluator.Parse('x=sqrt(1+2*3)');
```
* Evaluation
```typescript
let result = evaluator.Evaluate(tree);
```
* MathML generation
```typescript
let mathml = evaluator.UnparseMathML(tree);
```
## Using UNPKG CDN
You can optimize your application, reducing the size of your bundle, loading
MathJSLab via the [UNPKG](https://www.unpkg.com/) [CDN](https://en.wikipedia.org/wiki/Content_delivery_network).
```html
...
...
```
The module will be loaded with `mathjslab` name. You can initialize evaluator with:
```typescript
let evaluator = mathjslab.Evaluator.initialize(EvaluatorConfiguration);
```
## Contributing
To contribute to this project see our
[contributing guidelines](https://github.com/sergiolindau/mathjslab/blob/main/CONTRIBUTING.md).
Join the community chat:
[![Join the chat at https://matrix.to/#/#mathjslab:gitter.im](https://badges.gitter.im/Join%20Chat.svg)](https://matrix.to/#/#mathjslab:gitter.im?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Test and Build
Run the `mathjslab` tests:
```bash
npm run test
```
Build `mathjslab`:
```bash
npm run build
```
## Language subset
Currently only the mathematical expressions of the language are implemented.
The control and loop structures are not yet implemented.
Some differences from the original MATLAB®/Octave language are
* Defining functions is done simply using:
```
function_name(argument, argument, ...) =
```
* There are only one a complex numeric type. Other implemented types is
boolean and character string. Character strings are treated differently than
in MATLAB®/Octave. An entire string can be placed as an element of an
array and operations with strings are not yet supported, nor are they converted
to numbers.
## License
>MIT License
>
>Copyright © 2016-2023 Sergio Lindau, ISBN 978-65-00-82338-7
>
>Permission is hereby granted, free of charge, to any person obtaining a copy
>of this software and associated documentation files (the "Software"), to deal
>in the Software without restriction, including without limitation the rights
>to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
>copies of the Software, and to permit persons to whom the Software is
>furnished to do so, subject to the following conditions:
>
>The above copyright notice and this permission notice shall be included in all
>copies or substantial portions of the Software.
>
>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
>AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
>OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
>SOFTWARE.
近期下载者:
相关文件:
收藏者: