X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramparser.h;h=e36604736b9f5cf4dfd28548038b87c371d76834;hp=903e58346f7a425a365cccfcf162f56caa75fa6e;hb=HEAD;hpb=11520b2b95f4242b3ca4d2d3d14a0f2b5c1623f1 diff --git a/source/programparser.h b/source/programparser.h deleted file mode 100644 index 903e5834..00000000 --- a/source/programparser.h +++ /dev/null @@ -1,115 +0,0 @@ -#ifndef MSP_GL_PROGRAMPARSER_H_ -#define MSP_GL_PROGRAMPARSER_H_ - -#include -#include -#include -#include -#include -#include "programsyntax.h" - -namespace Msp { -namespace GL { - -class ProgramParser -{ -private: - enum OperatorType - { - NO_OPERATOR, - BINARY, - PREFIX, - POSTFIX - }; - - enum Associativity - { - LEFT_TO_RIGHT, - RIGHT_TO_LEFT - }; - - struct Operator - { - const char token[4]; - unsigned precedence; - OperatorType type; - Associativity assoc; - }; - - std::string source; - std::string source_name; - unsigned current_line; - std::string::const_iterator iter; - std::string::const_iterator source_end; - bool allow_preprocess; - bool allow_stage_change; - std::string last_token; - std::deque next_tokens; - ProgramSyntax::Module *module; - ProgramSyntax::Stage *cur_stage; - std::set declared_types; - - static Operator operators[]; - -public: - ProgramParser(); - ~ProgramParser(); - - ProgramSyntax::Module &parse(const std::string &, const std::string &); - ProgramSyntax::Module &parse(IO::Base &, const std::string &); - -private: - void parse_source(); - - std::string format_error(const std::string &); - std::string format_syntax_error(const std::string &); - - const std::string &peek_token(unsigned = 0); - const std::string &parse_token(); - std::string parse_token_(); - std::string parse_identifier(); - std::string parse_number(); - std::string parse_other(); - void skip_comment_and_whitespace(); - void expect(const std::string &); - std::string expect_type(); - std::string expect_identifier(); - bool check(const std::string &); - - static bool is_interface_qualifier(const std::string &); - static bool is_sampling_qualifier(const std::string &); - static bool is_interpolation_qualifier(const std::string &); - static bool is_precision_qualifier(const std::string &); - static bool is_qualifier(const std::string &); - static bool is_builtin_type(const std::string &); - bool is_type(const std::string &); - bool is_identifier(const std::string &); - - void preprocess(); - void preprocess_pragma(); - void preprocess_pragma_msp(); - void preprocess_stage(); - - RefPtr parse_global_declaration(); - RefPtr parse_statement(); - RefPtr parse_import(); - RefPtr parse_precision(); - RefPtr parse_layout(); - void parse_block(ProgramSyntax::Block &, bool); - RefPtr parse_expression(unsigned = 0); - RefPtr parse_binary(const RefPtr &, const Operator *); - RefPtr parse_function_call(const ProgramSyntax::VariableReference &); - RefPtr parse_struct_declaration(); - RefPtr parse_variable_declaration(); - RefPtr parse_function_declaration(); - RefPtr parse_interface_block(); - RefPtr parse_conditional(); - RefPtr parse_iteration(); - RefPtr parse_passthrough(); - RefPtr parse_return(); -}; - -} // namespace GL -} // namespace Msp - -#endif