- JavaDoc

# JEP

- Introduction
- Basic Usage
- Variables
- Data types
- Operators
- Functions
- BigDecimal
- FAQ
- Migration
- Version History

# Advanced Features

- Manipulating Expressions
- Components
- Configurable Parser
- Serialization
- Grammar

# Component Architecture

With JEP 3.0, a new component architecture was introduced. It allows plugable components, giving tremendous flexibility for customizing JEP. A total of 8 components are employed, as shown below.

- Parser
- Evaluator
- Variable Factory
- Number Factory
- Node Factory
- Variable Table
- Function Table
- Operator Table

For each of the components you can either use a built-in implementation, or you can create your own implementation.

## Built-in components

JEP comes with many components built-in. When creating a `Jep` instance using the default constructor, the `StandardComponents` set is loaded. The standard components include the standard parser and the standard evaluator. In addition to those the ConfigurableParser and the RealEvaluator are also available. The following listing gives an overview of the components available in JEP 3.

Standard components (the default component set)
`com.singularsys.jep.standard.StandardComponents`

- StandardParser (JavaCC generated parser)
- StandardEvaluator
- VariableFactory
- DoubleNumberFactory
- NodeFactory
- StandardVariableTable
- StandardFunctionTable
- StandardOperatorTable

BigDecimal components
`com.singularsys.jep.bigdecimal.BigDecComponents`

- BigDecFunctionTable (initializes a set a functions that can handle BigDecimals)
- BigDecNumberFactory (creates BigDecimal numbers)
- BigDecOperatorTable (initializes BigDecimal operators)

Other components:

- RealEvaluator (allows fast evaluation of `double` arithmetic and functions)
- PostfixEvaluator (traverses trees without using recursion)
- ConfigurableParser (for customizable syntax)