Skip to content

Commit

Permalink
Merge pull request #38 from edigaryev/expose-base-pieces
Browse files Browse the repository at this point in the history
Make ident and parentheses parsers available separately from Base()
  • Loading branch information
generikvault authored Sep 8, 2020
2 parents ed67cf8 + 109d9b4 commit 3022fab
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions gval.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,16 @@ func JSON() Language {
return ljson
}

// Parentheses contains support for parentheses.
func Parentheses() Language {
return parentheses
}

// Ident contains support for variables and functions.
func Ident() Language {
return ident
}

// Base contains equal (==) and not equal (!=), perentheses and general support for variables, constants and functions
// It contains true, false, (floating point) number, string ("" or ``) and char ('') constants
func Base() Language {
Expand Down Expand Up @@ -205,6 +215,14 @@ var propositionalLogic = NewLanguage(
base,
)

var parentheses = NewLanguage(
PrefixExtension('(', parseParentheses),
)

var ident = NewLanguage(
PrefixMetaPrefix(scanner.Ident, parseIdent),
)

var base = NewLanguage(
PrefixExtension(scanner.Int, parseNumber),
PrefixExtension(scanner.Float, parseNumber),
Expand All @@ -225,7 +243,7 @@ var base = NewLanguage(

InfixOperator("==", func(a, b interface{}) (interface{}, error) { return reflect.DeepEqual(a, b), nil }),
InfixOperator("!=", func(a, b interface{}) (interface{}, error) { return !reflect.DeepEqual(a, b), nil }),
PrefixExtension('(', parseParentheses),
parentheses,

Precedence("??", 0),

Expand Down Expand Up @@ -258,5 +276,5 @@ var base = NewLanguage(

Precedence("**", 200),

PrefixMetaPrefix(scanner.Ident, parseIdent),
ident,
)

0 comments on commit 3022fab

Please sign in to comment.