Fixed type bugs and header comments.

This commit is contained in:
jeff.dyer%compilercompany.com 2000-12-04 18:47:28 +00:00
parent 3187041be5
commit d6b97f2277
88 changed files with 166 additions and 170 deletions

View File

@ -42,7 +42,7 @@ parser, semantics, and generator) of the compiler. Thus, a useful idiom
is to give 'make' two targets, the component you just modified followed
by the sanity test target like this:
make parser sanity
make parser sanity
To automatically rebuild the parser and run the sanity test. What's
missing is any kind of dependency rules, so using the root target

View File

@ -24,7 +24,7 @@ package com.compilercompany.ecmascript;
import java.io.*;
/**
* JSILGenerator
* Generates psuedo intermediate code.
*/
public class JSILGenerator extends Evaluator implements Tokens {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Unicode character classes.
*/
package com.compilercompany.ecmascript;
interface CharacterClasses {

View File

@ -23,11 +23,9 @@
package com.compilercompany.ecmascript;
import java.io.*;
/**
*
* class Debugger
*
**/
/*
* Debugging tool.
*/
public final class Debugger {

View File

@ -21,9 +21,7 @@
*/
/**
* InputBuffer.java
*
* Filters and buffers characters from a Reader.
* Filters and buffers characters from a input reader.
*/
package com.compilercompany.ecmascript;
@ -490,13 +488,13 @@ public class InputBuffer implements CharacterClasses {
}
public int getColPos(int pos) {
Debugger.trace("pos " + pos);
//Debugger.trace("pos " + pos);
int i,len;
for(i = 0; line_breaks[i] <= pos && i <= lnNum; i++)
;
int offset = line_breaks[i-1];
Debugger.trace("offset " + offset);
//Debugger.trace("offset " + offset);
return pos-offset;
}

View File

@ -26,7 +26,7 @@ import sun.tools.javac.*;
import java.io.*;
/**
* class Shell
* A test shell.
*/
public final class Shell {

View File

@ -21,7 +21,7 @@
*/
/**
* Scanner.java
* Scans input for tokens.
*/

View File

@ -25,8 +25,8 @@ import java.lang.reflect.*;
import sun.tools.javac.*;
import java.io.*;
/**
* class Shell
/*
* A test tool.
*/
public final class Shell implements Tokens {

View File

@ -22,8 +22,9 @@
package com.compilercompany.ecmascript;
/**
**/
/*
* The states of the scanner.
*/
interface States {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Token.java
* Represents token instances: literals and identifiers.
*
* This file implements the class Token that is used to carry
* information from the Scanner to the Parser.

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Tokens.java
* Defines token classes and their print names.
*
* This interface defines values for each token class that occurs in
* ECMAScript 4. All but numericliteral, stringliteral, regexpliteral, and

View File

@ -24,8 +24,10 @@ import com.compilercompany.ecmascript.*;
import sun.tools.util.CommandLine;
import java.io.*;
/**
/*
* The main driver.
*/
public class Main {
String[] classes;

View File

@ -27,15 +27,8 @@ import java.util.ResourceBundle;
import java.text.MessageFormat;
import java.util.MissingResourceException;
/**
* Messages, verbose and error handling support.
*
* For errors, the failure modes are:
* error -- User did something wrong
* bug -- Bug has occurred in javah
* fatal -- We can't even find resources, so bail fast, don't localize
*
* @version 1.6, 02/02/00
/*
* Utility for the main driver.
*/
public class Util {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Not used.
*/
package com.compilercompany.ecmascript;
interface Attributes {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class Block
* Represents a basic block for flow analysis.
*/
public class Block {

View File

@ -27,7 +27,7 @@ import java.util.Enumeration;
import java.util.Hashtable;
/**
* Context
* Context used during semantic analysis.
*/
public class Context {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* interface Errors
* Not used.
**/
public interface Errors {

View File

@ -23,8 +23,7 @@
package com.compilercompany.ecmascript;
/**
*
* Evaluator
* The base visitor object extended by semantic evaluators.
*
* This is a visitor that is used by the compiler for various forms for
* evaluation of a parse tree (e.g. a type evaluator might compute the

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* interface Init
* Interface that object initializers implement.
*
* This interface is implemented by objects that can build
* instances of the Value class. For example, there is an

View File

@ -23,9 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class Node
*
* To be a node you need to implement this interface.
* The base Node class.
*/
public class Node {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Creates parse tree nodes.
*/
package com.compilercompany.ecmascript;
public final class NodeFactory {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Parse tree nodes.
*/
package com.compilercompany.ecmascript;
/**

View File

@ -26,9 +26,7 @@ import java.io.*;
import java.lang.reflect.*;
/**
* class Parser
*
* Parses ES4 programs.
* Parse JS2 programs.
*/
public class Parser implements Tokens, Errors {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Scope
* A scope, which contains slots.
*/
public interface Scope {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Slot
* A slot.
*/
public class Slot {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
*
* The interfaces for all types.
*/
public interface Type extends Init {

View File

@ -25,9 +25,7 @@ import java.util.Hashtable;
import java.util.Vector;
/**
* Value
*
* This is the value class from which all other values derive.
* The value class from which all other values derive.
*/
abstract public class Value implements Scope {

View File

@ -26,13 +26,12 @@ import java.lang.reflect.*;
import java.util.*;
/**
* class BlockEvaluator
* Delineates the program into its basic execution blocks.
*
* The purpose of this pass is to delineate the basic
* blocks of the program. It is necessary to know all
* the blocks in the program before we can mark the
* flow-control edges and compute the dominance relationship
* between a reference and definition.
* It is necessary to know all the blocks in the program
* before we can mark the flow-control edges and compute
* the dominance relationship between a reference and
* definition.
*
* The algorithm for partitioning the program into basic
* blocks goes like this:

View File

@ -25,7 +25,7 @@ import java.util.*;
import java.io.StringReader;
/**
* ConstantEvaluator
* Computes the compile-time values of a program.
*
* The ConstantEvaluator evaluates all expressions to either Undefined or
* a definite constant value. Each statement evaluates to a CompletionValue
@ -38,7 +38,7 @@ import java.io.StringReader;
public class ConstantEvaluator extends Evaluator implements Tokens, Attributes {
private static final boolean debug = false;
private static final boolean debug = true;
// Expressions
@ -81,7 +81,7 @@ public class ConstantEvaluator extends Evaluator implements Tokens, Attributes {
}
if( qualifier != null &&
!(NamespaceType.type.includes(qualifier) || ClassType.type.includes(qualifier)) ) {
!(NamespaceType.type.includes(qualifier) || TypeType.type.includes(qualifier)) ) {
error(context,0,"Identifier qualifier must evaluate to a namespace or type.",node.qualifier.pos());
return UndefinedValue.undefinedValue;
}

View File

@ -29,7 +29,7 @@ import java.util.Vector;
public final class ClassType extends ObjectType implements Type {
boolean debug = false;
private static final boolean debug = false;
public static final TypeValue type = new TypeValue(new ClassType());
@ -47,7 +47,7 @@ public final class ClassType extends ObjectType implements Type {
private ClassType() {
super("class");
TypeType.type.addSub(this);
ObjectType.type.addSub(this);
}
private Type superType;

View File

@ -29,7 +29,7 @@ import java.util.Vector;
public class ObjectType implements Type {
private static final boolean debug = false;
private static final boolean debug = true;
public static final TypeValue type = new TypeValue(new ObjectType());
@ -108,11 +108,9 @@ public class ObjectType implements Type {
public boolean includes(Value value) {
// A type is always a member of itself.
if(value.type==ObjectType.type) {
return true;
}
if( debug ) {
Debugger.trace("ObjectType.includes() with this = " + this + ", value.type = " + value.type + ", values_ = " + values_);
}
return values_.contains(value.type);
}

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class BooleanValue
* A boolean value: true or false.
*/
public class BooleanValue extends ObjectValue {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class CharacterValue
* A character value.
*/
public class CharacterValue extends ObjectValue {

View File

@ -24,10 +24,9 @@ package com.compilercompany.ecmascript;
import java.util.Vector;
/**
* class CodeValue
* A code value (intermediate).
*
* This value holds the compiled code for an unevaluated
* expression.
* This value holds the intermediate code for an non-constant value.
*/
public class CodeValue extends Value {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class CompletionValue
* A completion value (intermediate).
*/
public class CompletionValue extends Value {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* GlobalObject
* The global object initializer.
*
* An instance of this class is used to initialize a global
* object.

View File

@ -25,7 +25,7 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* class ListValue
* A list value (intermediate).
*/
public class ListValue extends ObjectValue {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class NullValue
* The null value.
*/
public class NullValue extends ObjectValue {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class NumberValue
* A number value.
*/
public final class NumberValue extends ObjectValue {

View File

@ -26,7 +26,7 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* ObjectValue
* An object value.
*/
public class ObjectValue extends Value implements Attributes, Scope {
@ -46,6 +46,7 @@ public class ObjectValue extends Value implements Attributes, Scope {
*/
public ObjectValue() {
this.type = null;
}
/**

View File

@ -25,12 +25,12 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* class ReferenceValue
* A reference value.
*/
public class ReferenceValue extends Value {
private static final boolean debug = false;
private static final boolean debug = true;
Scope scope;
Vector namespaces;
@ -101,7 +101,7 @@ public class ReferenceValue extends Value {
public Slot getSlot(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getSlot() with context = " + context );
Debugger.trace("ReferenceValue.getSlot() with namespaces = " + namespaces + ", name = " + name );
}
Slot slot = null;
@ -140,7 +140,7 @@ public class ReferenceValue extends Value {
public Value getValue(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getValue() with context = " + context );
Debugger.trace("ReferenceValue.getValue() with namespaces = " + namespaces + ", name = " + name );
}
Value value = UndefinedValue.undefinedValue;
@ -169,7 +169,7 @@ public class ReferenceValue extends Value {
public Value getType(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getValue() with context = " + context );
Debugger.trace("ReferenceValue.getType() with namespaces = " + namespaces + ", name = " + name );
}
Value type = ObjectType.type;
@ -183,7 +183,7 @@ public class ReferenceValue extends Value {
Value getAttrs(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getAttrs() with context = " + context );
Debugger.trace("ReferenceValue.getAttrs() with namespaces = " + namespaces + ", name = " + name );
}
Value attrs = null;

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class StringValue
* A string value.
*/
public final class StringValue extends ObjectValue {

View File

@ -25,7 +25,7 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* class TypeValue
* A type value.
*
* TypeValues have an internal property valueType that is
* the type that this value represents. The type of a TypeValue

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class UndefinedValue
* The undefined value.
*/
public class UndefinedValue extends ObjectValue {

View File

@ -42,7 +42,7 @@ parser, semantics, and generator) of the compiler. Thus, a useful idiom
is to give 'make' two targets, the component you just modified followed
by the sanity test target like this:
make parser sanity
make parser sanity
To automatically rebuild the parser and run the sanity test. What's
missing is any kind of dependency rules, so using the root target

View File

@ -24,7 +24,7 @@ package com.compilercompany.ecmascript;
import java.io.*;
/**
* JSILGenerator
* Generates psuedo intermediate code.
*/
public class JSILGenerator extends Evaluator implements Tokens {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Unicode character classes.
*/
package com.compilercompany.ecmascript;
interface CharacterClasses {

View File

@ -23,11 +23,9 @@
package com.compilercompany.ecmascript;
import java.io.*;
/**
*
* class Debugger
*
**/
/*
* Debugging tool.
*/
public final class Debugger {

View File

@ -21,9 +21,7 @@
*/
/**
* InputBuffer.java
*
* Filters and buffers characters from a Reader.
* Filters and buffers characters from a input reader.
*/
package com.compilercompany.ecmascript;
@ -490,13 +488,13 @@ public class InputBuffer implements CharacterClasses {
}
public int getColPos(int pos) {
Debugger.trace("pos " + pos);
//Debugger.trace("pos " + pos);
int i,len;
for(i = 0; line_breaks[i] <= pos && i <= lnNum; i++)
;
int offset = line_breaks[i-1];
Debugger.trace("offset " + offset);
//Debugger.trace("offset " + offset);
return pos-offset;
}

View File

@ -26,7 +26,7 @@ import sun.tools.javac.*;
import java.io.*;
/**
* class Shell
* A test shell.
*/
public final class Shell {

View File

@ -21,7 +21,7 @@
*/
/**
* Scanner.java
* Scans input for tokens.
*/

View File

@ -25,8 +25,8 @@ import java.lang.reflect.*;
import sun.tools.javac.*;
import java.io.*;
/**
* class Shell
/*
* A test tool.
*/
public final class Shell implements Tokens {

View File

@ -22,8 +22,9 @@
package com.compilercompany.ecmascript;
/**
**/
/*
* The states of the scanner.
*/
interface States {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Token.java
* Represents token instances: literals and identifiers.
*
* This file implements the class Token that is used to carry
* information from the Scanner to the Parser.

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Tokens.java
* Defines token classes and their print names.
*
* This interface defines values for each token class that occurs in
* ECMAScript 4. All but numericliteral, stringliteral, regexpliteral, and

View File

@ -24,8 +24,10 @@ import com.compilercompany.ecmascript.*;
import sun.tools.util.CommandLine;
import java.io.*;
/**
/*
* The main driver.
*/
public class Main {
String[] classes;

View File

@ -27,15 +27,8 @@ import java.util.ResourceBundle;
import java.text.MessageFormat;
import java.util.MissingResourceException;
/**
* Messages, verbose and error handling support.
*
* For errors, the failure modes are:
* error -- User did something wrong
* bug -- Bug has occurred in javah
* fatal -- We can't even find resources, so bail fast, don't localize
*
* @version 1.6, 02/02/00
/*
* Utility for the main driver.
*/
public class Util {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Not used.
*/
package com.compilercompany.ecmascript;
interface Attributes {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class Block
* Represents a basic block for flow analysis.
*/
public class Block {

View File

@ -27,7 +27,7 @@ import java.util.Enumeration;
import java.util.Hashtable;
/**
* Context
* Context used during semantic analysis.
*/
public class Context {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* interface Errors
* Not used.
**/
public interface Errors {

View File

@ -23,8 +23,7 @@
package com.compilercompany.ecmascript;
/**
*
* Evaluator
* The base visitor object extended by semantic evaluators.
*
* This is a visitor that is used by the compiler for various forms for
* evaluation of a parse tree (e.g. a type evaluator might compute the

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* interface Init
* Interface that object initializers implement.
*
* This interface is implemented by objects that can build
* instances of the Value class. For example, there is an

View File

@ -23,9 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class Node
*
* To be a node you need to implement this interface.
* The base Node class.
*/
public class Node {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Creates parse tree nodes.
*/
package com.compilercompany.ecmascript;
public final class NodeFactory {

View File

@ -20,6 +20,10 @@
* Jeff Dyer <jeff@compilercompany.com>
*/
/*
* Parse tree nodes.
*/
package com.compilercompany.ecmascript;
/**

View File

@ -26,9 +26,7 @@ import java.io.*;
import java.lang.reflect.*;
/**
* class Parser
*
* Parses ES4 programs.
* Parse JS2 programs.
*/
public class Parser implements Tokens, Errors {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Scope
* A scope, which contains slots.
*/
public interface Scope {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* Slot
* A slot.
*/
public class Slot {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
*
* The interfaces for all types.
*/
public interface Type extends Init {

View File

@ -25,9 +25,7 @@ import java.util.Hashtable;
import java.util.Vector;
/**
* Value
*
* This is the value class from which all other values derive.
* The value class from which all other values derive.
*/
abstract public class Value implements Scope {

View File

@ -26,13 +26,12 @@ import java.lang.reflect.*;
import java.util.*;
/**
* class BlockEvaluator
* Delineates the program into its basic execution blocks.
*
* The purpose of this pass is to delineate the basic
* blocks of the program. It is necessary to know all
* the blocks in the program before we can mark the
* flow-control edges and compute the dominance relationship
* between a reference and definition.
* It is necessary to know all the blocks in the program
* before we can mark the flow-control edges and compute
* the dominance relationship between a reference and
* definition.
*
* The algorithm for partitioning the program into basic
* blocks goes like this:

View File

@ -25,7 +25,7 @@ import java.util.*;
import java.io.StringReader;
/**
* ConstantEvaluator
* Computes the compile-time values of a program.
*
* The ConstantEvaluator evaluates all expressions to either Undefined or
* a definite constant value. Each statement evaluates to a CompletionValue
@ -38,7 +38,7 @@ import java.io.StringReader;
public class ConstantEvaluator extends Evaluator implements Tokens, Attributes {
private static final boolean debug = false;
private static final boolean debug = true;
// Expressions
@ -81,7 +81,7 @@ public class ConstantEvaluator extends Evaluator implements Tokens, Attributes {
}
if( qualifier != null &&
!(NamespaceType.type.includes(qualifier) || ClassType.type.includes(qualifier)) ) {
!(NamespaceType.type.includes(qualifier) || TypeType.type.includes(qualifier)) ) {
error(context,0,"Identifier qualifier must evaluate to a namespace or type.",node.qualifier.pos());
return UndefinedValue.undefinedValue;
}

View File

@ -29,7 +29,7 @@ import java.util.Vector;
public final class ClassType extends ObjectType implements Type {
boolean debug = false;
private static final boolean debug = false;
public static final TypeValue type = new TypeValue(new ClassType());
@ -47,7 +47,7 @@ public final class ClassType extends ObjectType implements Type {
private ClassType() {
super("class");
TypeType.type.addSub(this);
ObjectType.type.addSub(this);
}
private Type superType;

View File

@ -29,7 +29,7 @@ import java.util.Vector;
public class ObjectType implements Type {
private static final boolean debug = false;
private static final boolean debug = true;
public static final TypeValue type = new TypeValue(new ObjectType());
@ -108,11 +108,9 @@ public class ObjectType implements Type {
public boolean includes(Value value) {
// A type is always a member of itself.
if(value.type==ObjectType.type) {
return true;
}
if( debug ) {
Debugger.trace("ObjectType.includes() with this = " + this + ", value.type = " + value.type + ", values_ = " + values_);
}
return values_.contains(value.type);
}

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class BooleanValue
* A boolean value: true or false.
*/
public class BooleanValue extends ObjectValue {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class CharacterValue
* A character value.
*/
public class CharacterValue extends ObjectValue {

View File

@ -24,10 +24,9 @@ package com.compilercompany.ecmascript;
import java.util.Vector;
/**
* class CodeValue
* A code value (intermediate).
*
* This value holds the compiled code for an unevaluated
* expression.
* This value holds the intermediate code for an non-constant value.
*/
public class CodeValue extends Value {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class CompletionValue
* A completion value (intermediate).
*/
public class CompletionValue extends Value {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* GlobalObject
* The global object initializer.
*
* An instance of this class is used to initialize a global
* object.

View File

@ -25,7 +25,7 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* class ListValue
* A list value (intermediate).
*/
public class ListValue extends ObjectValue {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class NullValue
* The null value.
*/
public class NullValue extends ObjectValue {

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class NumberValue
* A number value.
*/
public final class NumberValue extends ObjectValue {

View File

@ -26,7 +26,7 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* ObjectValue
* An object value.
*/
public class ObjectValue extends Value implements Attributes, Scope {
@ -46,6 +46,7 @@ public class ObjectValue extends Value implements Attributes, Scope {
*/
public ObjectValue() {
this.type = null;
}
/**

View File

@ -25,12 +25,12 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* class ReferenceValue
* A reference value.
*/
public class ReferenceValue extends Value {
private static final boolean debug = false;
private static final boolean debug = true;
Scope scope;
Vector namespaces;
@ -101,7 +101,7 @@ public class ReferenceValue extends Value {
public Slot getSlot(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getSlot() with context = " + context );
Debugger.trace("ReferenceValue.getSlot() with namespaces = " + namespaces + ", name = " + name );
}
Slot slot = null;
@ -140,7 +140,7 @@ public class ReferenceValue extends Value {
public Value getValue(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getValue() with context = " + context );
Debugger.trace("ReferenceValue.getValue() with namespaces = " + namespaces + ", name = " + name );
}
Value value = UndefinedValue.undefinedValue;
@ -169,7 +169,7 @@ public class ReferenceValue extends Value {
public Value getType(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getValue() with context = " + context );
Debugger.trace("ReferenceValue.getType() with namespaces = " + namespaces + ", name = " + name );
}
Value type = ObjectType.type;
@ -183,7 +183,7 @@ public class ReferenceValue extends Value {
Value getAttrs(Context context) throws Exception {
if( debug ) {
Debugger.trace("ReferenceType.getAttrs() with context = " + context );
Debugger.trace("ReferenceValue.getAttrs() with namespaces = " + namespaces + ", name = " + name );
}
Value attrs = null;

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class StringValue
* A string value.
*/
public final class StringValue extends ObjectValue {

View File

@ -25,7 +25,7 @@ import java.util.Vector;
import java.util.Enumeration;
/**
* class TypeValue
* A type value.
*
* TypeValues have an internal property valueType that is
* the type that this value represents. The type of a TypeValue

View File

@ -23,7 +23,7 @@
package com.compilercompany.ecmascript;
/**
* class UndefinedValue
* The undefined value.
*/
public class UndefinedValue extends ObjectValue {