comparison anagram/guisupport/ftpardc.h @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 /*
2 * AnaGram, A System for Syntax Directed Programming
3 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
4 * See the file COPYING for license and usage terms.
5 *
6 * ftpardc.h
7 */
8
9 #ifndef FTPARDC_H
10 #define FTPARDC_H
11
12 #include "dc.h"
13 #include "ftpar.h"
14 #include "q1glbl.h"
15 #include "redmenudc.h"
16 #include "stacks.h"
17 #include "token.h"
18 #include "ut.h"
19
20 class TokenMenuDc : public dc {
21 public:
22 FtParser &parser;
23 unsigned state_number;
24
25 static MenuOption *auxTable[];
26 virtual MenuOption **getAuxWinMenu(void) { return auxTable; }
27
28 TokenMenuDc(FtParser &, unsigned);
29 virtual void getLine(unsigned) const;
30 virtual int positionCursor(unsigned, unsigned);
31
32 virtual unsigned token(unsigned);
33 virtual void reset(unsigned);
34
35 virtual dc_ref expansion_rules(unsigned);
36 virtual dc_ref productions(unsigned);
37 virtual dc_ref set_elements(unsigned);
38 virtual dc_ref usage(unsigned);
39
40 virtual int expansion_rules_ok(unsigned);
41 virtual int productions_ok(unsigned);
42 virtual int set_elements_ok(unsigned);
43 virtual int usage_ok(unsigned);
44 };
45
46 class FtParserDc : public dc {
47 public:
48 FtParser &parser;
49 FtParserDc(FtParser &p);
50 virtual void getLine(unsigned) const;
51 static MenuOption *auxTable[];
52 MenuOption **getAuxWinMenu(void) { return auxTable; }
53 dc_ref tokenMenu(int ln);
54
55 void updateSize(const FtParser::StackChanged &);
56
57 virtual unsigned token(unsigned);
58 virtual unsigned state(unsigned);
59
60 virtual dc_ref aux_trace(unsigned);
61 virtual int expansion_rules_ok(unsigned);
62 virtual dc_ref expansion_rules(unsigned);
63 virtual int keywords_ok(unsigned);
64 virtual dc_ref keywords(unsigned);
65 virtual int previous_states_ok(unsigned);
66 virtual dc_ref previous_states(unsigned);
67 virtual int productions_ok(unsigned);
68 virtual dc_ref productions(unsigned);
69 //virtual dc_ref rule_stack(unsigned);
70 virtual int set_elements_ok(unsigned);
71 virtual dc_ref set_elements(unsigned);
72 virtual dc_ref state_definition(unsigned);
73 virtual dc_ref state_expansion(unsigned);
74 virtual int usage_ok(unsigned);
75 virtual dc_ref usage(unsigned);
76
77 };
78
79 class FtParserReductionDc : public reduction_menu_dc {
80 private:
81 static int reduction_menu_tabs[];
82
83 public:
84 FtParser &parser;
85 FtParserReductionDc(FtParser &parser_)
86 : reduction_menu_dc(parser_.ruleToReduce)
87 , parser(parser_)
88 {
89 columnHeadTitle = "Reduction Choices";
90 tab_stops = reduction_menu_tabs;
91 }
92
93 static MenuOption *auxTable[];
94 MenuOption **getAuxWinMenu(void) { return auxTable; }
95 virtual unsigned token(unsigned);
96 virtual int expansion_rules_ok(unsigned);
97 virtual dc_ref expansion_rules(unsigned);
98 virtual int productions_ok(unsigned);
99 virtual dc_ref productions(unsigned);
100 virtual int set_elements_ok(unsigned);
101 virtual dc_ref set_elements(unsigned);
102 virtual int usage_ok(unsigned);
103 virtual dc_ref usage(unsigned);
104
105 void getLine(unsigned ln) const {
106 unsigned tn;
107 tn = ibnfs[ibnfb[rule_number] + ln];
108 ssprintf("T%03u: ",tn);
109 atkn(tn);
110 }
111 unsigned token(unsigned ln) const {
112 return ibnfs[ibnfb[rule_number] + ln];
113 }
114
115 //virtual void onEnterKey(void) {}
116 };
117
118
119 #endif /* FTPARDC_H */