__grammar.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef VIRTUALMATH___GRAMMAR_H
  2. #define VIRTUALMATH___GRAMMAR_H
  3. #include "__virtualmath.h"
  4. #if OUT_LOG && OUT_PASERS_LOG
  5. #define doubleLog(pm, grammar_level, pasers_level, message, ...) do{ \
  6. writeLog(pm->grammar_debug, grammar_level, message, __VA_ARGS__); \
  7. writeLog(pm->paser_debug, pasers_level, "\n"message, __VA_ARGS__); \
  8. } while(0)
  9. #else
  10. #define doubleLog(...) PASS
  11. #endif
  12. #if OUT_LOG && OUT_GRAMMER_LOG
  13. #define writeLog_(...) writeLog(__VA_ARGS__)
  14. #else
  15. #define writeLog_(...) PASS
  16. #endif
  17. #define addStatementToken(type, st, pm) addBackToken(pm->tm->ts, makeStatementToken(type, st), pm->paser_debug)
  18. #define delToken(pm) freeToken(popAheadToken(pm), true, false)
  19. #define backToken_(pm, token) addBackToken(pm->tm->ts, (token), pm->paser_debug)
  20. #define addEnter(pm) backToken_(pm, makeLexToken(MATHER_ENTER, NULL, NULL))
  21. #define addToken_ backToken_
  22. #define call_success(pm) (pm->status == success)
  23. void parserCommand(PASERSSIGNATURE);
  24. void parserControl(PASERSSIGNATURE, Statement *(*callBack)(Statement *), int type);
  25. void parserDef(PASERSSIGNATURE);
  26. void parserIf(PASERSSIGNATURE);
  27. void parserWhile(PASERSSIGNATURE);
  28. void parserTry(PASERSSIGNATURE);
  29. void parserCode(PASERSSIGNATURE);
  30. void parserOperation(PASERSSIGNATURE);
  31. void parserPolynomial(PASERSSIGNATURE);
  32. void parserBaseValue(PASERSSIGNATURE);
  33. void parserCallBack(PASERSSIGNATURE);
  34. void parserFactor(PASERSSIGNATURE);
  35. void parserAssignment(PASERSSIGNATURE);
  36. void twoOperation(PASERSSIGNATURE, void (*callBack)(PASERSSIGNATURE), int (*getSymbol)(PASERSSIGNATURE, int symbol, Statement **st), int, int, char *, char *);
  37. void tailOperation(PASERSSIGNATURE, void (*callBack)(PASERSSIGNATURE), int (*tailFunction)(PASERSSIGNATURE, Token *left_token, Statement **st), int , int , char *, char *);
  38. void syntaxError(ParserMessage *pm, int status, int num, ...);
  39. int readBackToken(ParserMessage *pm);
  40. Token *popAheadToken(ParserMessage *pm);
  41. bool checkToken_(ParserMessage *pm, int type);
  42. bool commandCallControl_(PASERSSIGNATURE, Statement *(*callBack)(Statement *), int type, Statement **st, char *message);
  43. bool commandCallBack_(PASERSSIGNATURE, void (*callBack)(PASERSSIGNATURE), int type, Statement **st, char *message);
  44. bool callParserCode(PASERSSIGNATURE, Statement **st,char *message);
  45. bool callParserAs(PASERSSIGNATURE, Statement **st,char *message);
  46. bool callChildStatement(PASERSSIGNATURE, void (*call)(PASERSSIGNATURE), int type, Statement **st, char *message);
  47. bool callChildToken(ParserMessage *pm, Inter *inter, void (*call)(ParserMessage *, Inter *), int type, Token **tmp,
  48. char *message, int error_type);
  49. #endif //VIRTUALMATH___GRAMMAR_H