diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2 (patch) | |
tree | d3bb9f5d25a2dc09ca81adecf39621d871534297 /kturtle/src/parser.h | |
download | tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.tar.gz tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeedu@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kturtle/src/parser.h')
-rw-r--r-- | kturtle/src/parser.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/kturtle/src/parser.h b/kturtle/src/parser.h new file mode 100644 index 00000000..28be566f --- /dev/null +++ b/kturtle/src/parser.h @@ -0,0 +1,126 @@ +/* + Copyright (C) 2003 by Walter Schreppers + Copyright (C) 2004 by Cies Breijs + + This program is free software; you can redistribute it and/or + modify it under the terms of version 2 of the GNU General Public + License as published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +#ifndef _PARSER_H_ +#define _PARSER_H_ + +#include <qobject.h> + +#include "lexer.h" +#include "treenode.h" + + +class Parser : public QObject +{ + Q_OBJECT + + public: + Parser(QTextIStream& in); + virtual ~Parser(); + + void parse(); + TreeNode* getTree() const { return tree; } + + + signals: + void ErrorMsg(Token&, const QString&, uint code); + + + private: + bool isAddOp(Token); + bool isMulOp(Token); + + void getToken(); + void matchToken(int tokenType); + void appendParameters(TreeNode* node); + void Error(Token&, const QString& s, uint code); + + TreeNode* Program(); + TreeNode* ParamList(); + TreeNode* Block(); + TreeNode* Statement(); + + TreeNode* ExternalRun(); + + TreeNode* getId(); + TreeNode* signedFactor(); + TreeNode* Factor(); + TreeNode* Term(); + TreeNode* Expression(); + + TreeNode* Assignment(Token); + TreeNode* FunctionCall(Token); + TreeNode* Other(); + + TreeNode* While(); + TreeNode* For(); + TreeNode* ForEach(); + TreeNode* If(); + TreeNode* Return(); + TreeNode* Break(); + + TreeNode* Clear(); + TreeNode* Go(); + TreeNode* GoX(); + TreeNode* GoY(); + TreeNode* Forward(); + TreeNode* Backward(); + TreeNode* Direction(); + TreeNode* TurnLeft(); + TreeNode* TurnRight(); + TreeNode* Center(); + TreeNode* SetPenWidth(); + TreeNode* PenUp(); + TreeNode* PenDown(); + TreeNode* SetFgColor(); + TreeNode* SetBgColor(); + TreeNode* ResizeCanvas(); + TreeNode* SpriteShow(); + TreeNode* SpriteHide(); + TreeNode* SpritePress(); + TreeNode* SpriteChange(); + + TreeNode* Message(); + TreeNode* InputWindow(); + TreeNode* Print(); + TreeNode* FontType(); + TreeNode* FontSize(); + TreeNode* Repeat(); + TreeNode* Random(); + TreeNode* Wait(); + TreeNode* WrapOn(); + TreeNode* WrapOff(); + TreeNode* Reset(); + + TreeNode* LineBreak(); + TreeNode* EndOfFile(); + + TreeNode* Learn(); + + //private locals + Lexer *lexer; + TreeNode *tree; + Token currentToken; + Token preservedToken; // to preserve the currentToken so it wont get lost + uint row; + uint col; + QStringList learnedFunctionList; +}; + +#endif // _PARSER_H_ |