Changeset 2978


Ignore:
Timestamp:
Mar 27, 2013, 10:07:38 PM (5 years ago)
Author:
ksherdy
Message:

Added definitions for Types, PrimitivesTypes?, and FunctionSignatures?.

Location:
proto/pabloj/trunk/src/compilers/pabloS/lang
Files:
3 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/compilers/pabloS/lang/types/PrimitiveType.java

    r2977 r2978  
     1/*
     2 * PabloS type system definition.
     3 *
     4 * @author Ken Herdy <ksherdy at sfu dot ca>
     5 *
     6 */
     7
    18package compilers.pabloS.lang.types;
    29
    310public enum PrimitiveType implements Type {
    411
    5         INTEGERCONSTANT(true),
    6         STRINGCONSTANT(true),
    7         STREAM1(true),
    8         STREAM2(true),
    9         STREAM4(true),
    10         STREAM8(true),
    11         STREAM16(true),
    12         STREAM32(true),
    13         STREAM64(true),
    14         STREAM128(true),
    15         STREAM256(true),
    16         NO_MATCH(false),                                                                // use as a (unified) value for non-matching types.
    17         NO_TYPE (false),                                                                // use as a value when no type has been assigned.
    18         ERROR(false) {
    19                 public Type unify(Type otherType) {                     // use as a value when a syntax error has occurred
     12        VOID(),
     13        INTEGERCONSTANT(),
     14        STRINGCONSTANT(),
     15        STREAM1(),
     16        STREAM2(),
     17        STREAM4(),
     18        STREAM8(),
     19        STREAM16(),
     20        STREAM32(),
     21        STREAM64(),
     22        STREAM128(),
     23        STREAM256(),
     24        NO_TYPE (),     // use as a value when no type has been assigned
     25        NO_MATCH(),     // use as a (unified) value for non-matching types
     26        ERROR() {       // use as a value when a syntax error has occurred
     27                public Type unify(Type otherType) {                     
    2028                        return ALL_TYPES_ACCEPT_ERROR_TYPES ? otherType : NO_MATCH;
    2129                }
    22         },
    23         ANY(false) {                    // use as a value when this could represent any type
    24                 public Type unify(Type otherType) {
    25                         return otherType;
    26                 }
    2730        };
     31       
    2832        private static final boolean ALL_TYPES_ACCEPT_ERROR_TYPES = true;
    29         private boolean isComparable;
    3033        private String infoString;
    3134       
    32         private PrimitiveType(boolean isComparable) {
    33                 this.isComparable = isComparable;
     35        private PrimitiveType() {
    3436                this.infoString = toString();
    3537        }
    36         private PrimitiveType(boolean isComparable, String infoString) {
    37                 this.isComparable = isComparable;
     38       
     39        private PrimitiveType(String infoString) {
    3840                this.infoString = infoString;
     41               
    3942        }
     43       
    4044        public Type unify(Type otherType) {
    41                 if(otherType instanceof TypeVariable) {         // variables take priority
    42                         return otherType.unify(this);
    43                 }
    4445               
    45                 if(this == otherType /*|| otherType == ANY*/ || isAcceptableError(otherType)) {
     46                /*
     47                if(this == otherType || isAcceptableError(otherType)) {
    4648                        return this;
    4749                }
    4850                return NO_MATCH;
     51                */
     52               
     53                /* Disallow type unification */
     54                return NO_MATCH;
    4955        }
     56       
    5057        private boolean isAcceptableError(Type otherType) {
    5158                return otherType == ERROR && ALL_TYPES_ACCEPT_ERROR_TYPES;
    5259        }
    53 
    54         @Override
    55         public boolean isComparable() {
    56                 return isComparable;
    57         }       
    5860       
    5961        @Override
     
    6668                return this;
    6769        }
     70
     71        @Override
     72        public boolean isComparable() {
     73                // TODO Auto-generated method stub
     74                return false;
     75        }
    6876       
    69 
    7077}
    7178
  • proto/pabloj/trunk/src/compilers/pabloS/lang/types/Type.java

    r2977 r2978  
     1/*
     2 * Type Interface.
     3 *
     4 * @author Tom Shermer (orignal)
     5 * @author Ken Herdy <ksherdy at sfu dot ca> (modified by)
     6 *
     7 */
     8
    19package compilers.pabloS.lang.types;
    210
     
    412       
    513        /** Yields a printable string for information about this type.
    6          * use this rather than toString() if you want an abbreviated string.
     14         * Use this rather than toString() if you want an abbreviated string.
    715         * In particular, this yields an empty string for PrimitiveType.NO_TYPE.
    816         *
     
    1018         */
    1119        public String infoString();
    12                
    13        
    14         /** Determines if this type is comparable.
    15          */
    16         public boolean isComparable();
    1720               
    1821        /** Yields a type that is the unification of this type
Note: See TracChangeset for help on using the changeset viewer.