diff options
author | obscuren <geffobscura@gmail.com> | 2014-04-23 17:51:04 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-04-23 17:51:04 +0800 |
commit | 3a9a252f6e44abb0f45f57a46c0fa91e2f73c545 (patch) | |
tree | 677575939c8f22c30a9601c205450a0d5b98c3ab /ethutil/parsing.go | |
parent | 61cd1594b52514244efcb47bd93722aaec0fe456 (diff) | |
download | go-tangerine-3a9a252f6e44abb0f45f57a46c0fa91e2f73c545.tar go-tangerine-3a9a252f6e44abb0f45f57a46c0fa91e2f73c545.tar.gz go-tangerine-3a9a252f6e44abb0f45f57a46c0fa91e2f73c545.tar.bz2 go-tangerine-3a9a252f6e44abb0f45f57a46c0fa91e2f73c545.tar.lz go-tangerine-3a9a252f6e44abb0f45f57a46c0fa91e2f73c545.tar.xz go-tangerine-3a9a252f6e44abb0f45f57a46c0fa91e2f73c545.tar.zst go-tangerine-3a9a252f6e44abb0f45f57a46c0fa91e2f73c545.zip |
Fixed minor issue with gas and added state object init
Diffstat (limited to 'ethutil/parsing.go')
-rw-r--r-- | ethutil/parsing.go | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/ethutil/parsing.go b/ethutil/parsing.go index 328704cae..9775cf328 100644 --- a/ethutil/parsing.go +++ b/ethutil/parsing.go @@ -3,7 +3,7 @@ package ethutil import ( _ "fmt" "math/big" - "regexp" + _ "regexp" ) // Op codes @@ -143,7 +143,6 @@ init() { main() { // main something } -*/ func PreProcess(data string) (mainInput, initInput string) { reg := "\\(\\)\\s*{([\\d\\w\\W\\n\\s]+?)}" mainReg := regexp.MustCompile("main" + reg) @@ -163,3 +162,49 @@ func PreProcess(data string) (mainInput, initInput string) { return } +*/ + +// Very, very dumb parser. Heed no attention :-) +func FindFor(blockMatcher, input string) string { + curCount := -1 + length := len(blockMatcher) + matchfst := rune(blockMatcher[0]) + var currStr string + + for i, run := range input { + // Find init + if curCount == -1 && run == matchfst && input[i:i+length] == blockMatcher { + curCount = 0 + } else if curCount > -1 { + if run == '{' { + curCount++ + if curCount == 1 { + continue + } + } else if run == '}' { + curCount-- + if curCount == 0 { + // we are done + curCount = -1 + break + } + } + + if curCount > 0 { + currStr += string(run) + } + } + } + + return currStr +} + +func PreProcess(data string) (mainInput, initInput string) { + mainInput = FindFor("main", data) + if mainInput == "" { + mainInput = data + } + initInput = FindFor("init", data) + + return +} |