Skip to content

Instantly share code, notes, and snippets.

View cgewecke's full-sized avatar
🐢

cgewecke cgewecke

🐢
View GitHub Profile
@cgewecke
cgewecke / declarativeExpressionAST.js
Last active January 9, 2017 19:58
DeclarativeExpression AST
// Test contract
contract DeclarativeExpressions {
uint a;
uint b = 7;
uint b2=0;
uint public c;
uint constant public d;
uint public constant e;
uint private constant f = 7;
struct S { uint q;}

Proposed AST

Example 1 - Function body

function a(){
  uint x = 5
}
{

Proposed AST for:

uint [ 7 ] x;
{
 "type": "StateVariableDeclaration",
 "name": "x",
 "literal": {
 "type": "Type",
@cgewecke
cgewecke / tuples.js
Last active June 8, 2017 01:29
AST for solidity-parser PR
/*
AST for:
var (x, y) = (10, 20);
var (a, b) = getMyTuple();
var (,c) = (10, 20);
var (d,,) = (10, 20, 30);
var (,e,,f,) = (10, 20, 30, 40, 50);
*/
{

Test

 contract Ballot {

    struct Voter {
        uint weight;
        bool voted;
    }
    
    function abstain() returns (bool) {

AST output for:

Voter airbnb = Voter({
    weight: 2,
    voted: true,
  });
{

AST for:

assembly {
    mstore(0x40, sload(0))
    address(0)
    byte(0)
    return(0x40,32)
}
Compiling ./contracts/Example.sol...
Compiling ./contracts/IsLibrary.sol...
Compiling ./contracts/Loop.sol...
Compiling ./contracts/Migrations.sol...
Compiling ./contracts/PayableExample.sol...
Compiling ./contracts/UsesExample.sol...
Compiling ./contracts/UsesLibrary.sol...
Writing artifacts to ./build/contracts
Compiling ./contracts/Example.sol...
Compiling ./contracts/Migrations.sol...
Writing artifacts to ./build/contracts
Migrations dry-run (simulation)
===============================
> Network name: 'ropsten-fork'
> Network id: 1337
Compiling ./contracts/Abstract.sol...
Compiling ./contracts/Example.sol...
Compiling ./contracts/ExampleAssert.sol...
Compiling ./contracts/ExampleRevert.sol...
Compiling ./contracts/Loops.sol...
Compiling ./contracts/Migrations.sol...
Compiling ./contracts/RevertWithReason.sol...
Compiling ./contracts/UsesExample.sol...
Writing artifacts to ./build/contracts