/* * JoeyDev * Copyright (C) 2018-2023 Scott Duensing * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef VECPARSE_H #define VECPARSE_H enum ParserKeywordE { PARSE_NONE = 0, PARSE_BOX, PARSE_CALL, PARSE_CIRCLE, PARSE_CLEAR, PARSE_COLOR, PARSE_COMMENT, PARSE_ELLIPSE, PARSE_FILL, PARSE_GOTO, PARSE_IF, PARSE_LINE, PARSE_PALETTE, PARSE_PLOT, PARSE_RECTANGLE, PARSE_RETURN, // After this are keywords for things that aren't commands but still need to emit bytecode. PARSE_MATH, PARSE_LABEL }; typedef enum ParserKeywordE ParserKeywordT; enum ParserMathE { MATH_NONE = 0, MATH_ASSIGN, MATH_ADD, MATH_SUBTRACT, MATH_MULTIPLY, MATH_DIVIDE, MATH_RND, MATH_MOD, MATH_POW, MATH_SQRT, MATH_ABS, MATH_COS, MATH_SIN, MATH_TAN }; typedef enum ParserMathE ParserMathT; typedef struct PointS { int x; int y; } PointT; typedef struct VecByteCodeS { unsigned char *bytes; int length; int bufferSize; } VecByteCodeT; int vecparser(char *programIn, VecByteCodeT *bytecode); #endif // VECPARSE_H