blob: 1365f1f4dd107fa5ab1de82b84739ffb9544be7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#include "config.h"
#include "number.h"
#include "packedintarray.h"
#include "lexer.h"
#include "token.h"
#include "parser.h"
#include "options.h"
#include "scriptengine.h"
#include <math.h>
#include <sys/time.h>
#include <bu/file.h>
#include <bu/sio.h>
#include <bu/streamstack.h>
using namespace Bu;
void numResult( const class Number &num )
{
println("==> %1").arg( num );
}
void dispError( const Bu::String &sMsg )
{
println(sMsg);
}
void dispMessage( const Bu::String &sMsg )
{
println(sMsg);
}
int main( int argc, char *argv[] )
{
try
{
Options opt( argc, argv );
println(CLIC_VERSION_STR);
println("Try \\exit, \\help, \\scale, and \\radix commands.");
println("");
Lexer lex( sioRaw );
lex.setScale( opt.getScale() );
lex.setRadix( opt.getRadix() );
Parser parser( lex );
ScriptEngine se;
se.sigNumResult = Bu::slot(numResult);
se.sigError = Bu::slot(dispError);
se.sigMessage = Bu::slot(dispMessage);
for(;;)
{
Expression *pExpr = parser.parse();
se.exec( pExpr );
delete pExpr;
}
}
catch( std::exception &e )
{
Bu::println("Error: %1").arg( e.what() );
}
return 0;
}
|