59 lines
1.9 KiB
Markdown
59 lines
1.9 KiB
Markdown
# EFP (Excel Formula Parser)
|
|
|
|
[](https://github.com/xuri/efp/actions?workflow=Go)
|
|
[](https://codecov.io/gh/xuri/efp)
|
|
[](https://goreportcard.com/report/github.com/xuri/efp)
|
|
[](https://pkg.go.dev/github.com/xuri/efp)
|
|
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fxuri%2Fefp?ref=badge_shield)
|
|
|
|
Using EFP (Excel Formula Parser) you can get an Abstract Syntax Tree (AST) from Excel formula.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
go get github.com/xuri/efp
|
|
```
|
|
|
|
## Example
|
|
|
|
```go
|
|
package main
|
|
|
|
import "github.com/xuri/efp"
|
|
|
|
func main() {
|
|
ps := efp.ExcelParser()
|
|
ps.Parse("=SUM(A3+B9*2)/2")
|
|
println(ps.PrettyPrint())
|
|
}
|
|
```
|
|
|
|
Get AST
|
|
|
|
```text
|
|
SUM <Function> <Start>
|
|
A3 <Operand> <Range>
|
|
+ <OperatorInfix> <Math>
|
|
B9 <Operand> <Range>
|
|
* <OperatorInfix> <Math>
|
|
2 <Operand> <Number>
|
|
<Function> <Stop>
|
|
/ <OperatorInfix> <Math>
|
|
2 <Operand> <Number>
|
|
```
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Open a pull request to fix a bug, or open an issue to discuss a new feature or change.
|
|
|
|
## Credits
|
|
|
|
EFP (Excel Formula Parser) is a Go language port of E. W. Bachtal's Excel formula parser.
|
|
|
|
## Licenses
|
|
|
|
This program is under the terms of the BSD 3-Clause License. See [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause).
|
|
|
|
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fxuri%2Fefp?ref=badge_large)
|