statement.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef VIRTUALMATH_STATEMENT_H
  2. #define VIRTUALMATH_STATEMENT_H
  3. #include "__macro.h"
  4. typedef struct Statement{
  5. enum StatementType{
  6. start = 1,
  7. base_value,
  8. base_var,
  9. operation,
  10. } type;
  11. union StatementU{
  12. struct base_value{
  13. struct VirtualMathValue *value;
  14. } base_value;
  15. struct base_var{
  16. char *name;
  17. struct Statement *times;
  18. } base_var;
  19. struct operation{
  20. enum OperationType{
  21. ADD = 1,
  22. SUB,
  23. MUL,
  24. DIV,
  25. ASS,
  26. } OperationType;
  27. struct Statement *left;
  28. struct Statement *right;
  29. } operation;
  30. }u;
  31. struct Statement *next;
  32. } Statement;
  33. Statement *makeStatement();
  34. Statement *makeOperationStatement(int type);
  35. struct Token *setOperationFromToken(Statement *st, struct Token *left, struct Token *right, int type);
  36. void connectStatement(Statement *base, Statement *new);
  37. void freeStatement(Statement *st);
  38. #endif //VIRTUALMATH_STATEMENT_H