fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / compilers / tge / TGE / Rule.pir
blob60caf2615c2c8c8b9aecff6d197244cc2241ad5e
1 # Copyright (C) 2005-2008, Parrot Foundation.
2 # $Id$
4 =head1 NAME
6 TGE::Rule - a single rule in the attribute grammar
8 =head1 DESCRIPTION
10 A basic class to hold defined attribute grammar rules.
12 =cut
14 .namespace [ 'TGE'; 'Rule' ]
16 # Possibly better named "type", "name", "parent", "action/exec",
17 # "copy/value"
19 .sub "__onload" :load
20     .local pmc base
21     newclass base, ['TGE';'Rule']
22     addattribute base, "type"   # node type that this rule applies to
23     addattribute base, "name"   # name of attribute being defined
24     addattribute base, "parent" # where the attribute is applied
25                                 # (current node or child node)
26     addattribute base, "action" # a compiled subroutine
27     addattribute base, "line"   # line number in the grammar source file
28     .return ()
29 .end
31 =head2 new
33 Create a new rule object. A rule object holds the semantics for a single
34 attribute grammar rule.
36 =cut
38 .sub __init :method
39     $P0 = new 'Undef'
40     $P1 = new 'Undef'
41     $P2 = new 'Undef'
42     $P3 = new 'Undef'
43     $P4 = new 'Undef'
44     $P5 = new 'Sub'
45     setattribute self, "type", $P0
46     setattribute self, "name", $P1
47     setattribute self, "parent", $P2
48     setattribute self, "line", $P4
49     setattribute self, "action", $P5
50 .end
52 =head2 dump
54 Produce a data dump of the current contents of the rule object.
56 =cut
58 .sub "dump" :method
59     $P0 = getattribute self, "type"
60     print "\t\t\t'type' => '"
61     print $P0
62     print "',\n"
63     $P1 = getattribute self, "name"
64     print "\t\t\t'name' => '"
65     print $P1
66     print "',\n"
67     $P2 = getattribute self, "parent"
68     print "\t\t\t'parent' => '"
69     print $P2
70     print "',\n"
71 .end
73 # Local Variables:
74 #   mode: pir
75 #   fill-column: 100
76 # End:
77 # vim: expandtab shiftwidth=4 ft=pir: