ast_factory.hpp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #define SASS_AST_FACTORY
  2. #include <vector>
  3. #ifndef SASS_AST
  4. #include "ast.hpp"
  5. #endif
  6. namespace Sass {
  7. using namespace std;
  8. class AST_Factory {
  9. vector<AST_Node*> nodes;
  10. public:
  11. // statements
  12. Block* new_Block(string p, size_t l, size_t s = 0, bool r = false);
  13. Ruleset* new_Ruleset(string p, size_t l, Selector* s, Block* b);
  14. Propset* new_Propset(string p, size_t l, String* pf, Block* b);
  15. Feature_Query* new_Feature_Query(string p, size_t l, Feature_Query* f, Block* b);
  16. Media_Query* new_Media_Query(string p, size_t l, List* q, Block* b);
  17. At_Rule* new_At_Rule(string p, size_t l, string kwd, Selector* sel, Block* b);
  18. Declaration* new_Declaration(string p, size_t l, String* prop, List* vals);
  19. Assignment* new_Assignment(string p, size_t l, string var, Expression* val, bool guarded = false);
  20. Import<Function_Call*>* new_CSS_Import(string p, size_t l, Function_Call* loc);
  21. Import<String*>* new_SASS_Import(string p, size_t l, String* loc);
  22. Warning* new_Warning(string p, size_t l, Expression* msg);
  23. Error* new_Error(string p, size_t l, Expression* msg);
  24. Debug* new_Debug(string p, size_t l, Expression* val);
  25. Comment* new_Comment(string p, size_t l, String* txt);
  26. If* new_If(string p, size_t l, Expression* pred, Block* con, Block* alt = 0);
  27. For* new_For(string p, size_t l, string var, Expression* lo, Expression* hi, Block* b, bool inc);
  28. Each* new_Each(string p, size_t l, vector<string> vars, Expression* lst, Block* b);
  29. While* new_While(string p, size_t l, Expression* pred, Block* b);
  30. Extension* new_Extension(string p, size_t l, Selector* s);
  31. Definition<MIXIN>* new_Mixin_Definition(string p, size_t l, string n, Parameters* params, Block* b);
  32. Definition<FUNCTION>* new_Function_Definition(string p, size_t l, string n, Parameters* params, Block* b);
  33. Mixin_Call* new_Mixin_Call(string p, size_t l, string n, Arguments* args, Block* b = 0);
  34. // expressions
  35. List* new_List(string p, size_t l, size_t size = 0, List::Separator sep = List::space, bool argl = false);
  36. Map* new_Map(string p, size_t l, size_t size = 0);
  37. Binary_Expression<AND>* new_And(string p, size_t l, Expression* lhs, Expression* rhs);
  38. Binary_Expression<OR>* new_Or(string p, size_t l, Expression* lhs, Expression* rhs);
  39. Binary_Expression<EQ>* new_Eq(string p, size_t l, Expression* lhs, Expression* rhs);
  40. Binary_Expression<NEQ>* new_Neq(string p, size_t l, Expression* lhs, Expression* rhs);
  41. Binary_Expression<GT>* new_Gt(string p, size_t l, Expression* lhs, Expression* rhs);
  42. Binary_Expression<GTE>* new_Gte(string p, size_t l, Expression* lhs, Expression* rhs);
  43. Binary_Expression<LT>* new_Lt(string p, size_t l, Expression* lhs, Expression* rhs);
  44. Binary_Expression<LTE>* new_Lte(string p, size_t l, Expression* lhs, Expression* rhs);
  45. Binary_Expression<ADD>* new_Add(string p, size_t l, Expression* lhs, Expression* rhs);
  46. Binary_Expression<SUB>* new_Sub(string p, size_t l, Expression* lhs, Expression* rhs);
  47. Binary_Expression<MUL>* new_Mul(string p, size_t l, Expression* lhs, Expression* rhs);
  48. Binary_Expression<DIV>* new_Div(string p, size_t l, Expression* lhs, Expression* rhs);
  49. Negation* new_Negation(string p, size_t l, Expression* o);
  50. Function_Call* new_Function_Call(string p, size_t l, String* n, Arguments* args);
  51. Variable* new_Variable(string p, size_t l, string n);
  52. Textual<NUMBER>* new_Textual_Number(string p, size_t l, string val);
  53. Textual<PERCENTAGE>* new_Textual_Percentage(string p, size_t l, string val);
  54. Textual<DIMENSION>* new_Textual_Dimension(string p, size_t l, string val);
  55. Textual<HEX>* new_Textual_Hex(string p, size_t l, string val);
  56. Number* new_Number(string p, size_t l, double val);
  57. Percentage* new_Percentage(string p, size_t l, double val);
  58. Dimension* new_Dimension(string p, size_t l, double val, string unit);
  59. Color* new_Color(string p, size_t l, double r, double g, double b, double a = 1, string disp = "");
  60. Boolean* new_Boolean(string p, size_t l, bool val);
  61. String_Schema* new_String_Schema(string p, size_t l, size_t size = 0);
  62. String_Constant* new_String_Constant(string p, size_t l, string val);
  63. String_Constant* new_String_Constant(string p, size_t l, const char* beg);
  64. String_Constant* new_String_Constant(string p, size_t l, const char* beg, const char* end);
  65. Feature_Query_Condition* new_Feature_Query_Condition(string p, size_t l, String* f, Expression* v);
  66. Media_Expression* new_Media_Expression(string p, size_t l, String* f, Expression* v);
  67. // parameters and arguments
  68. Parameter* new_Parameter(string p, size_t l, string n, Expression* def = 0, bool rest = false);
  69. Parameters* new_Parameters(string p, size_t l);
  70. Argument* new_Argument(string p, size_t l, Expression* val, string n = "", bool rest = false);
  71. Arguments* new_Arguments(string p, size_t l);
  72. // selectors
  73. Selector_Schema* new_Selector_Schema(string p, size_t l, String* c);
  74. Simple_Selector* new_Simple_Selector(string p, size_t l, string c);
  75. Reference_Selector* new_Reference_Selector(string p, size_t l);
  76. Placeholder_Selector* new_Placeholder_Selector(string p, size_t l, string n);
  77. Pseudo_Selector* new_Pseudo_Selector(string p, size_t l, string n, Expression* expr = 0);
  78. Wrapped_Selector* new_Wrapped_Selector(string p, size_t l, string n, Simple_Base* sel);
  79. Compound_Selector* new_Compound_Selector(string p, size_t l, size_t s = 0);
  80. Complex_Selector* new_Complex_Selector(string p, size_t l, Complex_Selector::Combinator c, Complex_Selector* ctx, Compound_Selector* sel);
  81. Selector_List* new_Selector_List(string p, size_t l, size_t s = 0);
  82. };
  83. }