moved kdeaccessibility kdeaddons kdeadmin kdeartwork kdebindings kdeedu kdegames...
[kdeedu.git] / kturtle / src / parser.h
bloba02ef0a8d487cb697354d9eed2593f203c0b1be6
1 /*
2 Copyright (C) 2003 by Walter Schreppers
3 Copyright (C) 2004 by Cies Breijs
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of version 2 of the GNU General Public
7 License as published by the Free Software Foundation.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #ifndef _PARSER_H_
21 #define _PARSER_H_
23 #include <qobject.h>
25 #include "lexer.h"
26 #include "treenode.h"
29 class Parser : public QObject
31 Q_OBJECT
33 public:
34 Parser(QTextIStream& in);
35 virtual ~Parser();
37 void parse();
38 TreeNode* getTree() const { return tree; }
41 signals:
42 void ErrorMsg(Token&, const QString&, uint code);
45 private:
46 bool isAddOp(Token);
47 bool isMulOp(Token);
49 void getToken();
50 void matchToken(int tokenType);
51 void appendParameters(TreeNode* node);
52 void Error(Token&, const QString& s, uint code);
54 TreeNode* Program();
55 TreeNode* ParamList();
56 TreeNode* Block();
57 TreeNode* Statement();
59 TreeNode* ExternalRun();
61 TreeNode* getId();
62 TreeNode* signedFactor();
63 TreeNode* Factor();
64 TreeNode* Term();
65 TreeNode* Expression();
67 TreeNode* Assignment(Token);
68 TreeNode* FunctionCall(Token);
69 TreeNode* Other();
71 TreeNode* While();
72 TreeNode* For();
73 TreeNode* ForEach();
74 TreeNode* If();
75 TreeNode* Return();
76 TreeNode* Break();
78 TreeNode* Clear();
79 TreeNode* Go();
80 TreeNode* GoX();
81 TreeNode* GoY();
82 TreeNode* Forward();
83 TreeNode* Backward();
84 TreeNode* Direction();
85 TreeNode* TurnLeft();
86 TreeNode* TurnRight();
87 TreeNode* Center();
88 TreeNode* SetPenWidth();
89 TreeNode* PenUp();
90 TreeNode* PenDown();
91 TreeNode* SetFgColor();
92 TreeNode* SetBgColor();
93 TreeNode* ResizeCanvas();
94 TreeNode* SpriteShow();
95 TreeNode* SpriteHide();
96 TreeNode* SpritePress();
97 TreeNode* SpriteChange();
99 TreeNode* Message();
100 TreeNode* InputWindow();
101 TreeNode* Print();
102 TreeNode* FontType();
103 TreeNode* FontSize();
104 TreeNode* Repeat();
105 TreeNode* Random();
106 TreeNode* Wait();
107 TreeNode* WrapOn();
108 TreeNode* WrapOff();
109 TreeNode* Reset();
111 TreeNode* LineBreak();
112 TreeNode* EndOfFile();
114 TreeNode* Learn();
116 //private locals
117 Lexer *lexer;
118 TreeNode *tree;
119 Token currentToken;
120 Token preservedToken; // to preserve the currentToken so it wont get lost
121 uint row;
122 uint col;
123 QStringList learnedFunctionList;
126 #endif // _PARSER_H_