Added the tilde '~' operator acting as NOT
This commit is contained in:
parent
998580772a
commit
9fa3d9fcb2
@ -38,6 +38,7 @@ func DefaultTranslations() map[Symbol]Symbol {
|
||||
SymKwAnd: SymAnd,
|
||||
SymDoubleVertBar: SymOr,
|
||||
SymKwOr: SymOr,
|
||||
SymTilde: SymNot,
|
||||
SymKwNot: SymNot,
|
||||
SymLessGreater: SymNotEqual,
|
||||
}
|
||||
@ -220,6 +221,8 @@ func (self *scanner) fetchNextToken() (tk *Token) {
|
||||
tk = self.makeToken(SymOpenBrace, ch)
|
||||
case '}':
|
||||
tk = self.makeToken(SymClosedBrace, ch)
|
||||
case '~':
|
||||
tk = self.makeToken(SymTilde, ch)
|
||||
case 0:
|
||||
if escape {
|
||||
tk = self.makeErrorToken(errors.New("incomplete escape sequence"))
|
||||
@ -334,7 +337,7 @@ func (self *scanner) fetchIdentifier(firstCh byte) (tk *Token) {
|
||||
tk = self.makeValueToken(SymBool, txt, false)
|
||||
} else if ch, _ := self.peek(); ch == '(' {
|
||||
self.readChar()
|
||||
tk = self.makeValueToken(SymFunction, txt+"(", uptxt)
|
||||
tk = self.makeValueToken(SymFunction, txt+"(", txt)
|
||||
} else {
|
||||
tk = self.makeValueToken(SymIdentifier, txt, txt)
|
||||
}
|
||||
|
49
symbol.go
49
symbol.go
@ -30,30 +30,31 @@ const (
|
||||
SymDotSlash // 19: './'
|
||||
SymQuote // 20: '\''
|
||||
SymDoubleQuote // 21: '"'
|
||||
SymBackTick // 0: '`'
|
||||
SymExclamation // 0: '!'
|
||||
SymQuestion // 0: '?'
|
||||
SymAmpersand // 0: '&&'
|
||||
SymDoubleAmpersand // 0: '&&'
|
||||
SymPercent // 0: '%'
|
||||
SymAt // 0: '@'
|
||||
SymUndescore // 0: '_'
|
||||
SymEqual // 0: '='
|
||||
SymDoubleEqual // 0: '=='
|
||||
SymLess // 0: '<'
|
||||
SymLessOrEqual // 0: '<='
|
||||
SymGreater // 0: '>'
|
||||
SymGreaterOrEqual // 0: '>='
|
||||
SymLessGreater // 0: '<>'
|
||||
SymNotEqual // 0: '!='
|
||||
SymDollar // 0: '$'
|
||||
SymHash // 0: '#'
|
||||
SymOpenRound // 0: '('
|
||||
SymClosedRound // 0: ')'
|
||||
SymOpenSquare // 0: '['
|
||||
SymClosedSquare // 0: ']'
|
||||
SymOpenBrace // 0: '{'
|
||||
SymClosedBrace // 0: '}'
|
||||
SymBackTick // 22: '`'
|
||||
SymExclamation // 23: '!'
|
||||
SymQuestion // 24: '?'
|
||||
SymAmpersand // 25: '&&'
|
||||
SymDoubleAmpersand // 26: '&&'
|
||||
SymPercent // 27: '%'
|
||||
SymAt // 28: '@'
|
||||
SymUndescore // 29: '_'
|
||||
SymEqual // 30: '='
|
||||
SymDoubleEqual // 31: '=='
|
||||
SymLess // 32: '<'
|
||||
SymLessOrEqual // 33: '<='
|
||||
SymGreater // 34: '>'
|
||||
SymGreaterOrEqual // 35: '>='
|
||||
SymLessGreater // 36: '<>'
|
||||
SymNotEqual // 37: '!='
|
||||
SymDollar // 38: '$'
|
||||
SymHash // 39: '#'
|
||||
SymOpenRound // 40: '('
|
||||
SymClosedRound // 41: ')'
|
||||
SymOpenSquare // 42: '['
|
||||
SymClosedSquare // 43: ']'
|
||||
SymOpenBrace // 44: '{'
|
||||
SymClosedBrace // 45: '}'
|
||||
SymTilde // 46: '~'
|
||||
SymChangeSign
|
||||
SymUnchangeSign
|
||||
SymIdentifier
|
||||
|
2
term.go
2
term.go
@ -177,7 +177,7 @@ func (self *term) source() string {
|
||||
|
||||
func (self *term) compute(ctx exprContext) (v any, err error) {
|
||||
if self.evalFunc == nil {
|
||||
err = fmt.Errorf("undfined eval-func for %v term type", self.kind)
|
||||
err = fmt.Errorf("undefined eval-func for %v term type", self.kind)
|
||||
} else {
|
||||
v, err = self.evalFunc(ctx, self)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user