aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2006-08-21 05:54:52 +0000
committerMike Buland <eichlan@xagasoft.com>2006-08-21 05:54:52 +0000
commit4887f62bea708f24e03b3f926f2698c60a94c807 (patch)
tree77271e92cf517cbc2846897f7482c9df5efee124 /src
parentdf5286fe3bca619beb4771da1ffa8ace9613e9e5 (diff)
downloadbuild-4887f62bea708f24e03b3f926f2698c60a94c807.tar.gz
build-4887f62bea708f24e03b3f926f2698c60a94c807.tar.bz2
build-4887f62bea708f24e03b3f926f2698c60a94c807.tar.xz
build-4887f62bea708f24e03b3f926f2698c60a94c807.zip
Getting there, it compiles, now for the fun sophisticated pieces where the
builder itself tells the lexer which tokens are functions, and which are target types.
Diffstat (limited to '')
-rw-r--r--src/build.l1
-rw-r--r--src/build.y4
-rw-r--r--src/builder.cpp30
-rw-r--r--src/builder.h31
-rw-r--r--src/main.cpp52
-rw-r--r--src/viewer.cpp9
-rw-r--r--src/viewer.h17
7 files changed, 114 insertions, 30 deletions
diff --git a/src/build.l b/src/build.l
index b174681..9a15719 100644
--- a/src/build.l
+++ b/src/build.l
@@ -31,6 +31,7 @@ std::string strbuf;
31"produces" return TOK_PRODUCES; 31"produces" return TOK_PRODUCES;
32"check" return TOK_CHECK; 32"check" return TOK_CHECK;
33"clean" return TOK_CLEAN; 33"clean" return TOK_CLEAN;
34"target" return TOK_TARGET;
34 35
35\n+ { 36\n+ {
36 yylloc->last_line += yyleng; 37 yylloc->last_line += yyleng;
diff --git a/src/build.y b/src/build.y
index a624418..d852c4c 100644
--- a/src/build.y
+++ b/src/build.y
@@ -2,10 +2,6 @@
2%{ 2%{
3# include <string> 3# include <string>
4# include "builder.h" 4# include "builder.h"
5# include "action.h"
6# include "command.h"
7# include "rule.h"
8# include "filetarget.h"
9# include "build.tab.h" 5# include "build.tab.h"
10void yyerror( YYLTYPE *locp, Builder &bld, char const *msg ); 6void yyerror( YYLTYPE *locp, Builder &bld, char const *msg );
11%} 7%}
diff --git a/src/builder.cpp b/src/builder.cpp
new file mode 100644
index 0000000..1ecbf05
--- /dev/null
+++ b/src/builder.cpp
@@ -0,0 +1,30 @@
1#include "builder.h"
2
3Builder::Builder()
4{
5}
6
7Builder::~Builder()
8{
9}
10
11void yyparse( Builder &bld );
12
13void Builder::load( const std::string &sFile )
14{
15 file = sFile;
16 scanBegin();
17 yyparse( *this );
18 scanEnd();
19}
20
21void Builder::error( YYLTYPE *locp, const char *msg )
22{
23 printf("%s\n", msg );
24}
25
26void Builder::error( const std::string &msg )
27{
28 printf("%s\n", msg.c_str() );
29}
30
diff --git a/src/builder.h b/src/builder.h
new file mode 100644
index 0000000..9c146ea
--- /dev/null
+++ b/src/builder.h
@@ -0,0 +1,31 @@
1#ifndef BUILDER_H
2#define BUILDER_H
3
4#include <stdint.h>
5#include <string>
6#include "build.tab.h"
7
8class Builder;
9
10#define YY_DECL int yylex( YYSTYPE *yylval_param, YYLTYPE *yylloc_param, Builder &bld )
11YY_DECL;
12
13class Builder
14{
15public:
16 Builder();
17 virtual ~Builder();
18
19 void error( YYLTYPE *locp, const char *msg );
20 void error( const std::string &msg );
21
22 void load( const std::string &sFile );
23
24private:
25 std::string file;
26 void scanBegin();
27 void scanEnd();
28
29};
30
31#endif
diff --git a/src/main.cpp b/src/main.cpp
index 2b4baa5..9168df7 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,7 +1,7 @@
1#include "builder.h" 1#include "builder.h"
2#include "viewerplain.h" 2//#include "viewerplain.h"
3#include "viewerpercent.h" 3//#include "viewerpercent.h"
4#include "viewermake.h" 4//#include "viewermake.h"
5#include "paramproc.h" 5#include "paramproc.h"
6#include "staticstring.h" 6#include "staticstring.h"
7 7
@@ -26,12 +26,12 @@ public:
26 "Print out a debug dump of the read build.conf", "true" ); 26 "Print out a debug dump of the read build.conf", "true" );
27 addParam("help", mkproc(ParamProc::help), 27 addParam("help", mkproc(ParamProc::help),
28 "This help"); 28 "This help");
29 pViewer = new ViewerPlain; 29 //pViewer = new ViewerPlain;
30 } 30 }
31 31
32 virtual ~Param() 32 virtual ~Param()
33 { 33 {
34 delete pViewer; 34 //delete pViewer;
35 } 35 }
36 36
37 virtual int cmdParam( int argc, char *argv[] ) 37 virtual int cmdParam( int argc, char *argv[] )
@@ -47,20 +47,20 @@ public:
47 47
48 int procViewPercent( int argc, char *argv[] ) 48 int procViewPercent( int argc, char *argv[] )
49 { 49 {
50 delete pViewer; 50 //delete pViewer;
51 pViewer = new ViewerPercent; 51 //pViewer = new ViewerPercent;
52 } 52 }
53 53
54 int procViewMake( int argc, char *argv[] ) 54 int procViewMake( int argc, char *argv[] )
55 { 55 {
56 delete pViewer; 56 //delete pViewer;
57 pViewer = new ViewerMake; 57 //pViewer = new ViewerMake;
58 } 58 }
59 59
60 std::string sCache; 60 std::string sCache;
61 std::string sFile; 61 std::string sFile;
62 StaticString sAction; 62 StaticString sAction;
63 Viewer *pViewer; 63 //Viewer *pViewer;
64 bool bDebug; 64 bool bDebug;
65 65
66private: 66private:
@@ -71,31 +71,31 @@ int main( int argc, char *argv[] )
71 Param prm; 71 Param prm;
72 prm.process( argc, argv ); 72 prm.process( argc, argv );
73 73
74 Builder bld( *prm.pViewer ); 74 Builder bld;//*prm.pViewer );
75 75
76 bld.setCache( prm.sCache ); 76 //bld.setCache( prm.sCache );
77 try 77 //try
78 { 78 //{
79 bld.load( prm.sFile.c_str() ); 79 bld.load( prm.sFile.c_str() );
80 } 80 //}
81 catch( BuildException &e ) 81 //catch( BuildException &e )
82 { 82 //{
83 fputs( e.what(), stderr ); 83 // fputs( e.what(), stderr );
84 fputs( "\n", stderr ); 84 // fputs( "\n", stderr );
85 return 1; 85 // return 1;
86 } 86 //}
87 87
88 if( prm.bDebug ) 88 if( prm.bDebug )
89 { 89 {
90 printf("\n\n----------\nDebug dump\n----------\n"); 90 printf("\n\n----------\nDebug dump\n----------\n");
91 bld.debug(); 91 //bld.debug();
92 } 92 }
93 else 93 else
94 { 94 {
95 if( prm.sAction > 0 ) 95 //if( prm.sAction > 0 )
96 bld.build( prm.sAction ); 96 // bld.build( prm.sAction );
97 else 97 //else
98 bld.build(); 98 // bld.build();
99 } 99 }
100} 100}
101 101
diff --git a/src/viewer.cpp b/src/viewer.cpp
new file mode 100644
index 0000000..93b2ac1
--- /dev/null
+++ b/src/viewer.cpp
@@ -0,0 +1,9 @@
1#include "viewer.h"
2
3Viewer::Viewer()
4{
5}
6
7Viewer::~Viewer()
8{
9}
diff --git a/src/viewer.h b/src/viewer.h
new file mode 100644
index 0000000..04f4ea7
--- /dev/null
+++ b/src/viewer.h
@@ -0,0 +1,17 @@
1#ifndef VIEWER_H
2#define VIEWER_H
3
4#include <stdint.h>
5
6
7class Viewer
8{
9public:
10 Viewer();
11 virtual ~Viewer();
12
13private:
14
15};
16
17#endif