Goose  Artifact [473bf3facc]

Artifact 473bf3faccf16d0bfd8f55ce2f090fe2effc8fdeee02b5311b063ab050082c04:

  • File bs/empathy.cpp — part of check-in [5aab57179e] at 2019-01-22 22:46:29 on branch trunk — Builtins: implemented the comma operator. (user: achavasse size: 936)

#include "ir/ir.h"
#include "sema/sema.h"
#include "lex/lexer.h"
#include "parse/parse.h"
#include "builtins/builtins.h"

using namespace std;
using namespace empathy;
using namespace empathy::util;

int main( int argc, char** argv )
{
    // Just a dumping place for simple test code for now.
    auto filename = make_shared< string >( "em/lib/empathy.em" );

    ifstream sourcefile( filename->c_str() );
    if( !sourcefile.good() )
    {
        cout << "can't open '" << *filename << "'\n";
        return EXIT_FAILURE;
    }

    // Simple parser test
    auto pEnv = make_shared< sema::Env >();
    builtins::SetupBuiltins( *pEnv );
    sema::Context c( pEnv, TVEC( TSID( e0 ) ) );
    auto r = make_shared< parse::Resolver >( make_shared< Lexer >( sourcefile, filename ), c );
    parse::Parser p( r );

    auto parsed = p.parse();
    if( parsed )
        cout << ValueToIRExpr( *parsed ) << endl;

    return EXIT_SUCCESS;
}