File: parser.h

package info (click to toggle)
littlewizard 1.2.2-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,436 kB
  • sloc: sh: 9,389; cpp: 7,685; xml: 420; makefile: 380; awk: 40; ansic: 38
file content (69 lines) | stat: -rw-r--r-- 2,018 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  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.
 */

 /* (C) Marcin Kwadrans <quarter@users.sourceforge.net> */
 

#ifndef __LW_PARSER_H
#define __LW_PARSER_H

class LWVariable;
class LWPiece;
class LWBoard;
class LWCommandSegment;
class LWCommand;
class LWValue;
class LWProgram;

class LWProgramData {
GNode *tree_piece;
GSList *list_vars;

public:
~LWProgramData ();
void registerVariable (LWVariable *variable);
void setTree (GNode *a_tree);
GNode *getTree ();
void debugTree ();
};

class LWParser {
static guint ref_data;
static LWPiece *begin_piece;

static void matchWith (LWCommandSegment*pcmd, LWCommand *cmd, LWPiece *piece);
static void compareParity (gboolean **r, 
						LWCommand *cmd_a, LWPiece *piece_a,
						LWCommand *cmd_b, LWPiece *piece_b);
static gboolean comparePriority (LWPiece *a, LWPiece *b); 
static void toggleToSymbol (LWPiece *piece, const gchar *symbolname);
static void lexScan (LWPiece *prev, LWPiece *piece);
static GNode *parseIteration (GNode *prev, LWPiece *piece);
static LWValue *computeValue (LWProgramData *pd, GNode *node);
static void setArguments (LWProgramData *pd, LWCommand *cmd, GNode *node);
static void checkNode (LWProgramData *pd, GNode *node);
static gboolean parseIterCmd (GNode **nodeptr, GNode **nodeptr2, LWPiece *piece);

LWProgram *program;
gboolean enable_debug;
	
public:
static void unrefData ();
static LWCommand *getNodeCommand (GNode *node);
		
LWParser (LWProgram *a_program);
~LWParser ();
LWProgramData *parse (LWBoard *program_board);
void enableDebug (gboolean enable);
};

#endif