.github
accounts
build
cmd
abigen
bootnode
evm
internal
compiler
compiler.go
compiler.go
disasm.go
main.go
runner.go
faucet
geth
internal
puppeth
rlpdump
swarm
utils
wnode
common
compression
consensus
console
containers
contracts
core
crypto
eth
ethclient
ethdb
ethstats
event
internal
les
light
log
metrics
miner
mobile
node
p2p
params
rlp
rpc
swarm
tests
trie
vendor
whisper
.dockerignore
.gitattributes
.gitignore
.mailmap
.travis.yml
AUTHORS
COPYING
COPYING.LESSER
Dockerfile
Makefile
README.md
VERSION
appveyor.yml
circle.yml
interfaces.go
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
![]() |
// Copyright 2017 The go-ethereum Authors
|
||
|
// This file is part of go-ethereum.
|
||
|
//
|
||
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||
|
// it under the terms of the GNU General Public License as published by
|
||
|
// the Free Software Foundation, either version 3 of the License, or
|
||
|
// (at your option) any later version.
|
||
|
//
|
||
|
// go-ethereum is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
// GNU General Public License for more details.
|
||
|
//
|
||
|
// You should have received a copy of the GNU General Public License
|
||
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
||
|
package compiler
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/ethereum/go-ethereum/core/asm"
|
||
|
)
|
||
|
|
||
|
func Compile(fn string, src []byte, debug bool) (string, error) {
|
||
|
compiler := asm.NewCompiler(debug)
|
||
|
compiler.Feed(asm.Lex(fn, src, debug))
|
||
|
|
||
|
bin, compileErrors := compiler.Compile()
|
||
|
if len(compileErrors) > 0 {
|
||
|
// report errors
|
||
|
for _, err := range compileErrors {
|
||
|
fmt.Printf("%s:%v\n", fn, err)
|
||
|
}
|
||
|
return "", errors.New("compiling failed")
|
||
|
}
|
||
|
return bin, nil
|
||
|
}
|