-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
81 lines (54 loc) · 2.24 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from antlr4 import *
from VyperToSolidityTranspiler import VyperToSolidityTranspiler
from dist.SolidityParser import SolidityParser
from dist.SolidityLexer import SolidityLexer
from dist.YulLexer import YulLexer
from dist.YulParser import YulParser
from dist.VyperLexer import VyperLexer
from dist.VyperParser import VyperParser
from transpilers.yul_to_solidity_visitor import YulToSolidityVisitor
from YulToVyperTranspiler import YulToVyperTranspiler
# Define the input code to be parsed
solidity_script = open("examples/solidity_1.sol", "r").read()
yul_script = open("examples/yul/yul_for.yul", "r").read()
vyper_script = open("examples/vyper/blind_auction.vy", "r").read()
def parse_solidity(code):
input_stream = InputStream(code)
lexer = SolidityLexer(input_stream)
token_stream = CommonTokenStream(lexer)
parser = SolidityParser(token_stream)
parse_tree = parser.sourceUnit()
print(parse_tree.toStringTree(recog=parser))
def parse_yul_to_solidity(code):
input_stream = InputStream(code)
lexer = YulLexer(input_stream)
token_stream = CommonTokenStream(lexer)
parser = YulParser(token_stream)
parse_tree = parser.sourceUnit()
visitor = YulToSolidityVisitor()
visitor.visitSourceUnit(parse_tree)
with open("./transpiledCode/YulToSolidity.sol", "w") as f:
f.write(visitor.get_solidity_code())
def parse_yul_to_vyper(code):
input_stream = InputStream(code)
lexer = YulLexer(input_stream)
token_stream = CommonTokenStream(lexer)
parser = YulParser(token_stream)
parse_tree = parser.sourceUnit()
visitor = YulToVyperTranspiler()
visitor.visitSourceUnit(parse_tree)
with open("./transpiledCode/YulToVyper.vy", "w") as f:
f.write(visitor.get_vyper_code())
def parse_vyper(code):
input_stream = InputStream(code)
lexer = VyperLexer(input_stream)
token_stream = CommonTokenStream(lexer)
parser = VyperParser(token_stream)
parse_tree = parser.module()
print(parse_tree.toStringTree(recog=parser))
with open("./transpiledCode/VyperToSolidity.sol", "a+") as f:
visitor = VyperToSolidityTranspiler(f)
visitor.visitModule(parse_tree)
# parse_yul_to_vyper(yul_script)
parse_yul_to_solidity(yul_script)
# parse_vyper(vyper_script)