Author: jonathan
Date: Fri Jan 9 11:05:59 2009
New Revision: 35318
Added:
trunk/languages/perl6/src/parser/methods.pir (contents, props changed)
Modified:
trunk/MANIFEST
trunk/languages/perl6/config/makefiles/root.in
trunk/languages/perl6/perl6.pir
trunk/languages/perl6/src/parser/grammar.pg
Log:
[rakudo] Start getting the type registry stuff in place. This patch adds
(currently stub) add_type and is_type method on Perl6::Grammar and inserts
calls to them, following the STD.pm approach. No functional changes.
Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST (original)
+++ trunk/MANIFEST Fri Jan 9 11:05:59 2009
@@ -2167,6 +2167,7 @@
languages/perl6/src/parser/expression.pir [perl6]
languages/perl6/src/parser/grammar-oper.pg [perl6]
languages/perl6/src/parser/grammar.pg [perl6]
+languages/perl6/src/parser/methods.pir [perl6]
languages/perl6/src/parser/quote_expression.pir [perl6]
languages/perl6/src/pmc/mutablevar.pmc [perl6]
languages/perl6/src/pmc/objectref_pmc.template [perl6]
Modified: trunk/languages/perl6/config/makefiles/root.in
==============================================================================
--- trunk/languages/perl6/config/makefiles/root.in (original)
+++ trunk/languages/perl6/config/makefiles/root.in Fri Jan 9 11:05:59 2009
@@ -41,6 +41,7 @@
src/gen_metaop.pir \
src/gen_junction.pir \
src/parser/expression.pir \
+ src/parser/methods.pir \
src/parser/quote_expression.pir \
$(PERL6_GROUP) \
src/ops/perl6_ops$(LOAD_EXT)
Modified: trunk/languages/perl6/perl6.pir
==============================================================================
--- trunk/languages/perl6/perl6.pir (original)
+++ trunk/languages/perl6/perl6.pir Fri Jan 9 11:05:59 2009
@@ -204,6 +204,7 @@
.include 'src/gen_grammar.pir'
.include 'src/parser/expression.pir'
+.include 'src/parser/methods.pir'
.include 'src/parser/quote_expression.pir'
.include 'src/gen_actions.pir'
.include 'src/gen_metaop.pir'
Modified: trunk/languages/perl6/src/parser/grammar.pg
==============================================================================
--- trunk/languages/perl6/src/parser/grammar.pg (original)
+++ trunk/languages/perl6/src/parser/grammar.pg Fri Jan 9 11:05:59 2009
@@ -450,6 +450,11 @@
rule type_declarator {
'subset'
<name>
+ {{
+ $P0 = match['name']
+ $S0 = $P0.'text'()
+ match.'add_type'($S0)
+ }}
[ of <typename> ]? # XXX should be <fulltypename>
where <EXPR>
{*}
@@ -615,6 +620,12 @@
rule package_def {
[
<module_name=name>
+ {{
+ $P0 = match['module_name']
+ $P0 = $P0[0]
+ $S0 = $P0.'text'()
+ match.'add_type'($S0)
+ }}
]?
<trait>*
[
@@ -626,7 +637,17 @@
rule enum_declarator {
- 'enum' <name>?
+ 'enum'
+ [
+ <name> ::
+ {{
+ $P0 = match['name']
+ $P0 = $P0[0]
+ $S0 = $P0.'text'()
+ match.'add_type'($S0)
+ }}
+ ]?
+
[
| <?before '[' > <circumfix> {*} #= circumfix
| <?before '<' | '«' > <quote> {*} #= quote
@@ -719,6 +740,11 @@
token typename {
<?before <.upper> | '::' > <name>
+ <?{{
+ $P0 = match['name']
+ $S0 = $P0.'text'()
+ $I0 = match.'is_type'($S0)
+ }}>
{*}
}
Added: trunk/languages/perl6/src/parser/methods.pir
==============================================================================
--- (empty file)
+++ trunk/languages/perl6/src/parser/methods.pir Fri Jan 9 11:05:59 2009
@@ -0,0 +1,46 @@
+## $Id$
+
+=head1 TITLE
+
+methods.pir - Methods on Perl6::Grammar.
+
+=head2 DESCRIPTION
+
+STD.pm contains various methods. This file implements some of them.
+
+=over 4
+
+=item C<add_type(type_name)>
+
+Registers a type in the namespace.
+
+=cut
+
+.namespace [ "Perl6";"Grammar" ]
+.sub "add_type" :method
+ .param string name
+ # XXX TODO
+.end
+
+
+=item C<is_type(name)>
+
+Checks if the name we have been passed represents a type.
+
+=cut
+
+.sub 'is_type' :method
+ .param string name
+ # XXX TODO
+ .return (1)
+.end
+
+=back
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir: