From 500caaeda74dd9c660279036293f4b2997cf0b03 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 9 Sep 2017 09:42:37 +0200 Subject: Add vendor --- vendor/github.com/llgcode/ps/operators_conflict.go | 96 ++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 vendor/github.com/llgcode/ps/operators_conflict.go (limited to 'vendor/github.com/llgcode/ps/operators_conflict.go') diff --git a/vendor/github.com/llgcode/ps/operators_conflict.go b/vendor/github.com/llgcode/ps/operators_conflict.go new file mode 100644 index 0000000..9716202 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_conflict.go @@ -0,0 +1,96 @@ +package ps + +import ( + "fmt" + "log" +) + +// dictionary copy conflict with stack copy +// type dicriminant +func commonCopy(interpreter *Interpreter) { + switch v := interpreter.Peek().(type) { + case float64: + copystack(interpreter) + case Dictionary: + copydict(interpreter) + default: + panic(fmt.Sprintf("Not yet implemented: %v copy", v)) + } +} +func commonforall(interpreter *Interpreter) { + switch v := interpreter.Get(1).(type) { + case Dictionary: + foralldict(interpreter) + case []Value: + forallarray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v proc forall", v)) + } +} + +func length(interpreter *Interpreter) { + switch v := interpreter.Peek().(type) { + case Dictionary: + lengthdict(interpreter) + case []Value: + lengtharray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v length", v)) + } +} +func get(interpreter *Interpreter) { + switch v := interpreter.Get(1).(type) { + case Dictionary: + getdict(interpreter) + case []Value: + getarray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v index get", v)) + } +} +func put(interpreter *Interpreter) { + switch v := interpreter.Get(2).(type) { + case Dictionary: + putdict(interpreter) + case []Value: + putarray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v index any put", v)) + } +} + +func readonly(interpreter *Interpreter) { + log.Println("readonly, not yet implemented") +} + +func cvlit(interpreter *Interpreter) { + log.Println("cvlit, not yet implemented") +} + +func xcheck(interpreter *Interpreter) { + value := interpreter.Pop() + if _, ok := value.(*ProcedureDefinition); ok { + interpreter.Push(true) + } else { + interpreter.Push(false) + } +} + +func initConflictingOperators(interpreter *Interpreter) { + interpreter.SystemDefine("copy", NewOperator(commonCopy)) + interpreter.SystemDefine("forall", NewOperator(commonforall)) + interpreter.SystemDefine("length", NewOperator(length)) + interpreter.SystemDefine("get", NewOperator(get)) + interpreter.SystemDefine("put", NewOperator(put)) + interpreter.SystemDefine("readonly", NewOperator(readonly)) + interpreter.SystemDefine("cvlit", NewOperator(cvlit)) + interpreter.SystemDefine("xcheck", NewOperator(xcheck)) +} -- cgit v1.2.3