00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027
#ifndef SHPARSER_HPP
00028
#define SHPARSER_HPP
00029
00030
#include "ShDllExport.hpp"
00031
#include "ShCtrlGraph.hpp"
00032
00033
namespace SH {
00034
00039 class
00040
SH_DLLEXPORT ShParser {
00041
public:
00044
static void parse(
ShCtrlGraphNodePtr& head,
00045
ShCtrlGraphNodePtr& tail,
00046
ShBlockListPtr blocks);
00047
00048
private:
00049
static void parseStmts(
ShCtrlGraphNodePtr& head,
00050
ShCtrlGraphNodePtr& tail,
00051
ShBlockListPtr blocks);
00052
static void parseIf(
ShCtrlGraphNodePtr& head,
00053
ShCtrlGraphNodePtr& tail,
00054
ShBlockListPtr blocks);
00055
static void parseFor(
ShCtrlGraphNodePtr& head,
00056
ShCtrlGraphNodePtr& tail,
00057
ShBlockListPtr blocks);
00058
static void parseWhile(
ShCtrlGraphNodePtr& head,
00059
ShCtrlGraphNodePtr& tail,
00060
ShBlockListPtr blocks);
00061
static void parseDo(
ShCtrlGraphNodePtr& head,
00062
ShCtrlGraphNodePtr& tail,
00063
ShBlockListPtr blocks);
00064
00065
00066 ShParser();
00067 ShParser(
const ShParser&);
00068 ~ShParser();
00069 };
00070
00071 }
00072
00073
#endif