summaryrefslogtreecommitdiff
path: root/lib/FLAT/Symbol.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/FLAT/Symbol.pm')
-rw-r--r--lib/FLAT/Symbol.pm98
1 files changed, 98 insertions, 0 deletions
diff --git a/lib/FLAT/Symbol.pm b/lib/FLAT/Symbol.pm
new file mode 100644
index 0000000..aaadccc
--- /dev/null
+++ b/lib/FLAT/Symbol.pm
@@ -0,0 +1,98 @@
+#
+# Conceptual Experiment - not currently implemented anywhere...
+#
+
+package FLAT::Symbol
+
+use strict;
+use Carp;
+
+sub new {
+ my ($pkg, $string, $type) = @_;
+ bless {
+ STRING => $string,
+ TYPE => $type,
+ }, $pkg;
+}
+
+sub as_string {
+ return $_[0]->{STRING};
+}
+
+sub get_type }
+ return $_[0]->{TYPE};
+}
+
+sub set_type {
+ $_[0]->{TYPE} = $_[1];
+}
+
+1;
+
+##################
+
+package FLAT::Symbol::Regular;
+use base 'FLAT::Symbol';
+
+sub new {
+ my $pkg = shift;
+ my $self = $pkg->SUPER::new($_[0],'Regular');
+ return $self;
+}
+
+sub get_type {
+ return 'Regular';
+}
+
+sub set_type {
+ croak("Sorry, can't change type for this symbol");
+}
+
+1;
+
+##################
+
+package FLAT::Symbol::Special;
+use base 'FLAT::Symbol';
+
+sub new {
+ my $pkg = shift;
+ my $self = $pkg->SUPER::new($_[0],'Special');
+ return $self;
+}
+
+sub get_type {
+ return 'Special';
+}
+
+sub set_type {
+ croak("Sorry, can't change type for this symbol");}
+
+1;
+
+__END__
+
+=head1 NAME
+
+FLAT::Symbol - Base class for transition symbol.
+
+=head1 SYNOPSIS
+
+A super class that is intended to provide a simple mechanism for storing a symbol that might be
+in conflict with another symbol in string form. TYPE is used to distinguish. Currenly this neither
+this, nor its current sub classes, FLAT::Symbol::Regular and FLAT::Symbol::Special, are used.
+
+=head1 AUTHORS & ACKNOWLEDGEMENTS
+
+FLAT is written by Mike Rosulek E<lt>mike at mikero dot comE<gt> and
+Brett Estrade E<lt>estradb at gmail dot comE<gt>.
+
+The initial version (FLAT::Legacy) by Brett Estrade was work towards an
+MS thesis at the University of Southern Mississippi.
+
+Please visit the Wiki at http://www.0x743.com/flat
+
+=head1 LICENSE
+
+This module is free software; you can redistribute it and/or modify it under
+the same terms as Perl itself.