aboutsummaryrefslogtreecommitdiff
path: root/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'parser.h')
-rw-r--r--parser.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/parser.h b/parser.h
index 065ed2a..5c427ee 100644
--- a/parser.h
+++ b/parser.h
@@ -9,23 +9,41 @@ using std::string;
const int TOKEN_BUFF_SIZE = 65536;
const int PARSE_STACK_SIZE = 65536;
+/** @class Tokenizor
+ * Break down the input string stream into tokens
+ */
class Tokenizor {
private:
FILE *stream;
char *buff_ptr;
public:
Tokenizor();
+ /** Set the stream to be read from (without setting this, the default
+ * would be stdin) */
void set_stream(FILE *stream);
+ /** Extract the next token
+ * @param ret the extracted token
+ * @return false if nothing can be read further
+ * */
bool get_token(string &ret);
};
+/** @class ASTGenerator
+ * Read the tokens and build up an Abstract Syntax Tree (which is in effect a
+ * Cons)
+ */
class ASTGenerator {
private:
static EvalObj* to_float(const string &);
static EvalObj* to_int(const string &);
+ /** Convert the string to an internal object */
static EvalObj* to_obj(const string &);
public:
ASTGenerator();
+ /** Read tokens from Tokenizor tk, then return a AST
+ * @param tk pointer to a Tokenizor
+ * @return Abstract Syntax Tree
+ */
Cons *absorb(Tokenizor *tk);
};