diff --git a/ethereumj-core/src/main/java/org/ethereum/gui/SerpentEditor.java b/ethereumj-core/src/main/java/org/ethereum/gui/SerpentEditor.java index f168c0b0..bf5fbbfb 100644 --- a/ethereumj-core/src/main/java/org/ethereum/gui/SerpentEditor.java +++ b/ethereumj-core/src/main/java/org/ethereum/gui/SerpentEditor.java @@ -1,6 +1,5 @@ package org.ethereum.gui; -import org.ethereum.serpent.SerpentCompiler; import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import org.fife.ui.rsyntaxtextarea.TokenMakerFactory; @@ -83,7 +82,9 @@ public class SerpentEditor extends JFrame { String asmResult = ""; try { - asmResult = SerpentCompiler.compile(codeArea.getText()); + + // todo: integrate new compiler when avail + //asmResult = SerpentCompiler.compile(codeArea.getText()); } catch (Throwable th) {th.printStackTrace();} splitPanel.setDividerLocation(0.7); diff --git a/ethereumj-core/src/main/java/org/ethereum/serpent/GenParser.java b/ethereumj-core/src/main/java/org/ethereum/serpent/GenParser.java deleted file mode 100644 index 2900e531..00000000 --- a/ethereumj-core/src/main/java/org/ethereum/serpent/GenParser.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.ethereum.serpent; - -/** - * www.ethereumJ.com - * User: Roman Mandeleil - * Created on: 25/04/14 17:06 - */ -public class GenParser { - - - - public static void main(String args[]){ - - String userDir = System.getProperty("user.dir"); - org.antlr.Tool.main(new String[]{userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g"}); -// org.antlr.Tool.main(new String[]{userDir + "\\src\\main\\java\\samples\\antlr\\PyEsque.g"}); - - } -} diff --git a/ethereumj-core/src/main/java/org/ethereum/serpent/Serpent.g b/ethereumj-core/src/main/java/org/ethereum/serpent/Serpent.g deleted file mode 100644 index 18a9943f..00000000 --- a/ethereumj-core/src/main/java/org/ethereum/serpent/Serpent.g +++ /dev/null @@ -1,248 +0,0 @@ -/******************************************************************************* - * Ethereum high level language grammar definition - *******************************************************************************/ -grammar Serpent; - -options { - //language = Java; - //output = AST; - output = template; -} - -@header { - - /* (!!!) Do not update this file manually , - * It was auto generated from the Serpent.g - * grammar file. - */ - package org.ethereum.serpent; - import org.ethereum.util.Utils; -} - -@lexer::header { - - /* (!!!) Do not update this file manually , - * It was auto generated from the Serpent.g - * grammar file. - */ - package org.ethereum.serpent; -} - - -@members { - private java.util.ArrayList globals = new java.util.ArrayList(); - private int labelIndex = 0; -} - - - -program - : gen_body - { - String conVars = ""; - - if (globals.size() > 0){ - - conVars = "0 " + (globals.size() * 32 - 1) + " MSTORE8"; - } - } - -> concat(left={conVars}, right={$gen_body.st}) - ; - -test_1 - : - ( - set_var -> concat(left={$test_1.st}, right={$set_var.st}) - | get_var -> concat(left={$test_1.st}, right={$get_var.st}) )* - ; - -/* -test_2 - : - ( - set_var -> concat(left={$test_2.st}, right={$set_var.st}) - )* - - ( - if_stmt -> concat(left={$test_2.st}, right={$if_stmt.st}) - | if_else_stmt -> concat(left={$test_2.st}, right={$if_else_stmt.st}) - ) - ; -*/ - - - -gen_body - : - ( - set_var -> concat(left={$gen_body.st}, right={$set_var.st}) - | storage_save -> concat(left={$gen_body.st}, right={$storage_save.st}) - | return_stmt -> concat(left={$gen_body.st}, right={$return_stmt.st}) - )* ( if_else_stmt -> concat(left={$gen_body.st}, right={$if_else_stmt.st}))? - - ; - - - - -// [if a==10:\n b=20 \n] -// [10, 0, 'MLOAD', 'EQ', 'NOT', 'REF_0', 'JUMPI', 20, 32, 'MSTORE', 'LABEL_0'] -if_stmt - : - 'if' unr_expr ':' gen_body -// (!!!)RECURSION ON if_stmt ( 'elif' cond_expr ':' elif_body=set_var )* - -> ifStmt(cond={$unr_expr.st}, body={$gen_body.st}, index={labelIndex++}) - ; - - -// [if a==10:\n b=20 \nelse: \n b=30] -// [10, 0, 'MLOAD', 'EQ', 'NOT', 'REF_1', 'JUMPI', 20, 32, 'MSTORE', 'REF_0', 'JUMP', 'LABEL_1', 30, 32, 'MSTORE', 'LABEL_0'] -// a 10 EQ NOT REF_01 JUMPI 30 0 MSTORE REF_0 JUMP LABEL_01 20 0 MSTORE LABEL_0 - -if_else_stmt - : - 'if' unr_expr ':' if_body=gen_body -// (!!!)RECURSION ON if_stmt ( 'elif' unr_expr ':' elif_body=set_var )* - 'else' ':' else_body=gen_body -> ifElseStmt(cond={$unr_expr.st}, if_body={$if_body.st}, - else_body={$else_body.st}, if_index={labelIndex++}, else_index={labelIndex++}) ; - - - - -// [multi_set_var] (a=set_var->compile(left={$program.st}, right={$a.st}))* -set_var - : - {int varIndex = -1;} - (a=var { // TODO: change it from atom to something else - - // check if that variable already defined - // if it didn't add it to list - // if it did use the index * 32 for memory address - varIndex = globals.indexOf($a.st.toString()); - if (varIndex == -1 ) {globals.add($a.st.toString()); varIndex = globals.size() - 1; } - } - - '=' b=bin_expr) -> set_var(param_a={$b.st}, param_b={32 * varIndex}) - ; - - get_var - : - {int varIndex = -1;} - (a=var { - - // If there is no such var throw exception - varIndex = globals.indexOf($a.st.toString()); - if (varIndex == -1 ) { - Error err = new Error("var undefined: " + $a.st.toString()); - throw err; - } - ;} - - -> get_var(varIndex={32 * varIndex}) - ) - ; - - -unr_expr - : - {boolean negative = false;} - ('!' {negative = !negative;} )* a=cond_expr -> not(param={negative? $a.st : $a.st + " NOT"}) - - ; - - -cond_expr - : a=bin_expr - ( - '==' b=bin_expr -> equals(left={$a.st},right={$b.st}) | - '<' b=bin_expr -> lessThan(left={$a.st},right={$b.st}) | - '<=' b=bin_expr -> lessEqThan(left={$a.st},right={$b.st}) | - '>=' b=bin_expr -> greatEqThan(left={$a.st},right={$b.st}) | - '>' b=bin_expr -> greatThan(left={$a.st},right={$b.st}) - - | -> {$a.st} - ) - ; - -storage_save - : 'contract.storage['index=bin_expr']' '=' assignment=bin_expr -> ssave(index={$index.st}, data={$assignment.st}) - ; - -bin_expr - : (a=atom -> {$a.st}) - (( '+' b=atom -> add(left={$bin_expr.st}, right={$b.st}) | - '-' b=atom -> sub(left={$bin_expr.st}, right={$b.st}) | - '*' b=atom -> mul(left={$bin_expr.st}, right={$b.st}) | - '/' b=atom -> div(left={$bin_expr.st}, right={$b.st}) | - '^' b=atom -> exp(left={$bin_expr.st}, right={$b.st}) | - '%' b=atom -> mod(left={$bin_expr.st}, right={$b.st}) | - '#/' b=atom -> sdiv(left={$bin_expr.st}, right={$b.st}) | - '#%' b=atom -> smod(left={$bin_expr.st}, right={$b.st}) - )*) - ; - - // "if !a==10:\n b=20 \nelse: \n b=30" - -atom - : - storage_load -> iconst(value={$storage_load.st}) - | msg_sender -> iconst(value={$msg_sender.st}) - | msg_datasize -> iconst(value={$msg_datasize.st}) - | msg_load -> iconst(value={$msg_load.st}) - | get_var -> iconst(value={$get_var.st}) - | INTEGER -> iconst(value={$INTEGER.text}) - | hex_num -> iconst(value={$hex_num.st}) - - ; - -hex_num - : - HEX_NUMBER - { - String dec_num = Utils.hexStringToDecimalString($HEX_NUMBER.text); - } - -> iconst(value={dec_num}) - ; - -var - : IDENT -> refVar(id={$IDENT.text} ) - ; - -storage_load - : 'contract.storage['bin_expr']' -> sload(index={$bin_expr.st}) - ; - -msg_load - : 'msg.data['bin_expr']' -> calldataload(index={$bin_expr.st}) - ; - -msg_sender - : 'msg.sender' -> msdSender() - ; - -msg_datasize - : 'msg.datasize' -> msgDatasize() - ; - -return_stmt - : 'return('bin_expr')' -> returnStmt(index={$bin_expr.st}) - ; - - -fragment LETTER : ('a'..'z' | 'A'..'Z') ; -fragment DIGIT : '0'..'9'; -INTEGER : DIGIT+ ; -IDENT : LETTER (LETTER | DIGIT)*; - -fragment HEX_DIGIT : ('0'..'9' | 'a'..'f' | 'A'..'F'); -HEX_NUMBER : ('0x' | '0X' )HEX_DIGIT+; - -WS : (' ' | '\t' | '\n' | '\r' | '\f')+ {$channel = HIDDEN;}; -COMMENT : '//' .* ('\n'|'\r') {$channel = HIDDEN;}; - - - - - - - diff --git a/ethereumj-core/src/main/java/org/ethereum/serpent/Serpent2Asm.stg b/ethereumj-core/src/main/java/org/ethereum/serpent/Serpent2Asm.stg deleted file mode 100644 index da01f973..00000000 --- a/ethereumj-core/src/main/java/org/ethereum/serpent/Serpent2Asm.stg +++ /dev/null @@ -1,116 +0,0 @@ -group Serpent2Asm; -/** https://github.com/rollxx/antlr-php-runtime/blob/master/examples/cminus/Bytecode.stg */ - - -// [10, 0, 'MLOAD', 'EQ', 'NOT', 'REF_0', 'JUMPI', 20, 32, 'MSTORE', 'LABEL_0'] -ifStmt(cond, body, index) ::=<< - NOT REF_ JUMPI LABEL_ ->> - -// [10, 0, MLOAD, EQ, NOT, REF_1, JUMPI, 20, 32, MSTORE, REF_0, JUMP, LABEL_1, 30, 32, MSTORE, LABEL_0] -ifElseStmt(cond, if_body, else_body, if_index, else_index) ::=<< - NOT REF_ JUMPI REF_ JUMP LABEL_ LABEL_ ->> - - -set_var(param_a, param_b) ::= << - MSTORE ->> - -get_var(varIndex) ::= << - MLOAD ->> - - -compile(left, right) ::= << - ->> - -add(left,right) ::= << - ADD ->> - -sub(left,right) ::= << - SUB ->> - -mul(left,right) ::= << - MUL ->> - -div(left,right) ::= << - DIV ->> - -exp(left,right) ::= << - EXP ->> - -mod(left,right) ::= << - MOD ->> - -sdiv(left,right) ::= << - SDIV ->> - -smod(left,right) ::= << - SMOD ->> - -equals(left,right) ::= << - EQ ->> - -lessThan(left,right) ::= << - LT ->> - -lessEqThan(left,right) ::= << - GT NOT ->> - -greatThan(left,right) ::= << - GT ->> - -greatEqThan(left,right) ::= << - LT NOT ->> - -not(param) ::= << - NOT ->> - -sload(index) ::= << - SLOAD ->> - -ssave(index, data) ::= << - SSTORE ->> - -calldataload(index) ::=<< - 32 MUL CALLDATALOAD ->> - -msdSender() ::=<< -CALLER ->> - -msgDatasize() ::=<< -32 CALLDATASIZE DIV ->> - -returnStmt(index) ::= << - MSIZE SWAP MSIZE MSTORE 32 SWAP RETURN ->> - - -concat(left, right) ::= << - ->> - - -refVar(id) ::= "" -iconst(value) ::= "" diff --git a/ethereumj-core/src/main/java/org/ethereum/serpent/SerpentCompiler.java b/ethereumj-core/src/main/java/org/ethereum/serpent/SerpentCompiler.java deleted file mode 100644 index 1a60cc4e..00000000 --- a/ethereumj-core/src/main/java/org/ethereum/serpent/SerpentCompiler.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.ethereum.serpent; - -import org.antlr.runtime.ANTLRStringStream; -import org.antlr.runtime.CharStream; -import org.antlr.runtime.CommonTokenStream; -import org.antlr.runtime.RecognitionException; -import org.antlr.stringtemplate.StringTemplateGroup; -import org.antlr.stringtemplate.language.AngleBracketTemplateLexer; - -import java.io.FileNotFoundException; -import java.io.FileReader; - -/** - * www.ethereumJ.com - * User: Roman Mandeleil - * Created on: 29/04/14 12:34 - */ -public class SerpentCompiler { - - public static String compile(String code) throws FileNotFoundException, - RecognitionException { - - CharStream stream = new ANTLRStringStream(code); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir - + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader( - templateFileName), AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.program_return retVal = parser.program(); - - return retVal.getTemplate().toString().trim(); - } -} diff --git a/ethereumj-core/src/main/java/org/ethereum/serpent/SerpentLexer.java b/ethereumj-core/src/main/java/org/ethereum/serpent/SerpentLexer.java deleted file mode 100644 index 3aca9bc7..00000000 --- a/ethereumj-core/src/main/java/org/ethereum/serpent/SerpentLexer.java +++ /dev/null @@ -1,1312 +0,0 @@ -// $ANTLR 3.5.2 E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g 2014-05-02 09:10:52 - - - /* (!!!) Do not update this file manually , - * It was auto generated from the Serpent.g - * grammar file. - */ - package org.ethereum.serpent; - - -import org.antlr.runtime.*; -import java.util.Stack; -import java.util.List; -import java.util.ArrayList; - -@SuppressWarnings("all") -public class SerpentLexer extends Lexer { - public static final int EOF=-1; - public static final int T__12=12; - public static final int T__13=13; - public static final int T__14=14; - public static final int T__15=15; - public static final int T__16=16; - public static final int T__17=17; - public static final int T__18=18; - public static final int T__19=19; - public static final int T__20=20; - public static final int T__21=21; - public static final int T__22=22; - public static final int T__23=23; - public static final int T__24=24; - public static final int T__25=25; - public static final int T__26=26; - public static final int T__27=27; - public static final int T__28=28; - public static final int T__29=29; - public static final int T__30=30; - public static final int T__31=31; - public static final int T__32=32; - public static final int T__33=33; - public static final int T__34=34; - public static final int T__35=35; - public static final int T__36=36; - public static final int COMMENT=4; - public static final int DIGIT=5; - public static final int HEX_DIGIT=6; - public static final int HEX_NUMBER=7; - public static final int IDENT=8; - public static final int INTEGER=9; - public static final int LETTER=10; - public static final int WS=11; - - // delegates - // delegators - public Lexer[] getDelegates() { - return new Lexer[] {}; - } - - public SerpentLexer() {} - public SerpentLexer(CharStream input) { - this(input, new RecognizerSharedState()); - } - public SerpentLexer(CharStream input, RecognizerSharedState state) { - super(input,state); - } - @Override public String getGrammarFileName() { return "E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g"; } - - // $ANTLR start "T__12" - public final void mT__12() throws RecognitionException { - try { - int _type = T__12; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:11:7: ( '!' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:11:9: '!' - { - match('!'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__12" - - // $ANTLR start "T__13" - public final void mT__13() throws RecognitionException { - try { - int _type = T__13; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:12:7: ( '#%' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:12:9: '#%' - { - match("#%"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__13" - - // $ANTLR start "T__14" - public final void mT__14() throws RecognitionException { - try { - int _type = T__14; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:13:7: ( '#/' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:13:9: '#/' - { - match("#/"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__14" - - // $ANTLR start "T__15" - public final void mT__15() throws RecognitionException { - try { - int _type = T__15; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:14:7: ( '%' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:14:9: '%' - { - match('%'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__15" - - // $ANTLR start "T__16" - public final void mT__16() throws RecognitionException { - try { - int _type = T__16; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:15:7: ( ')' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:15:9: ')' - { - match(')'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__16" - - // $ANTLR start "T__17" - public final void mT__17() throws RecognitionException { - try { - int _type = T__17; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:16:7: ( '*' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:16:9: '*' - { - match('*'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__17" - - // $ANTLR start "T__18" - public final void mT__18() throws RecognitionException { - try { - int _type = T__18; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:17:7: ( '+' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:17:9: '+' - { - match('+'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__18" - - // $ANTLR start "T__19" - public final void mT__19() throws RecognitionException { - try { - int _type = T__19; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:18:7: ( '-' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:18:9: '-' - { - match('-'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__19" - - // $ANTLR start "T__20" - public final void mT__20() throws RecognitionException { - try { - int _type = T__20; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:19:7: ( '/' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:19:9: '/' - { - match('/'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__20" - - // $ANTLR start "T__21" - public final void mT__21() throws RecognitionException { - try { - int _type = T__21; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:20:7: ( ':' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:20:9: ':' - { - match(':'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__21" - - // $ANTLR start "T__22" - public final void mT__22() throws RecognitionException { - try { - int _type = T__22; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:21:7: ( '<' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:21:9: '<' - { - match('<'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__22" - - // $ANTLR start "T__23" - public final void mT__23() throws RecognitionException { - try { - int _type = T__23; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:22:7: ( '<=' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:22:9: '<=' - { - match("<="); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__23" - - // $ANTLR start "T__24" - public final void mT__24() throws RecognitionException { - try { - int _type = T__24; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:23:7: ( '=' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:23:9: '=' - { - match('='); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__24" - - // $ANTLR start "T__25" - public final void mT__25() throws RecognitionException { - try { - int _type = T__25; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:24:7: ( '==' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:24:9: '==' - { - match("=="); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__25" - - // $ANTLR start "T__26" - public final void mT__26() throws RecognitionException { - try { - int _type = T__26; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:25:7: ( '>' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:25:9: '>' - { - match('>'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__26" - - // $ANTLR start "T__27" - public final void mT__27() throws RecognitionException { - try { - int _type = T__27; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:26:7: ( '>=' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:26:9: '>=' - { - match(">="); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__27" - - // $ANTLR start "T__28" - public final void mT__28() throws RecognitionException { - try { - int _type = T__28; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:27:7: ( ']' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:27:9: ']' - { - match(']'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__28" - - // $ANTLR start "T__29" - public final void mT__29() throws RecognitionException { - try { - int _type = T__29; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:28:7: ( '^' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:28:9: '^' - { - match('^'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__29" - - // $ANTLR start "T__30" - public final void mT__30() throws RecognitionException { - try { - int _type = T__30; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:29:7: ( 'contract.storage[' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:29:9: 'contract.storage[' - { - match("contract.storage["); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__30" - - // $ANTLR start "T__31" - public final void mT__31() throws RecognitionException { - try { - int _type = T__31; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:30:7: ( 'else' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:30:9: 'else' - { - match("else"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__31" - - // $ANTLR start "T__32" - public final void mT__32() throws RecognitionException { - try { - int _type = T__32; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:31:7: ( 'if' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:31:9: 'if' - { - match("if"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__32" - - // $ANTLR start "T__33" - public final void mT__33() throws RecognitionException { - try { - int _type = T__33; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:32:7: ( 'msg.data[' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:32:9: 'msg.data[' - { - match("msg.data["); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__33" - - // $ANTLR start "T__34" - public final void mT__34() throws RecognitionException { - try { - int _type = T__34; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:33:7: ( 'msg.datasize' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:33:9: 'msg.datasize' - { - match("msg.datasize"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__34" - - // $ANTLR start "T__35" - public final void mT__35() throws RecognitionException { - try { - int _type = T__35; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:34:7: ( 'msg.sender' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:34:9: 'msg.sender' - { - match("msg.sender"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__35" - - // $ANTLR start "T__36" - public final void mT__36() throws RecognitionException { - try { - int _type = T__36; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:35:7: ( 'return(' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:35:9: 'return(' - { - match("return("); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__36" - - // $ANTLR start "LETTER" - public final void mLETTER() throws RecognitionException { - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:232:17: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g: - { - if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "LETTER" - - // $ANTLR start "DIGIT" - public final void mDIGIT() throws RecognitionException { - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:233:16: ( '0' .. '9' ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g: - { - if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "DIGIT" - - // $ANTLR start "INTEGER" - public final void mINTEGER() throws RecognitionException { - try { - int _type = INTEGER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:234:9: ( ( DIGIT )+ ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:234:11: ( DIGIT )+ - { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:234:11: ( DIGIT )+ - int cnt1=0; - loop1: - while (true) { - int alt1=2; - int LA1_0 = input.LA(1); - if ( ((LA1_0 >= '0' && LA1_0 <= '9')) ) { - alt1=1; - } - - switch (alt1) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g: - { - if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - break; - - default : - if ( cnt1 >= 1 ) break loop1; - EarlyExitException eee = new EarlyExitException(1, input); - throw eee; - } - cnt1++; - } - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "INTEGER" - - // $ANTLR start "IDENT" - public final void mIDENT() throws RecognitionException { - try { - int _type = IDENT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:235:7: ( LETTER ( LETTER | DIGIT )* ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:235:9: LETTER ( LETTER | DIGIT )* - { - mLETTER(); - - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:235:16: ( LETTER | DIGIT )* - loop2: - while (true) { - int alt2=2; - int LA2_0 = input.LA(1); - if ( ((LA2_0 >= '0' && LA2_0 <= '9')||(LA2_0 >= 'A' && LA2_0 <= 'Z')||(LA2_0 >= 'a' && LA2_0 <= 'z')) ) { - alt2=1; - } - - switch (alt2) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g: - { - if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - break; - - default : - break loop2; - } - } - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "IDENT" - - // $ANTLR start "HEX_DIGIT" - public final void mHEX_DIGIT() throws RecognitionException { - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:237:20: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g: - { - if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'F')||(input.LA(1) >= 'a' && input.LA(1) <= 'f') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "HEX_DIGIT" - - // $ANTLR start "HEX_NUMBER" - public final void mHEX_NUMBER() throws RecognitionException { - try { - int _type = HEX_NUMBER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:238:12: ( ( '0x' | '0X' ) ( HEX_DIGIT )+ ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:238:14: ( '0x' | '0X' ) ( HEX_DIGIT )+ - { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:238:14: ( '0x' | '0X' ) - int alt3=2; - int LA3_0 = input.LA(1); - if ( (LA3_0=='0') ) { - int LA3_1 = input.LA(2); - if ( (LA3_1=='x') ) { - alt3=1; - } - else if ( (LA3_1=='X') ) { - alt3=2; - } - - else { - int nvaeMark = input.mark(); - try { - input.consume(); - NoViableAltException nvae = - new NoViableAltException("", 3, 1, input); - throw nvae; - } finally { - input.rewind(nvaeMark); - } - } - - } - - else { - NoViableAltException nvae = - new NoViableAltException("", 3, 0, input); - throw nvae; - } - - switch (alt3) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:238:15: '0x' - { - match("0x"); - - } - break; - case 2 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:238:22: '0X' - { - match("0X"); - - } - break; - - } - - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:238:28: ( HEX_DIGIT )+ - int cnt4=0; - loop4: - while (true) { - int alt4=2; - int LA4_0 = input.LA(1); - if ( ((LA4_0 >= '0' && LA4_0 <= '9')||(LA4_0 >= 'A' && LA4_0 <= 'F')||(LA4_0 >= 'a' && LA4_0 <= 'f')) ) { - alt4=1; - } - - switch (alt4) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g: - { - if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'F')||(input.LA(1) >= 'a' && input.LA(1) <= 'f') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - break; - - default : - if ( cnt4 >= 1 ) break loop4; - EarlyExitException eee = new EarlyExitException(4, input); - throw eee; - } - cnt4++; - } - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "HEX_NUMBER" - - // $ANTLR start "WS" - public final void mWS() throws RecognitionException { - try { - int _type = WS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:240:4: ( ( ' ' | '\\t' | '\\n' | '\\r' | '\\f' )+ ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:240:6: ( ' ' | '\\t' | '\\n' | '\\r' | '\\f' )+ - { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:240:6: ( ' ' | '\\t' | '\\n' | '\\r' | '\\f' )+ - int cnt5=0; - loop5: - while (true) { - int alt5=2; - int LA5_0 = input.LA(1); - if ( ((LA5_0 >= '\t' && LA5_0 <= '\n')||(LA5_0 >= '\f' && LA5_0 <= '\r')||LA5_0==' ') ) { - alt5=1; - } - - switch (alt5) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g: - { - if ( (input.LA(1) >= '\t' && input.LA(1) <= '\n')||(input.LA(1) >= '\f' && input.LA(1) <= '\r')||input.LA(1)==' ' ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - break; - - default : - if ( cnt5 >= 1 ) break loop5; - EarlyExitException eee = new EarlyExitException(5, input); - throw eee; - } - cnt5++; - } - - _channel = HIDDEN; - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "WS" - - // $ANTLR start "COMMENT" - public final void mCOMMENT() throws RecognitionException { - try { - int _type = COMMENT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:241:9: ( '//' ( . )* ( '\\n' | '\\r' ) ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:241:11: '//' ( . )* ( '\\n' | '\\r' ) - { - match("//"); - - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:241:16: ( . )* - loop6: - while (true) { - int alt6=2; - int LA6_0 = input.LA(1); - if ( (LA6_0=='\n'||LA6_0=='\r') ) { - alt6=2; - } - else if ( ((LA6_0 >= '\u0000' && LA6_0 <= '\t')||(LA6_0 >= '\u000B' && LA6_0 <= '\f')||(LA6_0 >= '\u000E' && LA6_0 <= '\uFFFF')) ) { - alt6=1; - } - - switch (alt6) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:241:16: . - { - matchAny(); - } - break; - - default : - break loop6; - } - } - - if ( input.LA(1)=='\n'||input.LA(1)=='\r' ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - _channel = HIDDEN; - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "COMMENT" - - @Override - public void mTokens() throws RecognitionException { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:8: ( T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | INTEGER | IDENT | HEX_NUMBER | WS | COMMENT ) - int alt7=30; - alt7 = dfa7.predict(input); - switch (alt7) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:10: T__12 - { - mT__12(); - - } - break; - case 2 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:16: T__13 - { - mT__13(); - - } - break; - case 3 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:22: T__14 - { - mT__14(); - - } - break; - case 4 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:28: T__15 - { - mT__15(); - - } - break; - case 5 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:34: T__16 - { - mT__16(); - - } - break; - case 6 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:40: T__17 - { - mT__17(); - - } - break; - case 7 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:46: T__18 - { - mT__18(); - - } - break; - case 8 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:52: T__19 - { - mT__19(); - - } - break; - case 9 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:58: T__20 - { - mT__20(); - - } - break; - case 10 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:64: T__21 - { - mT__21(); - - } - break; - case 11 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:70: T__22 - { - mT__22(); - - } - break; - case 12 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:76: T__23 - { - mT__23(); - - } - break; - case 13 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:82: T__24 - { - mT__24(); - - } - break; - case 14 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:88: T__25 - { - mT__25(); - - } - break; - case 15 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:94: T__26 - { - mT__26(); - - } - break; - case 16 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:100: T__27 - { - mT__27(); - - } - break; - case 17 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:106: T__28 - { - mT__28(); - - } - break; - case 18 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:112: T__29 - { - mT__29(); - - } - break; - case 19 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:118: T__30 - { - mT__30(); - - } - break; - case 20 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:124: T__31 - { - mT__31(); - - } - break; - case 21 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:130: T__32 - { - mT__32(); - - } - break; - case 22 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:136: T__33 - { - mT__33(); - - } - break; - case 23 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:142: T__34 - { - mT__34(); - - } - break; - case 24 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:148: T__35 - { - mT__35(); - - } - break; - case 25 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:154: T__36 - { - mT__36(); - - } - break; - case 26 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:160: INTEGER - { - mINTEGER(); - - } - break; - case 27 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:168: IDENT - { - mIDENT(); - - } - break; - case 28 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:174: HEX_NUMBER - { - mHEX_NUMBER(); - - } - break; - case 29 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:185: WS - { - mWS(); - - } - break; - case 30 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:1:188: COMMENT - { - mCOMMENT(); - - } - break; - - } - } - - - protected DFA7 dfa7 = new DFA7(this); - static final String DFA7_eotS = - "\10\uffff\1\33\1\uffff\1\35\1\37\1\41\2\uffff\5\25\1\26\15\uffff\2\25"+ - "\1\52\2\25\1\uffff\2\25\1\uffff\3\25\1\62\1\uffff\2\25\3\uffff\2\25\1"+ - "\uffff\2\25\2\uffff\1\25\4\uffff"; - static final String DFA7_eofS = - "\101\uffff"; - static final String DFA7_minS = - "\1\11\1\uffff\1\45\5\uffff\1\57\1\uffff\3\75\2\uffff\1\157\1\154\1\146"+ - "\1\163\1\145\1\130\15\uffff\1\156\1\163\1\60\1\147\1\164\1\uffff\1\164"+ - "\1\145\1\uffff\1\56\1\165\1\162\1\60\1\144\1\162\1\141\1\uffff\1\141\1"+ - "\uffff\1\156\1\143\1\164\1\50\1\164\1\141\1\uffff\1\56\1\133\3\uffff"; - static final String DFA7_maxS = - "\1\172\1\uffff\1\57\5\uffff\1\57\1\uffff\3\75\2\uffff\1\157\1\154\1\146"+ - "\1\163\1\145\1\170\15\uffff\1\156\1\163\1\172\1\147\1\164\1\uffff\1\164"+ - "\1\145\1\uffff\1\56\1\165\1\162\1\172\1\163\1\162\1\141\1\uffff\1\141"+ - "\1\uffff\1\156\1\143\1\164\1\50\1\164\1\141\1\uffff\1\56\1\163\3\uffff"; - static final String DFA7_acceptS = - "\1\uffff\1\1\1\uffff\1\4\1\5\1\6\1\7\1\10\1\uffff\1\12\3\uffff\1\21\1"+ - "\22\6\uffff\1\33\1\32\1\35\1\2\1\3\1\36\1\11\1\14\1\13\1\16\1\15\1\20"+ - "\1\17\5\uffff\1\34\2\uffff\1\25\7\uffff\1\24\1\uffff\1\30\6\uffff\1\31"+ - "\2\uffff\1\23\1\26\1\27"; - static final String DFA7_specialS = - "\101\uffff}>"; - static final String[] DFA7_transitionS = { - "\2\27\1\uffff\2\27\22\uffff\1\27\1\1\1\uffff\1\2\1\uffff\1\3\3\uffff"+ - "\1\4\1\5\1\6\1\uffff\1\7\1\uffff\1\10\1\24\11\26\1\11\1\uffff\1\12\1"+ - "\13\1\14\2\uffff\32\25\2\uffff\1\15\1\16\2\uffff\2\25\1\17\1\25\1\20"+ - "\3\25\1\21\3\25\1\22\4\25\1\23\10\25", - "", - "\1\30\11\uffff\1\31", - "", - "", - "", - "", - "", - "\1\32", - "", - "\1\34", - "\1\36", - "\1\40", - "", - "", - "\1\42", - "\1\43", - "\1\44", - "\1\45", - "\1\46", - "\1\47\37\uffff\1\47", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "\1\50", - "\1\51", - "\12\25\7\uffff\32\25\6\uffff\32\25", - "\1\53", - "\1\54", - "", - "\1\55", - "\1\56", - "", - "\1\57", - "\1\60", - "\1\61", - "\12\25\7\uffff\32\25\6\uffff\32\25", - "\1\63\16\uffff\1\64", - "\1\65", - "\1\66", - "", - "\1\67", - "", - "\1\70", - "\1\71", - "\1\72", - "\1\73", - "\1\74", - "\1\75", - "", - "\1\76", - "\1\77\27\uffff\1\100", - "", - "", - "" - }; - - static final short[] DFA7_eot = DFA.unpackEncodedString(DFA7_eotS); - static final short[] DFA7_eof = DFA.unpackEncodedString(DFA7_eofS); - static final char[] DFA7_min = DFA.unpackEncodedStringToUnsignedChars(DFA7_minS); - static final char[] DFA7_max = DFA.unpackEncodedStringToUnsignedChars(DFA7_maxS); - static final short[] DFA7_accept = DFA.unpackEncodedString(DFA7_acceptS); - static final short[] DFA7_special = DFA.unpackEncodedString(DFA7_specialS); - static final short[][] DFA7_transition; - - static { - int numStates = DFA7_transitionS.length; - DFA7_transition = new short[numStates][]; - for (int i=0; i", "", "", "", "COMMENT", "DIGIT", "HEX_DIGIT", - "HEX_NUMBER", "IDENT", "INTEGER", "LETTER", "WS", "'!'", "'#%'", "'#/'", - "'%'", "')'", "'*'", "'+'", "'-'", "'/'", "':'", "'<'", "'<='", "'='", - "'=='", "'>'", "'>='", "']'", "'^'", "'contract.storage['", "'else'", - "'if'", "'msg.data['", "'msg.datasize'", "'msg.sender'", "'return('" - }; - public static final int EOF=-1; - public static final int T__12=12; - public static final int T__13=13; - public static final int T__14=14; - public static final int T__15=15; - public static final int T__16=16; - public static final int T__17=17; - public static final int T__18=18; - public static final int T__19=19; - public static final int T__20=20; - public static final int T__21=21; - public static final int T__22=22; - public static final int T__23=23; - public static final int T__24=24; - public static final int T__25=25; - public static final int T__26=26; - public static final int T__27=27; - public static final int T__28=28; - public static final int T__29=29; - public static final int T__30=30; - public static final int T__31=31; - public static final int T__32=32; - public static final int T__33=33; - public static final int T__34=34; - public static final int T__35=35; - public static final int T__36=36; - public static final int COMMENT=4; - public static final int DIGIT=5; - public static final int HEX_DIGIT=6; - public static final int HEX_NUMBER=7; - public static final int IDENT=8; - public static final int INTEGER=9; - public static final int LETTER=10; - public static final int WS=11; - - // delegates - public Parser[] getDelegates() { - return new Parser[] {}; - } - - // delegators - - - public SerpentParser(TokenStream input) { - this(input, new RecognizerSharedState()); - } - public SerpentParser(TokenStream input, RecognizerSharedState state) { - super(input, state); - } - - protected StringTemplateGroup templateLib = - new StringTemplateGroup("SerpentParserTemplates", AngleBracketTemplateLexer.class); - - public void setTemplateLib(StringTemplateGroup templateLib) { - this.templateLib = templateLib; - } - public StringTemplateGroup getTemplateLib() { - return templateLib; - } - /** allows convenient multi-value initialization: - * "new STAttrMap().put(...).put(...)" - */ - @SuppressWarnings("serial") - public static class STAttrMap extends HashMap { - public STAttrMap put(String attrName, Object value) { - super.put(attrName, value); - return this; - } - } - @Override public String[] getTokenNames() { return SerpentParser.tokenNames; } - @Override public String getGrammarFileName() { return "E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g"; } - - - private ArrayList globals = new ArrayList(); - private int labelIndex = 0; - - - public static class program_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "program" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:39:1: program : gen_body -> concat(left=conVarsright=$gen_body.st); - public final program_return program() throws RecognitionException { - program_return retval = new program_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope gen_body1 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:40:2: ( gen_body -> concat(left=conVarsright=$gen_body.st)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:40:5: gen_body - { - pushFollow(FOLLOW_gen_body_in_program60); - gen_body1=gen_body(); - state._fsp--; - - - String conVars = ""; - - if (globals.size() > 0){ - - conVars = "0 " + (globals.size() * 32 - 1) + " MSTORE8"; - } - - // TEMPLATE REWRITE - // 49:8: -> concat(left=conVarsright=$gen_body.st) - { - retval.st = templateLib.getInstanceOf("concat",new STAttrMap().put("left", conVars).put("right", (gen_body1!=null?((StringTemplate)gen_body1.getTemplate()):null))); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "program" - - - public static class test_1_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "test_1" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:52:1: test_1 : ( set_var -> concat(left=$test_1.stright=$set_var.st)| get_var -> concat(left=$test_1.stright=$get_var.st))* ; - public final test_1_return test_1() throws RecognitionException { - test_1_return retval = new test_1_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope set_var2 =null; - ParserRuleReturnScope get_var3 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:53:2: ( ( set_var -> concat(left=$test_1.stright=$set_var.st)| get_var -> concat(left=$test_1.stright=$get_var.st))* ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:54:8: ( set_var -> concat(left=$test_1.stright=$set_var.st)| get_var -> concat(left=$test_1.stright=$get_var.st))* - { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:54:8: ( set_var -> concat(left=$test_1.stright=$set_var.st)| get_var -> concat(left=$test_1.stright=$get_var.st))* - loop1: - while (true) { - int alt1=3; - int LA1_0 = input.LA(1); - if ( (LA1_0==IDENT) ) { - int LA1_2 = input.LA(2); - if ( (LA1_2==24) ) { - alt1=1; - } - else if ( (LA1_2==EOF||LA1_2==IDENT) ) { - alt1=2; - } - - } - - switch (alt1) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:55:11: set_var - { - pushFollow(FOLLOW_set_var_in_test_1120); - set_var2=set_var(); - state._fsp--; - - // TEMPLATE REWRITE - // 55:19: -> concat(left=$test_1.stright=$set_var.st) - { - retval.st = templateLib.getInstanceOf("concat",new STAttrMap().put("left", retval.st).put("right", (set_var2!=null?((StringTemplate)set_var2.getTemplate()):null))); - } - - - - } - break; - case 2 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:56:11: get_var - { - pushFollow(FOLLOW_get_var_in_test_1146); - get_var3=get_var(); - state._fsp--; - - // TEMPLATE REWRITE - // 56:19: -> concat(left=$test_1.stright=$get_var.st) - { - retval.st = templateLib.getInstanceOf("concat",new STAttrMap().put("left", retval.st).put("right", (get_var3!=null?((StringTemplate)get_var3.getTemplate()):null))); - } - - - - } - break; - - default : - break loop1; - } - } - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "test_1" - - - public static class gen_body_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "gen_body" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:75:1: gen_body : ( set_var -> concat(left=$gen_body.stright=$set_var.st)| storage_save -> concat(left=$gen_body.stright=$storage_save.st)| return_stmt -> concat(left=$gen_body.stright=$return_stmt.st))* ( if_else_stmt -> concat(left=$gen_body.stright=$if_else_stmt.st))? ; - public final gen_body_return gen_body() throws RecognitionException { - gen_body_return retval = new gen_body_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope set_var4 =null; - ParserRuleReturnScope storage_save5 =null; - ParserRuleReturnScope return_stmt6 =null; - ParserRuleReturnScope if_else_stmt7 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:76:5: ( ( set_var -> concat(left=$gen_body.stright=$set_var.st)| storage_save -> concat(left=$gen_body.stright=$storage_save.st)| return_stmt -> concat(left=$gen_body.stright=$return_stmt.st))* ( if_else_stmt -> concat(left=$gen_body.stright=$if_else_stmt.st))? ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:77:8: ( set_var -> concat(left=$gen_body.stright=$set_var.st)| storage_save -> concat(left=$gen_body.stright=$storage_save.st)| return_stmt -> concat(left=$gen_body.stright=$return_stmt.st))* ( if_else_stmt -> concat(left=$gen_body.stright=$if_else_stmt.st))? - { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:77:8: ( set_var -> concat(left=$gen_body.stright=$set_var.st)| storage_save -> concat(left=$gen_body.stright=$storage_save.st)| return_stmt -> concat(left=$gen_body.stright=$return_stmt.st))* - loop2: - while (true) { - int alt2=4; - switch ( input.LA(1) ) { - case IDENT: - { - alt2=1; - } - break; - case 30: - { - alt2=2; - } - break; - case 36: - { - alt2=3; - } - break; - } - switch (alt2) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:78:9: set_var - { - pushFollow(FOLLOW_set_var_in_gen_body201); - set_var4=set_var(); - state._fsp--; - - // TEMPLATE REWRITE - // 78:17: -> concat(left=$gen_body.stright=$set_var.st) - { - retval.st = templateLib.getInstanceOf("concat",new STAttrMap().put("left", retval.st).put("right", (set_var4!=null?((StringTemplate)set_var4.getTemplate()):null))); - } - - - - } - break; - case 2 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:79:11: storage_save - { - pushFollow(FOLLOW_storage_save_in_gen_body227); - storage_save5=storage_save(); - state._fsp--; - - // TEMPLATE REWRITE - // 79:24: -> concat(left=$gen_body.stright=$storage_save.st) - { - retval.st = templateLib.getInstanceOf("concat",new STAttrMap().put("left", retval.st).put("right", (storage_save5!=null?((StringTemplate)storage_save5.getTemplate()):null))); - } - - - - } - break; - case 3 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:80:11: return_stmt - { - pushFollow(FOLLOW_return_stmt_in_gen_body253); - return_stmt6=return_stmt(); - state._fsp--; - - // TEMPLATE REWRITE - // 80:23: -> concat(left=$gen_body.stright=$return_stmt.st) - { - retval.st = templateLib.getInstanceOf("concat",new STAttrMap().put("left", retval.st).put("right", (return_stmt6!=null?((StringTemplate)return_stmt6.getTemplate()):null))); - } - - - - } - break; - - default : - break loop2; - } - } - - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:81:11: ( if_else_stmt -> concat(left=$gen_body.stright=$if_else_stmt.st))? - int alt3=2; - int LA3_0 = input.LA(1); - if ( (LA3_0==32) ) { - alt3=1; - } - switch (alt3) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:81:13: if_else_stmt - { - pushFollow(FOLLOW_if_else_stmt_in_gen_body281); - if_else_stmt7=if_else_stmt(); - state._fsp--; - - // TEMPLATE REWRITE - // 81:26: -> concat(left=$gen_body.stright=$if_else_stmt.st) - { - retval.st = templateLib.getInstanceOf("concat",new STAttrMap().put("left", retval.st).put("right", (if_else_stmt7!=null?((StringTemplate)if_else_stmt7.getTemplate()):null))); - } - - - - } - break; - - } - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "gen_body" - - - public static class if_stmt_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "if_stmt" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:90:1: if_stmt : 'if' unr_expr ':' gen_body -> ifStmt(cond=$unr_expr.stbody=$gen_body.stindex=labelIndex++); - public final if_stmt_return if_stmt() throws RecognitionException { - if_stmt_return retval = new if_stmt_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope unr_expr8 =null; - ParserRuleReturnScope gen_body9 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:91:5: ( 'if' unr_expr ':' gen_body -> ifStmt(cond=$unr_expr.stbody=$gen_body.stindex=labelIndex++)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:92:9: 'if' unr_expr ':' gen_body - { - match(input,32,FOLLOW_32_in_if_stmt328); - pushFollow(FOLLOW_unr_expr_in_if_stmt330); - unr_expr8=unr_expr(); - state._fsp--; - - match(input,21,FOLLOW_21_in_if_stmt332); - pushFollow(FOLLOW_gen_body_in_if_stmt334); - gen_body9=gen_body(); - state._fsp--; - - // TEMPLATE REWRITE - // 94:65: -> ifStmt(cond=$unr_expr.stbody=$gen_body.stindex=labelIndex++) - { - retval.st = templateLib.getInstanceOf("ifStmt",new STAttrMap().put("cond", (unr_expr8!=null?((StringTemplate)unr_expr8.getTemplate()):null)).put("body", (gen_body9!=null?((StringTemplate)gen_body9.getTemplate()):null)).put("index", labelIndex++)); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "if_stmt" - - - public static class if_else_stmt_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "if_else_stmt" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:102:1: if_else_stmt : 'if' unr_expr ':' if_body= gen_body 'else' ':' else_body= gen_body -> ifElseStmt(cond=$unr_expr.stif_body=$if_body.stelse_body=$else_body.stif_index=labelIndex++else_index=labelIndex++); - public final if_else_stmt_return if_else_stmt() throws RecognitionException { - if_else_stmt_return retval = new if_else_stmt_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope if_body =null; - ParserRuleReturnScope else_body =null; - ParserRuleReturnScope unr_expr10 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:103:5: ( 'if' unr_expr ':' if_body= gen_body 'else' ':' else_body= gen_body -> ifElseStmt(cond=$unr_expr.stif_body=$if_body.stelse_body=$else_body.stif_index=labelIndex++else_index=labelIndex++)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:104:9: 'if' unr_expr ':' if_body= gen_body 'else' ':' else_body= gen_body - { - match(input,32,FOLLOW_32_in_if_else_stmt448); - pushFollow(FOLLOW_unr_expr_in_if_else_stmt450); - unr_expr10=unr_expr(); - state._fsp--; - - match(input,21,FOLLOW_21_in_if_else_stmt452); - pushFollow(FOLLOW_gen_body_in_if_else_stmt456); - if_body=gen_body(); - state._fsp--; - - match(input,31,FOLLOW_31_in_if_else_stmt467); - match(input,21,FOLLOW_21_in_if_else_stmt469); - pushFollow(FOLLOW_gen_body_in_if_else_stmt473); - else_body=gen_body(); - state._fsp--; - - // TEMPLATE REWRITE - // 106:42: -> ifElseStmt(cond=$unr_expr.stif_body=$if_body.stelse_body=$else_body.stif_index=labelIndex++else_index=labelIndex++) - { - retval.st = templateLib.getInstanceOf("ifElseStmt",new STAttrMap().put("cond", (unr_expr10!=null?((StringTemplate)unr_expr10.getTemplate()):null)).put("if_body", (if_body!=null?((StringTemplate)if_body.getTemplate()):null)).put("else_body", (else_body!=null?((StringTemplate)else_body.getTemplate()):null)).put("if_index", labelIndex++).put("else_index", labelIndex++)); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "if_else_stmt" - - - public static class set_var_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "set_var" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:113:1: set_var : (a= var '=' b= bin_expr ) -> set_var(param_a=$b.stparam_b=32 * varIndex); - public final set_var_return set_var() throws RecognitionException { - set_var_return retval = new set_var_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope a =null; - ParserRuleReturnScope b =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:114:5: ( (a= var '=' b= bin_expr ) -> set_var(param_a=$b.stparam_b=32 * varIndex)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:115:9: (a= var '=' b= bin_expr ) - { - int varIndex = -1; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:116:9: (a= var '=' b= bin_expr ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:116:10: a= var '=' b= bin_expr - { - pushFollow(FOLLOW_var_in_set_var601); - a=var(); - state._fsp--; - - // TODO: change it from atom to something else - - // check if that variable already defined - // if it didn't add it to list - // if it did use the index * 32 for memory address - varIndex = globals.indexOf((a!=null?((StringTemplate)a.getTemplate()):null).toString()); - if (varIndex == -1 ) {globals.add((a!=null?((StringTemplate)a.getTemplate()):null).toString()); varIndex = globals.size() - 1; } - - match(input,24,FOLLOW_24_in_set_var614); - pushFollow(FOLLOW_bin_expr_in_set_var618); - b=bin_expr(); - state._fsp--; - - } - - // TEMPLATE REWRITE - // 125:25: -> set_var(param_a=$b.stparam_b=32 * varIndex) - { - retval.st = templateLib.getInstanceOf("set_var",new STAttrMap().put("param_a", (b!=null?((StringTemplate)b.getTemplate()):null)).put("param_b", 32 * varIndex)); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "set_var" - - - public static class get_var_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "get_var" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:128:2: get_var : (a= var -> get_var(varIndex=32 * varIndex)) ; - public final get_var_return get_var() throws RecognitionException { - get_var_return retval = new get_var_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope a =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:129:5: ( (a= var -> get_var(varIndex=32 * varIndex)) ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:130:8: (a= var -> get_var(varIndex=32 * varIndex)) - { - int varIndex = -1; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:131:8: (a= var -> get_var(varIndex=32 * varIndex)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:131:9: a= var - { - pushFollow(FOLLOW_var_in_get_var670); - a=var(); - state._fsp--; - - - - // If there is no such var throw exception - varIndex = globals.indexOf((a!=null?((StringTemplate)a.getTemplate()):null).toString()); - if (varIndex == -1 ) { - Error err = new Error("var undefined: " + (a!=null?((StringTemplate)a.getTemplate()):null).toString()); - throw err; - } - ; - // TEMPLATE REWRITE - // 141:7: -> get_var(varIndex=32 * varIndex) - { - retval.st = templateLib.getInstanceOf("get_var",new STAttrMap().put("varIndex", 32 * varIndex)); - } - - - - } - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "get_var" - - - public static class unr_expr_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "unr_expr" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:146:1: unr_expr : ( '!' )* a= cond_expr -> not(param=negative? $a.st : $a.st + \" NOT\"); - public final unr_expr_return unr_expr() throws RecognitionException { - unr_expr_return retval = new unr_expr_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope a =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:147:5: ( ( '!' )* a= cond_expr -> not(param=negative? $a.st : $a.st + \" NOT\")) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:148:9: ( '!' )* a= cond_expr - { - boolean negative = false; - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:149:9: ( '!' )* - loop4: - while (true) { - int alt4=2; - int LA4_0 = input.LA(1); - if ( (LA4_0==12) ) { - alt4=1; - } - - switch (alt4) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:149:10: '!' - { - match(input,12,FOLLOW_12_in_unr_expr732); - negative = !negative; - } - break; - - default : - break loop4; - } - } - - pushFollow(FOLLOW_cond_expr_in_unr_expr742); - a=cond_expr(); - state._fsp--; - - // TEMPLATE REWRITE - // 149:54: -> not(param=negative? $a.st : $a.st + \" NOT\") - { - retval.st = templateLib.getInstanceOf("not",new STAttrMap().put("param", negative? (a!=null?((StringTemplate)a.getTemplate()):null) : (a!=null?((StringTemplate)a.getTemplate()):null) + " NOT")); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "unr_expr" - - - public static class cond_expr_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "cond_expr" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:154:1: cond_expr : a= bin_expr ( '==' b= bin_expr -> equals(left=$a.stright=$b.st)| '<' b= bin_expr -> lessThan(left=$a.stright=$b.st)| '<=' b= bin_expr -> lessEqThan(left=$a.stright=$b.st)| '>=' b= bin_expr -> greatEqThan(left=$a.stright=$b.st)| '>' b= bin_expr -> greatThan(left=$a.stright=$b.st)| -> {$a.st}) ; - public final cond_expr_return cond_expr() throws RecognitionException { - cond_expr_return retval = new cond_expr_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope a =null; - ParserRuleReturnScope b =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:155:5: (a= bin_expr ( '==' b= bin_expr -> equals(left=$a.stright=$b.st)| '<' b= bin_expr -> lessThan(left=$a.stright=$b.st)| '<=' b= bin_expr -> lessEqThan(left=$a.stright=$b.st)| '>=' b= bin_expr -> greatEqThan(left=$a.stright=$b.st)| '>' b= bin_expr -> greatThan(left=$a.stright=$b.st)| -> {$a.st}) ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:155:9: a= bin_expr ( '==' b= bin_expr -> equals(left=$a.stright=$b.st)| '<' b= bin_expr -> lessThan(left=$a.stright=$b.st)| '<=' b= bin_expr -> lessEqThan(left=$a.stright=$b.st)| '>=' b= bin_expr -> greatEqThan(left=$a.stright=$b.st)| '>' b= bin_expr -> greatThan(left=$a.stright=$b.st)| -> {$a.st}) - { - pushFollow(FOLLOW_bin_expr_in_cond_expr774); - a=bin_expr(); - state._fsp--; - - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:156:9: ( '==' b= bin_expr -> equals(left=$a.stright=$b.st)| '<' b= bin_expr -> lessThan(left=$a.stright=$b.st)| '<=' b= bin_expr -> lessEqThan(left=$a.stright=$b.st)| '>=' b= bin_expr -> greatEqThan(left=$a.stright=$b.st)| '>' b= bin_expr -> greatThan(left=$a.stright=$b.st)| -> {$a.st}) - int alt5=6; - switch ( input.LA(1) ) { - case 25: - { - alt5=1; - } - break; - case 22: - { - alt5=2; - } - break; - case 23: - { - alt5=3; - } - break; - case 27: - { - alt5=4; - } - break; - case 26: - { - alt5=5; - } - break; - case 21: - { - alt5=6; - } - break; - default: - NoViableAltException nvae = - new NoViableAltException("", 5, 0, input); - throw nvae; - } - switch (alt5) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:157:18: '==' b= bin_expr - { - match(input,25,FOLLOW_25_in_cond_expr803); - pushFollow(FOLLOW_bin_expr_in_cond_expr807); - b=bin_expr(); - state._fsp--; - - // TEMPLATE REWRITE - // 157:34: -> equals(left=$a.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("equals",new STAttrMap().put("left", (a!=null?((StringTemplate)a.getTemplate()):null)).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 2 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:158:18: '<' b= bin_expr - { - match(input,22,FOLLOW_22_in_cond_expr843); - pushFollow(FOLLOW_bin_expr_in_cond_expr848); - b=bin_expr(); - state._fsp--; - - // TEMPLATE REWRITE - // 158:34: -> lessThan(left=$a.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("lessThan",new STAttrMap().put("left", (a!=null?((StringTemplate)a.getTemplate()):null)).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 3 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:159:18: '<=' b= bin_expr - { - match(input,23,FOLLOW_23_in_cond_expr882); - pushFollow(FOLLOW_bin_expr_in_cond_expr887); - b=bin_expr(); - state._fsp--; - - // TEMPLATE REWRITE - // 159:35: -> lessEqThan(left=$a.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("lessEqThan",new STAttrMap().put("left", (a!=null?((StringTemplate)a.getTemplate()):null)).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 4 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:160:18: '>=' b= bin_expr - { - match(input,27,FOLLOW_27_in_cond_expr921); - pushFollow(FOLLOW_bin_expr_in_cond_expr926); - b=bin_expr(); - state._fsp--; - - // TEMPLATE REWRITE - // 160:35: -> greatEqThan(left=$a.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("greatEqThan",new STAttrMap().put("left", (a!=null?((StringTemplate)a.getTemplate()):null)).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 5 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:161:18: '>' b= bin_expr - { - match(input,26,FOLLOW_26_in_cond_expr960); - pushFollow(FOLLOW_bin_expr_in_cond_expr965); - b=bin_expr(); - state._fsp--; - - // TEMPLATE REWRITE - // 161:34: -> greatThan(left=$a.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("greatThan",new STAttrMap().put("left", (a!=null?((StringTemplate)a.getTemplate()):null)).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 6 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:163:13: - { - // TEMPLATE REWRITE - // 163:13: -> {$a.st} - { - retval.st = (a!=null?((StringTemplate)a.getTemplate()):null); - } - - - - } - break; - - } - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "cond_expr" - - - public static class storage_save_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "storage_save" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:167:1: storage_save : 'contract.storage[' index= bin_expr ']' '=' assignment= bin_expr -> ssave(index=$index.stdata=$assignment.st); - public final storage_save_return storage_save() throws RecognitionException { - storage_save_return retval = new storage_save_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope index =null; - ParserRuleReturnScope assignment =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:168:7: ( 'contract.storage[' index= bin_expr ']' '=' assignment= bin_expr -> ssave(index=$index.stdata=$assignment.st)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:168:9: 'contract.storage[' index= bin_expr ']' '=' assignment= bin_expr - { - match(input,30,FOLLOW_30_in_storage_save1024); - pushFollow(FOLLOW_bin_expr_in_storage_save1027); - index=bin_expr(); - state._fsp--; - - match(input,28,FOLLOW_28_in_storage_save1028); - match(input,24,FOLLOW_24_in_storage_save1030); - pushFollow(FOLLOW_bin_expr_in_storage_save1034); - assignment=bin_expr(); - state._fsp--; - - // TEMPLATE REWRITE - // 168:70: -> ssave(index=$index.stdata=$assignment.st) - { - retval.st = templateLib.getInstanceOf("ssave",new STAttrMap().put("index", (index!=null?((StringTemplate)index.getTemplate()):null)).put("data", (assignment!=null?((StringTemplate)assignment.getTemplate()):null))); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "storage_save" - - - public static class bin_expr_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "bin_expr" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:171:1: bin_expr : (a= atom -> {$a.st}) ( ( '+' b= atom -> add(left=$bin_expr.stright=$b.st)| '-' b= atom -> sub(left=$bin_expr.stright=$b.st)| '*' b= atom -> mul(left=$bin_expr.stright=$b.st)| '/' b= atom -> div(left=$bin_expr.stright=$b.st)| '^' b= atom -> exp(left=$bin_expr.stright=$b.st)| '%' b= atom -> mod(left=$bin_expr.stright=$b.st)| '#/' b= atom -> sdiv(left=$bin_expr.stright=$b.st)| '#%' b= atom -> smod(left=$bin_expr.stright=$b.st))* ) ; - public final bin_expr_return bin_expr() throws RecognitionException { - bin_expr_return retval = new bin_expr_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope a =null; - ParserRuleReturnScope b =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:172:5: ( (a= atom -> {$a.st}) ( ( '+' b= atom -> add(left=$bin_expr.stright=$b.st)| '-' b= atom -> sub(left=$bin_expr.stright=$b.st)| '*' b= atom -> mul(left=$bin_expr.stright=$b.st)| '/' b= atom -> div(left=$bin_expr.stright=$b.st)| '^' b= atom -> exp(left=$bin_expr.stright=$b.st)| '%' b= atom -> mod(left=$bin_expr.stright=$b.st)| '#/' b= atom -> sdiv(left=$bin_expr.stright=$b.st)| '#%' b= atom -> smod(left=$bin_expr.stright=$b.st))* ) ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:172:9: (a= atom -> {$a.st}) ( ( '+' b= atom -> add(left=$bin_expr.stright=$b.st)| '-' b= atom -> sub(left=$bin_expr.stright=$b.st)| '*' b= atom -> mul(left=$bin_expr.stright=$b.st)| '/' b= atom -> div(left=$bin_expr.stright=$b.st)| '^' b= atom -> exp(left=$bin_expr.stright=$b.st)| '%' b= atom -> mod(left=$bin_expr.stright=$b.st)| '#/' b= atom -> sdiv(left=$bin_expr.stright=$b.st)| '#%' b= atom -> smod(left=$bin_expr.stright=$b.st))* ) - { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:172:9: (a= atom -> {$a.st}) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:172:10: a= atom - { - pushFollow(FOLLOW_atom_in_bin_expr1072); - a=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 172:17: -> {$a.st} - { - retval.st = (a!=null?((StringTemplate)a.getTemplate()):null); - } - - - - } - - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:173:9: ( ( '+' b= atom -> add(left=$bin_expr.stright=$b.st)| '-' b= atom -> sub(left=$bin_expr.stright=$b.st)| '*' b= atom -> mul(left=$bin_expr.stright=$b.st)| '/' b= atom -> div(left=$bin_expr.stright=$b.st)| '^' b= atom -> exp(left=$bin_expr.stright=$b.st)| '%' b= atom -> mod(left=$bin_expr.stright=$b.st)| '#/' b= atom -> sdiv(left=$bin_expr.stright=$b.st)| '#%' b= atom -> smod(left=$bin_expr.stright=$b.st))* ) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:173:10: ( '+' b= atom -> add(left=$bin_expr.stright=$b.st)| '-' b= atom -> sub(left=$bin_expr.stright=$b.st)| '*' b= atom -> mul(left=$bin_expr.stright=$b.st)| '/' b= atom -> div(left=$bin_expr.stright=$b.st)| '^' b= atom -> exp(left=$bin_expr.stright=$b.st)| '%' b= atom -> mod(left=$bin_expr.stright=$b.st)| '#/' b= atom -> sdiv(left=$bin_expr.stright=$b.st)| '#%' b= atom -> smod(left=$bin_expr.stright=$b.st))* - { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:173:10: ( '+' b= atom -> add(left=$bin_expr.stright=$b.st)| '-' b= atom -> sub(left=$bin_expr.stright=$b.st)| '*' b= atom -> mul(left=$bin_expr.stright=$b.st)| '/' b= atom -> div(left=$bin_expr.stright=$b.st)| '^' b= atom -> exp(left=$bin_expr.stright=$b.st)| '%' b= atom -> mod(left=$bin_expr.stright=$b.st)| '#/' b= atom -> sdiv(left=$bin_expr.stright=$b.st)| '#%' b= atom -> smod(left=$bin_expr.stright=$b.st))* - loop6: - while (true) { - int alt6=9; - switch ( input.LA(1) ) { - case 18: - { - alt6=1; - } - break; - case 19: - { - alt6=2; - } - break; - case 17: - { - alt6=3; - } - break; - case 20: - { - alt6=4; - } - break; - case 29: - { - alt6=5; - } - break; - case 15: - { - alt6=6; - } - break; - case 14: - { - alt6=7; - } - break; - case 13: - { - alt6=8; - } - break; - } - switch (alt6) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:173:12: '+' b= atom - { - match(input,18,FOLLOW_18_in_bin_expr1090); - pushFollow(FOLLOW_atom_in_bin_expr1095); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 173:24: -> add(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("add",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 2 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:174:12: '-' b= atom - { - match(input,19,FOLLOW_19_in_bin_expr1126); - pushFollow(FOLLOW_atom_in_bin_expr1131); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 174:24: -> sub(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("sub",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 3 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:175:12: '*' b= atom - { - match(input,17,FOLLOW_17_in_bin_expr1162); - pushFollow(FOLLOW_atom_in_bin_expr1167); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 175:24: -> mul(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("mul",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 4 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:176:12: '/' b= atom - { - match(input,20,FOLLOW_20_in_bin_expr1198); - pushFollow(FOLLOW_atom_in_bin_expr1203); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 176:24: -> div(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("div",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 5 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:177:12: '^' b= atom - { - match(input,29,FOLLOW_29_in_bin_expr1234); - pushFollow(FOLLOW_atom_in_bin_expr1239); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 177:24: -> exp(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("exp",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 6 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:178:12: '%' b= atom - { - match(input,15,FOLLOW_15_in_bin_expr1270); - pushFollow(FOLLOW_atom_in_bin_expr1275); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 178:24: -> mod(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("mod",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 7 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:179:12: '#/' b= atom - { - match(input,14,FOLLOW_14_in_bin_expr1306); - pushFollow(FOLLOW_atom_in_bin_expr1310); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 179:24: -> sdiv(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("sdiv",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - case 8 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:180:12: '#%' b= atom - { - match(input,13,FOLLOW_13_in_bin_expr1340); - pushFollow(FOLLOW_atom_in_bin_expr1344); - b=atom(); - state._fsp--; - - // TEMPLATE REWRITE - // 180:24: -> smod(left=$bin_expr.stright=$b.st) - { - retval.st = templateLib.getInstanceOf("smod",new STAttrMap().put("left", retval.st).put("right", (b!=null?((StringTemplate)b.getTemplate()):null))); - } - - - - } - break; - - default : - break loop6; - } - } - - } - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "bin_expr" - - - public static class atom_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "atom" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:186:1: atom : ( storage_load -> iconst(value=$storage_load.st)| msg_sender -> iconst(value=$msg_sender.st)| msg_datasize -> iconst(value=$msg_datasize.st)| msg_load -> iconst(value=$msg_load.st)| get_var -> iconst(value=$get_var.st)| INTEGER -> iconst(value=$INTEGER.text)| hex_num -> iconst(value=$hex_num.st)); - public final atom_return atom() throws RecognitionException { - atom_return retval = new atom_return(); - retval.start = input.LT(1); - - Token INTEGER16=null; - ParserRuleReturnScope storage_load11 =null; - ParserRuleReturnScope msg_sender12 =null; - ParserRuleReturnScope msg_datasize13 =null; - ParserRuleReturnScope msg_load14 =null; - ParserRuleReturnScope get_var15 =null; - ParserRuleReturnScope hex_num17 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:187:5: ( storage_load -> iconst(value=$storage_load.st)| msg_sender -> iconst(value=$msg_sender.st)| msg_datasize -> iconst(value=$msg_datasize.st)| msg_load -> iconst(value=$msg_load.st)| get_var -> iconst(value=$get_var.st)| INTEGER -> iconst(value=$INTEGER.text)| hex_num -> iconst(value=$hex_num.st)) - int alt7=7; - switch ( input.LA(1) ) { - case 30: - { - alt7=1; - } - break; - case 35: - { - alt7=2; - } - break; - case 34: - { - alt7=3; - } - break; - case 33: - { - alt7=4; - } - break; - case IDENT: - { - alt7=5; - } - break; - case INTEGER: - { - alt7=6; - } - break; - case HEX_NUMBER: - { - alt7=7; - } - break; - default: - NoViableAltException nvae = - new NoViableAltException("", 7, 0, input); - throw nvae; - } - switch (alt7) { - case 1 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:188:7: storage_load - { - pushFollow(FOLLOW_storage_load_in_atom1414); - storage_load11=storage_load(); - state._fsp--; - - // TEMPLATE REWRITE - // 188:20: -> iconst(value=$storage_load.st) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", (storage_load11!=null?((StringTemplate)storage_load11.getTemplate()):null))); - } - - - - } - break; - case 2 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:189:9: msg_sender - { - pushFollow(FOLLOW_msg_sender_in_atom1433); - msg_sender12=msg_sender(); - state._fsp--; - - // TEMPLATE REWRITE - // 189:20: -> iconst(value=$msg_sender.st) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", (msg_sender12!=null?((StringTemplate)msg_sender12.getTemplate()):null))); - } - - - - } - break; - case 3 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:190:9: msg_datasize - { - pushFollow(FOLLOW_msg_datasize_in_atom1452); - msg_datasize13=msg_datasize(); - state._fsp--; - - // TEMPLATE REWRITE - // 190:22: -> iconst(value=$msg_datasize.st) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", (msg_datasize13!=null?((StringTemplate)msg_datasize13.getTemplate()):null))); - } - - - - } - break; - case 4 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:191:9: msg_load - { - pushFollow(FOLLOW_msg_load_in_atom1471); - msg_load14=msg_load(); - state._fsp--; - - // TEMPLATE REWRITE - // 191:18: -> iconst(value=$msg_load.st) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", (msg_load14!=null?((StringTemplate)msg_load14.getTemplate()):null))); - } - - - - } - break; - case 5 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:192:9: get_var - { - pushFollow(FOLLOW_get_var_in_atom1490); - get_var15=get_var(); - state._fsp--; - - // TEMPLATE REWRITE - // 192:18: -> iconst(value=$get_var.st) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", (get_var15!=null?((StringTemplate)get_var15.getTemplate()):null))); - } - - - - } - break; - case 6 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:193:9: INTEGER - { - INTEGER16=(Token)match(input,INTEGER,FOLLOW_INTEGER_in_atom1510); - // TEMPLATE REWRITE - // 193:17: -> iconst(value=$INTEGER.text) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", (INTEGER16!=null?INTEGER16.getText():null))); - } - - - - } - break; - case 7 : - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:194:9: hex_num - { - pushFollow(FOLLOW_hex_num_in_atom1529); - hex_num17=hex_num(); - state._fsp--; - - // TEMPLATE REWRITE - // 194:17: -> iconst(value=$hex_num.st) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", (hex_num17!=null?((StringTemplate)hex_num17.getTemplate()):null))); - } - - - - } - break; - - } - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "atom" - - - public static class hex_num_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "hex_num" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:198:1: hex_num : HEX_NUMBER -> iconst(value=dec_num); - public final hex_num_return hex_num() throws RecognitionException { - hex_num_return retval = new hex_num_return(); - retval.start = input.LT(1); - - Token HEX_NUMBER18=null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:199:4: ( HEX_NUMBER -> iconst(value=dec_num)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:200:10: HEX_NUMBER - { - HEX_NUMBER18=(Token)match(input,HEX_NUMBER,FOLLOW_HEX_NUMBER_in_hex_num1564); - - String dec_num = Utils.hexStringToDecimalString((HEX_NUMBER18!=null?HEX_NUMBER18.getText():null)); - - // TEMPLATE REWRITE - // 204:10: -> iconst(value=dec_num) - { - retval.st = templateLib.getInstanceOf("iconst",new STAttrMap().put("value", dec_num)); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "hex_num" - - - public static class var_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "var" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:207:1: var : IDENT -> refVar(id=$IDENT.text); - public final var_return var() throws RecognitionException { - var_return retval = new var_return(); - retval.start = input.LT(1); - - Token IDENT19=null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:208:5: ( IDENT -> refVar(id=$IDENT.text)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:208:7: IDENT - { - IDENT19=(Token)match(input,IDENT,FOLLOW_IDENT_in_var1609); - // TEMPLATE REWRITE - // 208:13: -> refVar(id=$IDENT.text) - { - retval.st = templateLib.getInstanceOf("refVar",new STAttrMap().put("id", (IDENT19!=null?IDENT19.getText():null))); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "var" - - - public static class storage_load_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "storage_load" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:211:1: storage_load : 'contract.storage[' bin_expr ']' -> sload(index=$bin_expr.st); - public final storage_load_return storage_load() throws RecognitionException { - storage_load_return retval = new storage_load_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope bin_expr20 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:212:7: ( 'contract.storage[' bin_expr ']' -> sload(index=$bin_expr.st)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:212:9: 'contract.storage[' bin_expr ']' - { - match(input,30,FOLLOW_30_in_storage_load1638); - pushFollow(FOLLOW_bin_expr_in_storage_load1639); - bin_expr20=bin_expr(); - state._fsp--; - - match(input,28,FOLLOW_28_in_storage_load1640); - // TEMPLATE REWRITE - // 212:40: -> sload(index=$bin_expr.st) - { - retval.st = templateLib.getInstanceOf("sload",new STAttrMap().put("index", (bin_expr20!=null?((StringTemplate)bin_expr20.getTemplate()):null))); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "storage_load" - - - public static class msg_load_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "msg_load" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:215:1: msg_load : 'msg.data[' bin_expr ']' -> calldataload(index=$bin_expr.st); - public final msg_load_return msg_load() throws RecognitionException { - msg_load_return retval = new msg_load_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope bin_expr21 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:216:7: ( 'msg.data[' bin_expr ']' -> calldataload(index=$bin_expr.st)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:216:9: 'msg.data[' bin_expr ']' - { - match(input,33,FOLLOW_33_in_msg_load1670); - pushFollow(FOLLOW_bin_expr_in_msg_load1671); - bin_expr21=bin_expr(); - state._fsp--; - - match(input,28,FOLLOW_28_in_msg_load1672); - // TEMPLATE REWRITE - // 216:33: -> calldataload(index=$bin_expr.st) - { - retval.st = templateLib.getInstanceOf("calldataload",new STAttrMap().put("index", (bin_expr21!=null?((StringTemplate)bin_expr21.getTemplate()):null))); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "msg_load" - - - public static class msg_sender_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "msg_sender" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:219:1: msg_sender : 'msg.sender' -> msdSender(; - public final msg_sender_return msg_sender() throws RecognitionException { - msg_sender_return retval = new msg_sender_return(); - retval.start = input.LT(1); - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:220:7: ( 'msg.sender' -> msdSender() - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:220:9: 'msg.sender' - { - match(input,35,FOLLOW_35_in_msg_sender1703); - // TEMPLATE REWRITE - // 220:22: -> msdSender( - { - retval.st = templateLib.getInstanceOf("msdSender"); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "msg_sender" - - - public static class msg_datasize_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "msg_datasize" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:223:1: msg_datasize : 'msg.datasize' -> msgDatasize(; - public final msg_datasize_return msg_datasize() throws RecognitionException { - msg_datasize_return retval = new msg_datasize_return(); - retval.start = input.LT(1); - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:224:7: ( 'msg.datasize' -> msgDatasize() - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:224:9: 'msg.datasize' - { - match(input,34,FOLLOW_34_in_msg_datasize1730); - // TEMPLATE REWRITE - // 224:24: -> msgDatasize( - { - retval.st = templateLib.getInstanceOf("msgDatasize"); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "msg_datasize" - - - public static class return_stmt_return extends ParserRuleReturnScope { - public StringTemplate st; - public Object getTemplate() { return st; } - public String toString() { return st==null?null:st.toString(); } - }; - - - // $ANTLR start "return_stmt" - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:227:1: return_stmt : 'return(' bin_expr ')' -> returnStmt(index=$bin_expr.st); - public final return_stmt_return return_stmt() throws RecognitionException { - return_stmt_return retval = new return_stmt_return(); - retval.start = input.LT(1); - - ParserRuleReturnScope bin_expr22 =null; - - try { - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:228:7: ( 'return(' bin_expr ')' -> returnStmt(index=$bin_expr.st)) - // E:\\WorkingArea\\ethereumJ\\src\\main\\java\\org\\ethereum\\serpent\\Serpent.g:228:9: 'return(' bin_expr ')' - { - match(input,36,FOLLOW_36_in_return_stmt1757); - pushFollow(FOLLOW_bin_expr_in_return_stmt1758); - bin_expr22=bin_expr(); - state._fsp--; - - match(input,16,FOLLOW_16_in_return_stmt1759); - // TEMPLATE REWRITE - // 228:31: -> returnStmt(index=$bin_expr.st) - { - retval.st = templateLib.getInstanceOf("returnStmt",new STAttrMap().put("index", (bin_expr22!=null?((StringTemplate)bin_expr22.getTemplate()):null))); - } - - - - } - - retval.stop = input.LT(-1); - - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "return_stmt" - - // Delegated rules - - - - public static final BitSet FOLLOW_gen_body_in_program60 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_set_var_in_test_1120 = new BitSet(new long[]{0x0000000000000102L}); - public static final BitSet FOLLOW_get_var_in_test_1146 = new BitSet(new long[]{0x0000000000000102L}); - public static final BitSet FOLLOW_set_var_in_gen_body201 = new BitSet(new long[]{0x0000001140000102L}); - public static final BitSet FOLLOW_storage_save_in_gen_body227 = new BitSet(new long[]{0x0000001140000102L}); - public static final BitSet FOLLOW_return_stmt_in_gen_body253 = new BitSet(new long[]{0x0000001140000102L}); - public static final BitSet FOLLOW_if_else_stmt_in_gen_body281 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_32_in_if_stmt328 = new BitSet(new long[]{0x0000000E40001380L}); - public static final BitSet FOLLOW_unr_expr_in_if_stmt330 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_21_in_if_stmt332 = new BitSet(new long[]{0x0000001140000100L}); - public static final BitSet FOLLOW_gen_body_in_if_stmt334 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_32_in_if_else_stmt448 = new BitSet(new long[]{0x0000000E40001380L}); - public static final BitSet FOLLOW_unr_expr_in_if_else_stmt450 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_21_in_if_else_stmt452 = new BitSet(new long[]{0x00000011C0000100L}); - public static final BitSet FOLLOW_gen_body_in_if_else_stmt456 = new BitSet(new long[]{0x0000000080000000L}); - public static final BitSet FOLLOW_31_in_if_else_stmt467 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_21_in_if_else_stmt469 = new BitSet(new long[]{0x0000001140000100L}); - public static final BitSet FOLLOW_gen_body_in_if_else_stmt473 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_var_in_set_var601 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_24_in_set_var614 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_set_var618 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_var_in_get_var670 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_12_in_unr_expr732 = new BitSet(new long[]{0x0000000E40001380L}); - public static final BitSet FOLLOW_cond_expr_in_unr_expr742 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_bin_expr_in_cond_expr774 = new BitSet(new long[]{0x000000000EC00002L}); - public static final BitSet FOLLOW_25_in_cond_expr803 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_cond_expr807 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_22_in_cond_expr843 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_cond_expr848 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_23_in_cond_expr882 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_cond_expr887 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_27_in_cond_expr921 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_cond_expr926 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_26_in_cond_expr960 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_cond_expr965 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_30_in_storage_save1024 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_storage_save1027 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_storage_save1028 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_24_in_storage_save1030 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_storage_save1034 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_atom_in_bin_expr1072 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_18_in_bin_expr1090 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1095 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_19_in_bin_expr1126 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1131 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_17_in_bin_expr1162 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1167 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_20_in_bin_expr1198 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1203 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_29_in_bin_expr1234 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1239 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_15_in_bin_expr1270 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1275 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_14_in_bin_expr1306 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1310 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_13_in_bin_expr1340 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_atom_in_bin_expr1344 = new BitSet(new long[]{0x00000000201EE002L}); - public static final BitSet FOLLOW_storage_load_in_atom1414 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_msg_sender_in_atom1433 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_msg_datasize_in_atom1452 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_msg_load_in_atom1471 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_get_var_in_atom1490 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_INTEGER_in_atom1510 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_hex_num_in_atom1529 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_HEX_NUMBER_in_hex_num1564 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_IDENT_in_var1609 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_30_in_storage_load1638 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_storage_load1639 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_storage_load1640 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_33_in_msg_load1670 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_msg_load1671 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_msg_load1672 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_35_in_msg_sender1703 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_34_in_msg_datasize1730 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_36_in_return_stmt1757 = new BitSet(new long[]{0x0000000E40000380L}); - public static final BitSet FOLLOW_bin_expr_in_return_stmt1758 = new BitSet(new long[]{0x0000000000010000L}); - public static final BitSet FOLLOW_16_in_return_stmt1759 = new BitSet(new long[]{0x0000000000000002L}); -} diff --git a/ethereumj-core/src/test/java/org/ethereum/serpent/TestCompile.java b/ethereumj-core/src/test/java/org/ethereum/serpent/TestCompile.java deleted file mode 100644 index 584fa185..00000000 --- a/ethereumj-core/src/test/java/org/ethereum/serpent/TestCompile.java +++ /dev/null @@ -1,991 +0,0 @@ -package org.ethereum.serpent; - -import org.antlr.runtime.ANTLRStringStream; -import org.antlr.runtime.CharStream; -import org.antlr.runtime.CommonTokenStream; -import org.antlr.runtime.RecognitionException; -import org.antlr.stringtemplate.StringTemplateGroup; -import org.antlr.stringtemplate.language.AngleBracketTemplateLexer; -import org.ethereum.util.Utils; -import org.junit.Test; - -import java.io.FileNotFoundException; -import java.io.FileReader; - -import static org.junit.Assert.*; - -public class TestCompile { - -/* bin_expr - ['+', 2, 1, ['<1>', '<0>', 'ADD']], V - ['-', 2, 1, ['<1>', '<0>', 'SUB']], V - ['*', 2, 1, ['<1>', '<0>', 'MUL']], V - ['/', 2, 1, ['<1>', '<0>', 'DIV']], V - ['^', 2, 1, ['<1>', '<0>', 'EXP']], V - ['%', 2, 1, ['<1>', '<0>', 'MOD']], V - ['#/', 2, 1, ['<1>', '<0>', 'SDIV']], V - ['#%', 2, 1, ['<1>', '<0>', 'SMOD']], V -*/ - - @Test /* Test one symbol */ - public void test0() throws FileNotFoundException, RecognitionException { - - CharStream stream = new ANTLRStringStream("" + "A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A", retVal.getTemplate().toString()); - } - - @Test /* Test ADD 1*/ - public void test1() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A + B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B ADD", retVal.getTemplate().toString()); - } - - @Test /* Test ADD 2*/ - public void test2() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A + B + C1"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B ADD C1 ADD", retVal.getTemplate().toString()); - } - - @Test /* Test SUB 1*/ - public void test3() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A - B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B SUB", retVal.getTemplate().toString()); - } - - @Test /* Test MUL 1*/ - public void test4() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A * B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B MUL", retVal.getTemplate().toString()); - } - - - @Test /* Test DIV 1*/ - public void test5() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A / B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B DIV", retVal.getTemplate().toString()); - } - - @Test /* Test EXP 1*/ - public void test6() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A ^ B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B EXP", retVal.getTemplate().toString()); - } - - @Test /* Test MOD 1*/ - public void test7() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A % B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B MOD", retVal.getTemplate().toString()); - } - - @Test /* Test SDIV 1*/ - public void test8() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A #/ B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B SDIV", retVal.getTemplate().toString()); - } - - @Test /* Test SMOD 1*/ - public void test9() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A #% B"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B SMOD", retVal.getTemplate().toString()); - } - - @Test /* Test multi binary operators 1*/ - public void test10() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A / B - C + D * ET"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B DIV C SUB D ADD ET MUL", retVal.getTemplate().toString()); - - } - - @Test /* Test multi binary operators 2*/ - public void test11() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A / B - C + D * ET % ET2 ^ RO + RO2 #/ COOL #% HOT"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("A B DIV C SUB D ADD ET MUL ET2 MOD RO EXP RO2 ADD COOL SDIV HOT SMOD", - retVal.getTemplate().toString()); - } - -/* - ['==', 2, 1, ['<1>', '<0>', 'EQ']], V - ['<', 2, 1, ['<1>', '<0>', 'LT']], V - ['<=', 2, 1, ['<1>', '<0>', 'GT', 'NOT']], V - ['>', 2, 1, ['<1>', '<0>', 'GT']], V - ['>=', 2, 1, ['<1>', '<0>', 'LT', 'NOT']], V - ['!', 1, 1, ['<0>', 'NOT']], V -*/ - - @Test /* Test '==' 1*/ - public void test12() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A + B == B + A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.cond_expr_return retVal = parser.cond_expr(); - - assertEquals("A B ADD B A ADD EQ", - retVal.getTemplate().toString()); - } - - @Test /* Test '<' 1*/ - public void test13() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A + C < C + A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.cond_expr_return retVal = parser.cond_expr(); - - assertEquals("A C ADD C A ADD LT", - retVal.getTemplate().toString()); - } - - @Test /* Test '<=' 1*/ - public void test14() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A + C <= C + A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.cond_expr_return retVal = parser.cond_expr(); - - assertEquals("A C ADD C A ADD GT NOT", - retVal.getTemplate().toString()); - } - - @Test /* Test '>' 1*/ - public void test15() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A + C > C + A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.cond_expr_return retVal = parser.cond_expr(); - - assertEquals("A C ADD C A ADD GT", - retVal.getTemplate().toString()); - } - - - @Test /* Test '>=' 1*/ - public void test16() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A + C >= C + A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.cond_expr_return retVal = parser.cond_expr(); - - assertEquals("A C ADD C A ADD LT NOT", - retVal.getTemplate().toString()); - } - - @Test /* Test '!' 1 */ - public void test17() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "!A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.unr_expr_return retVal = parser.unr_expr(); - - assertEquals("A NOT", - retVal.getTemplate().toString()); - } - - - @Test /* Test '!' 2 */ - public void test18() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "!!A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.unr_expr_return retVal = parser.unr_expr(); - - assertEquals("A NOT NOT", - retVal.getTemplate().toString()); - } - - @Test /* Test '!' 3 */ - public void test19() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.unr_expr_return retVal = parser.unr_expr(); - - assertEquals("A NOT NOT", - retVal.getTemplate().toString()); - } - - @Test /* Test '!' 4 */ - public void test20() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "!!!!!!!!!A"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.unr_expr_return retVal = parser.unr_expr(); - - assertEquals("A NOT", - retVal.getTemplate().toString()); - } - - - @Test /* Test set var '=' 1 */ - public void test21() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A=10 \n B=20 \n C=30"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.program_return retVal = parser.program(); - - assertEquals("10 0 MSTORE 20 32 MSTORE 30 64 MSTORE", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test set var '=' 2 */ - public void test22() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "A=10 \n B=20 \n A=30 \n B=40"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.program_return retVal = parser.program(); - - assertEquals("10 0 MSTORE 20 32 MSTORE 30 0 MSTORE 40 32 MSTORE", - retVal.getTemplate().toString().trim()); - - } - - @Test /* Test if stmt 1 */ - public void test23() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "if a==10:\n b=20 \nelse: \n b=30"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.if_else_stmt_return retVal = parser.if_else_stmt(); - - assertEquals("", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test contract.storage[x] 1 */ - public void test24() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "contract.storage[0]"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.storage_load_return retVal = parser.storage_load(); - - assertEquals("0 SLOAD", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test contract.storage[x] 2 */ - public void test25() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "contract.storage[100]"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.storage_load_return retVal = parser.storage_load(); - - assertEquals("100 SLOAD", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test contract.storage[x]=y 1 */ - public void test26() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "contract.storage[100]=200"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.storage_save_return retVal = parser.storage_save(); - - assertEquals("200 100 SSTORE", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test contract.storage[x]=y 1_ */ - public void test26_1() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "contract.storage[3+4]=200"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.storage_save_return retVal = parser.storage_save(); - - assertEquals("200 3 4 ADD SSTORE", - retVal.getTemplate().toString().trim()); - } - - - @Test /* Test contract.storage[x]=y 2 */ - public void test27() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "contract.storage[100]=200+100"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.storage_save_return retVal = parser.storage_save(); - - assertEquals("200 100 ADD 100 SSTORE", // todo: have to optimize it somewhere in the future - retVal.getTemplate().toString().trim()); - } - - @Test /* Test msg.data[x] 1 */ - public void test28() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "msg.data[0]"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.msg_load_return retVal = parser.msg_load(); - - assertEquals("0 32 MULL CALLDATALOAD", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test msg.data[x] 2 */ - public void test29() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "msg.data[10+ 20]"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.msg_load_return retVal = parser.msg_load(); - - assertEquals("10 20 ADD 32 MUL CALLDATALOAD", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test msg.data[x] 3 */ - public void test30() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "msg.data[0] + msg.data[2]"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.bin_expr_return retVal = parser.bin_expr(); - - assertEquals("0 32 MUL CALLDATALOAD 2 32 MUL CALLDATALOAD ADD", - retVal.getTemplate().toString().trim()); - } - - - @Test /* Test multi */ - public void test31() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "contract.storage[msg.data[0]] = msg.data[1]\n" + - ""); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.storage_save_return retVal = parser.storage_save(); - - assertEquals("1 32 MUL CALLDATALOAD 0 32 MUL CALLDATALOAD SSTORE", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test multi */ - public void test32() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "!contract.storage[msg.data[0]]"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.unr_expr_return retVal = parser.unr_expr(); - - assertEquals("0 32 MUL CALLDATALOAD SLOAD NOT", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test get_var 1 */ - public void test33() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "a=20\nb=20\nb=="); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.test_1_return retVal = parser.test_1(); - - assertEquals("20 0 MSTORE 20 32 MSTORE 32 MLOAD", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test get_var 2 */ - public void test34() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "a1=20\nb4=20\n\na4=20\na4=="); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.test_1_return retVal = parser.test_1(); - - assertEquals("20 0 MSTORE 20 32 MSTORE 20 64 MSTORE 64 MLOAD", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test if_stmt with (!)cond */ - public void test35() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - "if !contract.storage[msg.data[0]]:\n" + - " contract.storage[msg.data[0]] = msg.data[1]\n" + - " return(1)\n" + - "else:\n" + - " return(0)\n"); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.if_else_stmt_return retVal = parser.if_else_stmt(); - - assertEquals("", - retVal.getTemplate().toString().trim()); - } - - @Test /* Test complex contract with if_else_stmt inside else body */ - public void test36() throws FileNotFoundException, RecognitionException { - - CharStream stream = - new ANTLRStringStream("" + - " contract.storage[0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826] = 1000000\n" + - " if msg.datasize == 1:\n" + - " addr = msg.data[0]\n" + - " return(contract.storage[addr])\n" + - " else:\n" + - " from = msg.sender\n" + - " fromvalue = contract.storage[from]\n" + - " to = msg.data[0]\n" + - " value = msg.data[1]\n" + - " if fromvalue >= value:\n" + - " contract.storage[from] = fromvalue - value\n" + - " contract.storage[to] = contract.storage[to] + value\n" + - " return(1)\n" + - " else:\n" + - " return(0)\n"); - - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.gen_body_return retVal = parser.gen_body(); - - assertEquals("", - retVal.getTemplate().toString().trim()); - } - - - @Test /* Test for hex number */ - public void test37() throws FileNotFoundException, RecognitionException { - - String hexNum = "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826"; - - CharStream stream = - new ANTLRStringStream(hexNum); - - SerpentLexer lex = new SerpentLexer(stream); - CommonTokenStream tokens = new CommonTokenStream(lex); - SerpentParser parser = new SerpentParser(tokens); - - String userDir = System.getProperty("user.dir"); - String templateFileName = userDir + "\\src\\main\\java\\org\\ethereum\\serpent\\Serpent2Asm.stg"; - - StringTemplateGroup template = new StringTemplateGroup(new FileReader(templateFileName), - AngleBracketTemplateLexer.class); - parser.setTemplateLib(template); - - SerpentParser.hex_num_return retVal = parser.hex_num(); - - assertEquals(Utils.hexStringToDecimalString(hexNum), - retVal.getTemplate().toString().trim()); - } -}