dummy_foundation/lib/Parse/Yapp/Output.pm
changeset 0 02cd6b52f378
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dummy_foundation/lib/Parse/Yapp/Output.pm	Thu May 28 10:10:03 2009 +0100
@@ -0,0 +1,92 @@
+#
+# Module Parse::Yapp::Output
+#
+# (c) Copyright 1998-2001 Francois Desarmenien, all rights reserved.
+# (see the pod text in Parse::Yapp module for use and distribution rights)
+#
+package Parse::Yapp::Output;
+@ISA=qw ( Parse::Yapp::Lalr );
+
+require 5.004;
+
+use Parse::Yapp::Lalr;
+use Parse::Yapp::Driver;
+
+use strict;
+
+use Carp;
+
+sub _CopyDriver {
+	my($text)='#Included Parse/Yapp/Driver.pm file'.('-' x 40)."\n";
+		open(DRV,$Parse::Yapp::Driver::FILENAME)
+	or	die "BUG: could not open $Parse::Yapp::Driver::FILENAME";
+	$text.="{\n".join('',<DRV>)."}\n";
+	close(DRV);
+	$text.='#End of include'.('-' x 50)."\n";
+}
+
+sub Output {
+    my($self)=shift;
+
+    $self->Options(@_);
+
+    my($package)=$self->Option('classname');
+    my($head,$states,$rules,$tail,$driver);
+    my($version)=$Parse::Yapp::Driver::VERSION;
+    my($datapos);
+    my($text)=$self->Option('template') ||<<'EOT';
+####################################################################
+#
+#    This file was generated using Parse::Yapp version <<$version>>.
+#
+#        Don't edit this file, use source file instead.
+#
+#             ANY CHANGE MADE HERE WILL BE LOST !
+#
+####################################################################
+package <<$package>>;
+use vars qw ( @ISA );
+use strict;
+
+@ISA= qw ( Parse::Yapp::Driver );
+<<$driver>>
+
+<<$head>>
+
+sub new {
+        my($class)=shift;
+        ref($class)
+    and $class=ref($class);
+
+    my($self)=$class->SUPER::new( yyversion => '<<$version>>',
+                                  yystates =>
+<<$states>>,
+                                  yyrules  =>
+<<$rules>>,
+                                  @_);
+    bless($self,$class);
+}
+
+<<$tail>>
+1;
+EOT
+
+	$driver='use Parse::Yapp::Driver;';
+
+        defined($package)
+    or $package='Parse::Yapp::Default';
+
+	$head= $self->Head();
+	$rules=$self->RulesTable();
+	$states=$self->DfaTable();
+	$tail= $self->Tail();
+
+		$self->Option('standalone')
+	and	$driver=_CopyDriver();
+
+	$text=~s/<<(\$.+)>>/$1/gee;
+
+	$text;
+}
+
+1;