summaryrefslogtreecommitdiff
path: root/tutorial/examples/syntax/RichSyntaxClass.java
blob: ca22914ada453e13a991144b48046ba46203620f (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
 * This code was generated by ojc.
 */
/*
 * RichSyntaxClass.java
 *
 * comments here.
 *
 * @author   Michiaki Tatsubori
 * @version  %VERSION% %DATE%
 * @see      java.lang.Object
 *
 * COPYRIGHT 1999 by Michiaki Tatsubori, ALL RIGHTS RESERVED.
 */
package examples.syntax;


import java.lang.Object;
import openjava.mop.*;
import openjava.ptree.*;
import openjava.syntax.*;


public class RichSyntaxClass extends OJClass
{

    public void translateDefinition()
    {
        String[] str = new String[]{ "hates", "loves", "keeps", "forwards", "before", "after", "chooses", "adapts" };
        for (int i = 0; i < str.length; ++i) {
            ParseTree suffix;
            suffix = this.getSuffix( str[i] );
            if (suffix != null) {
                System.out.println( this.toString() + " involves a suffix " + " ( " + str[i] + " ):" );
                System.out.println( "\t" + suffix );
            }
            OJMethod[] methods = getDeclaredMethods();
            for (int j = 0; j < methods.length; ++j) {
                suffix = methods[j].getSuffix( str[i] );
                if (suffix != null) {
                    System.out.println( methods[j].toString() + " involves a suffix " + " ( " + str[i] + " ):" );
                    System.out.println( "\t" + suffix );
                }
            }
        }
    }

    public static boolean isRegisteredKeyword( String keyword )
    {
        if (keyword.equals( "hates" )) {
            return true;
        }
        if (keyword.equals( "loves" )) {
            return true;
        }
        if (keyword.equals( "keeps" )) {
            return true;
        }
        if (keyword.equals( "forwards" )) {
            return true;
        }
        if (keyword.equals( "before" )) {
            return true;
        }
        if (keyword.equals( "after" )) {
            return true;
        }
        if (keyword.equals( "chooses" )) {
            return true;
        }
        if (keyword.equals( "adapts" )) {
            return true;
        }
        return OJClass.isRegisteredKeyword( keyword );
    }

    public static SyntaxRule getDeclSuffixRule( String keyword )
    {
        if (keyword.equals( "hates" )) {
            return new NameRule();
        }
        if (keyword.equals( "loves" )) {
            return new TypeNameRule();
        }
        if (keyword.equals( "keeps" )) {
            return new ExpressionRule();
        }
        if (keyword.equals( "forwards" )) {
            return new IterationRule( new TypeNameRule(), false );
        }
        if (keyword.equals( "before" ) || keyword.equals( "after" )) {
            return new BlockRule();
        }
        if (keyword.equals( "chooses" ) || keyword.equals( "after" )) {
            return new SelectionRule( new TypeNameRule(), new BlockRule() );
        }
        if (keyword.equals( "adapts" ) || keyword.equals( "after" )) {
            return new CompositeRule( new NameRule(), new PrepPhraseRule( "in", new NameRule() ), new PrepPhraseRule( "to", new NameRule() ) );
        }
        return OJClass.getDeclSuffixRule( keyword );
    }

    public static SyntaxRule getTypeSuffixRule( String keyword )
    {
        return OJClass.getTypeSuffixRule( keyword );
    }

    public static boolean isRegisteredModifier( String keyword )
    {
        if (keyword.equals( "remote" )) {
            return true;
        }
        if (keyword.equals( "crazy" )) {
            return true;
        }
        return false;
    }

    public RichSyntaxClass( openjava.mop.Environment oj_param0, openjava.mop.OJClass oj_param1, openjava.ptree.ClassDeclaration oj_param2 )
    {
        super( oj_param0, oj_param1, oj_param2 );
    }

    public RichSyntaxClass( java.lang.Class oj_param0, openjava.mop.MetaInfo oj_param1 )
    {
        super( oj_param0, oj_param1 );
    }

}