github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/mapper/exprmapper/expression/expression.go (about)

     1  package expression
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/expression/expr"
     7  	"github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/expression/gocc/lexer"
     8  	"github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/expression/gocc/parser"
     9  	"github.com/TIBCOSoftware/flogo-lib/logger"
    10  )
    11  
    12  var log = logger.GetLogger("expression")
    13  
    14  func ParseExpression(exprString string) (expr.Expr, error) {
    15  	st, err := getParser(exprString)
    16  	if err != nil {
    17  		return nil, err
    18  	}
    19  
    20  	ex, ok := st.(expr.Expr)
    21  	if ok {
    22  		return ex, nil
    23  	}
    24  	return nil, fmt.Errorf("Not a valid expression str")
    25  }
    26  
    27  func getParser(exampleStr string) (interface{}, error) {
    28  	lex := lexer.NewLexer([]byte(exampleStr))
    29  	p := parser.NewParser()
    30  	st, err := p.Parse(lex)
    31  	return st, err
    32  }
    33  
    34  func IsExpression(mapValue string) bool {
    35  	_, err := ParseExpression(mapValue)
    36  	return err == nil
    37  }