Initial commit
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
source = parse.cpp parserstate.cpp
|
||||
objects = parserstate.o
|
||||
executables = parse
|
||||
|
||||
CPP = g++
|
||||
CPPFLAGS = -g --std=c++0x -pedantic -Werror -Wall -Wextra -Weffc++ -fno-implicit-templates -pipe -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=500 -D_GNU_SOURCE
|
||||
LIBS =
|
||||
|
||||
all: $(executables)
|
||||
|
||||
parse: parse.o $(objects)
|
||||
$(CPP) $(CPPFLAGS) -o $@ $+ $(LIBS)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CPP) $(CPPFLAGS) -c -o $@ $<
|
||||
|
||||
include depend
|
||||
|
||||
depend: $(source)
|
||||
$(CPP) $(INCLUDES) -MM $(source) > depend
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-rm -f $(executables) depend *.o *.rpo
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "parser.hpp"
|
||||
|
||||
int main( void )
|
||||
{
|
||||
Parser::Parser parser;
|
||||
|
||||
return 0;
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
#ifndef PARSE_HPP
|
||||
#define PARSE_HPP
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
#include "parsertransition.hpp"
|
||||
#include "parseraction.hpp"
|
||||
#include "parserstate.hpp"
|
||||
|
||||
namespace Parser {
|
||||
class Parser {
|
||||
private:
|
||||
State *state;
|
||||
|
||||
public:
|
||||
Parser() : state( NULL ) {}
|
||||
Parser( const Parser & );
|
||||
bool operator=( const Parser & );
|
||||
void input( wchar_t c ); /* should return list of actions */
|
||||
~Parser() {}
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,27 @@
|
||||
#ifndef PARSERACTION_HPP
|
||||
#define PARSERACTION_HPP
|
||||
|
||||
namespace Parser {
|
||||
class Action
|
||||
{
|
||||
public:
|
||||
virtual ~Action();
|
||||
};
|
||||
|
||||
class Ignore : public Action {};
|
||||
class Print : public Action {};
|
||||
class Execute : public Action {};
|
||||
class Clear : public Action {};
|
||||
class Collect : public Action {};
|
||||
class Param : public Action {};
|
||||
class ESC_Dispatch : public Action {};
|
||||
class CSI_Dispatch : public Action {};
|
||||
class Hook : public Action {};
|
||||
class Put : public Action {};
|
||||
class Unhook : public Action {};
|
||||
class OSC_Start : public Action {};
|
||||
class OSC_Put : public Action {};
|
||||
class OSC_End : public Action {};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
#include "parserstate.hpp"
|
||||
@@ -0,0 +1,42 @@
|
||||
#ifndef PARSERSTATE_HPP
|
||||
#define PARSERSTATE_HPP
|
||||
|
||||
#include "parsertransition.hpp"
|
||||
|
||||
namespace Parser {
|
||||
class State
|
||||
{
|
||||
private:
|
||||
virtual Action enter( void ) { return Ignore(); };
|
||||
virtual Action leave( void ) { return Ignore(); };
|
||||
|
||||
virtual Transition input( wchar_t ch __attribute__ ((unused)) ) {
|
||||
return IgnoreTransition();
|
||||
}
|
||||
|
||||
static Transition anywhere( wchar_t ch );
|
||||
|
||||
public:
|
||||
virtual ~State();
|
||||
};
|
||||
|
||||
class Ground : public State {};
|
||||
class Esc : public State {};
|
||||
class Esc_Intermediate : public State {};
|
||||
|
||||
class CSI_Entry : public State {};
|
||||
class CSI_Param : public State {};
|
||||
class CSI_Intermediate : public State {};
|
||||
class CSI_Ignore : public State {};
|
||||
|
||||
class DCS_Entry : public State {};
|
||||
class DCS_Param : public State {};
|
||||
class DCS_Intermediate : public State {};
|
||||
class DCS_Passthrough : public State {};
|
||||
class DCS_Ignore : public State {};
|
||||
|
||||
class OCS_String : public State {};
|
||||
class SOS_PM_APC_String : public State {};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,34 @@
|
||||
#ifndef PARSERTRANSITION_HPP
|
||||
#define PARSERTRANSITION_HPP
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "parseraction.hpp"
|
||||
|
||||
class State;
|
||||
|
||||
namespace Parser {
|
||||
class Transition
|
||||
{
|
||||
public:
|
||||
Action action;
|
||||
State *next_state;
|
||||
|
||||
Transition();
|
||||
Transition( const Transition & );
|
||||
bool operator=( const Transition & );
|
||||
virtual ~Transition();
|
||||
};
|
||||
|
||||
class IgnoreTransition : public Transition
|
||||
{
|
||||
public:
|
||||
IgnoreTransition()
|
||||
{
|
||||
action = Ignore();
|
||||
next_state = NULL;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user