34 lines
688 B
Go
34 lines
688 B
Go
package interpreter
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
type Expression interface {
|
|
interpret(string) bool
|
|
}
|
|
|
|
type MainInterpreter struct {
|
|
state string
|
|
}
|
|
func (i *MainInterpreter) interpret(context string) bool{
|
|
if strings.Contains(i.state, context) {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type OrExpressionInterpreter struct {
|
|
expOne, expTwo Expression
|
|
}
|
|
func (o *OrExpressionInterpreter) interpret(context string) bool {
|
|
return o.expOne.interpret(context) || o.expTwo.interpret(context)
|
|
}
|
|
|
|
type AndExpressionInterpreter struct {
|
|
expOne, expTwo Expression
|
|
}
|
|
func (o *AndExpressionInterpreter) interpret(context string) bool {
|
|
return o.expOne.interpret(context) && o.expTwo.interpret(context)
|
|
}
|