Parse Salesforce Formula and, Build AST in Golang
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example
.gitignore
Makefile
README.md
formula.g4
formula.interp
formula.tokens
formulaLexer.interp
formulaLexer.tokens
formula_base_listener.go
formula_base_visitor.go
formula_builder.go
formula_lexer.go
formula_listener.go
formula_parser.go
formula_visitor.go
node.go
parse.go

README.md

Salesforce Formula Parser

Parse Salesforce Formula and, Build AST in Golang

Usage

$ go get github.com/tzmfreedom/go-salesforce-formula-parser
package main

import (
	"encoding/json"
	"fmt"

	"github.com/tzmfreedom/go-salesforce-formula-parser"
)


func main() {
	ast := parser.ParseString("IF(TRUE, \"foo\", IF(FALSE, \"bar\", \"baz\"))")
	// ast := parser.ParseFile(os.Args[1])
	result, err := json.Marshal(ast)
	// =>
	// {
	//   "Name": "IF",
	//   "Args": [
	//     {
	//       "Value": true
	//     },
	//     {
	//       "Value": "foo"
	//     },
	//     {
	//       "Name": "IF",
	//       "Args": [
	//         {
	//           "Value": false
	//         },
	//         {
	//           "Value": "bar"
	//         },
	//         {
	//           "Value": "baz"
	//         }
	//       ]
	//     }
	//   ]
	// }

	// *golang expression*
	// =>
	//   &parser.FunctionCallNode{
	//     Name: "IF",
	//     Args: []interface {}{
	//       &parser.BooleanNode{
	//         Value: true,
	//       },
	//       &parser.StringNode{
	//         Value: "foo",
	//       },
	//       &parser.FunctionCallNode{
	//         Name: "IF",
	//         Args: []interface {}{
	//           &parser.BooleanNode{
	//             Value: false,
	//           },
	//           &parser.StringNode{
	//             Value: "bar",
	//           },
	//           &parser.StringNode{
	//             Value: "baz",
	//           },
	//         },
	//       },
	//     },
	//   }
}