Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
gop / usr / lib / gop / demo / tpl-calc / calc.gop
Size: Mime:
import (
	"gop/tpl"
	"os"
)

cl := tpl`

expr = operand % ("*" | "/") % ("+" | "-") => {
	return tpl.binaryOp(true, self, (op, x, y) => {
		switch op.Tok {
		case '+': return x.(float64) + y.(float64)
		case '-': return x.(float64) - y.(float64)
		case '*': return x.(float64) * y.(float64)
		case '/': return x.(float64) / y.(float64)
		}
		panic("unexpected")
	})
}

operand = basicLit | unaryExpr

unaryExpr = "-" operand => {
	return -(self[1].(float64))
}

basicLit = INT | FLOAT => {
	return self.(*tpl.Token).Lit.float!
}
`!

print "> "
for line in os.Stdin {
	e, err := cl.parseExpr(line, nil)
	if err != nil {
		print err, "\n> "
	} else {
		print e, "\n> "
	}
}