Look for a LOGO (.LGO) file on the mbed and run the commands in it. Only supports a small subset of the LOGO commands.
tokens.h@0:864f6ee5169b, 2011-04-09 (annotated)
- Committer:
- nbbhav
- Date:
- Sat Apr 09 18:06:27 2011 +0000
- Revision:
- 0:864f6ee5169b
Initial version supporting FORWARD, BACK, LEFT and RIGHT commands.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nbbhav | 0:864f6ee5169b | 1 | /* |
nbbhav | 0:864f6ee5169b | 2 | * Source file tokenization |
nbbhav | 0:864f6ee5169b | 3 | */ |
nbbhav | 0:864f6ee5169b | 4 | |
nbbhav | 0:864f6ee5169b | 5 | enum TokenType { |
nbbhav | 0:864f6ee5169b | 6 | UNKNOWN, |
nbbhav | 0:864f6ee5169b | 7 | WORD, |
nbbhav | 0:864f6ee5169b | 8 | INTEGER, |
nbbhav | 0:864f6ee5169b | 9 | EOL |
nbbhav | 0:864f6ee5169b | 10 | }; |
nbbhav | 0:864f6ee5169b | 11 | |
nbbhav | 0:864f6ee5169b | 12 | struct Token |
nbbhav | 0:864f6ee5169b | 13 | { |
nbbhav | 0:864f6ee5169b | 14 | Token(); |
nbbhav | 0:864f6ee5169b | 15 | ~Token(); |
nbbhav | 0:864f6ee5169b | 16 | |
nbbhav | 0:864f6ee5169b | 17 | TokenType getType() const { return type_; } |
nbbhav | 0:864f6ee5169b | 18 | bool isValid() const { return type_ != UNKNOWN; } |
nbbhav | 0:864f6ee5169b | 19 | |
nbbhav | 0:864f6ee5169b | 20 | bool isWord() const { return type_ == WORD; } |
nbbhav | 0:864f6ee5169b | 21 | bool isInteger() const { return type_ == INTEGER; } |
nbbhav | 0:864f6ee5169b | 22 | bool isEOL() const { return type_ == EOL; } |
nbbhav | 0:864f6ee5169b | 23 | |
nbbhav | 0:864f6ee5169b | 24 | const char* getWord() const; |
nbbhav | 0:864f6ee5169b | 25 | int getInteger() const; |
nbbhav | 0:864f6ee5169b | 26 | |
nbbhav | 0:864f6ee5169b | 27 | static void get_token(Token* token, const char* str, int* pos); |
nbbhav | 0:864f6ee5169b | 28 | |
nbbhav | 0:864f6ee5169b | 29 | private: |
nbbhav | 0:864f6ee5169b | 30 | TokenType type_; |
nbbhav | 0:864f6ee5169b | 31 | union { |
nbbhav | 0:864f6ee5169b | 32 | char* word; |
nbbhav | 0:864f6ee5169b | 33 | int value; |
nbbhav | 0:864f6ee5169b | 34 | } u; |
nbbhav | 0:864f6ee5169b | 35 | }; |
nbbhav | 0:864f6ee5169b | 36 | |
nbbhav | 0:864f6ee5169b | 37 | inline void get_token(Token* token, const char* str, int* pos) { |
nbbhav | 0:864f6ee5169b | 38 | Token::get_token(token, str, pos); |
nbbhav | 0:864f6ee5169b | 39 | } |