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.

近期下载者

相关文件


收藏者