jbet
Class Lexer
java.lang.Object
jbet.Lexer
public class Lexer
- extends java.lang.Object
Lexical analyzer for JBET. This methods is used to lex
command lines/files, and JBET assembler. This lexer uses
a maximum of 2 lookahead character and tokens.
This file contains fields that store
1) the lexer's current state
2) the input stream
3) the state stack
4) the look ahead buffers for characters and tokens.
This class has many externally used methods marked by "used externally."
The readch_lowlevel() and read_token() methods do most of the work. TBC.
$Id: Lexer.java,v 1.22 2003/09/09 17:31:54 areisse Exp $
Constructor Summary |
Lexer(java.io.InputStream is,
java.lang.String fn)
|
Lexer(java.io.Reader reader,
java.lang.String fn)
|
Method Summary |
void |
die(java.lang.String msg)
|
ClassInfo |
getClass(java.lang.String defclass)
|
ClassInfo[] |
getClasses()
get a bunch of classes. |
void |
getClasses(java.util.Collection classes)
|
void |
getClasses(java.util.Collection classes,
ClassFinder f)
|
void |
getClassNames(java.util.Collection classes)
|
void |
getClassNames(java.util.Collection classes,
boolean sense)
|
MethodInfo |
getMethod(java.lang.String defclass)
|
java.lang.Object |
getThing(java.lang.String defclass)
parse a class, method, or field, load it and return. |
Token |
justread()
|
Token |
match(int type)
|
Descriptor |
parse_descriptor()
|
double |
parse_double()
|
Thing |
parse_element_with_default(java.lang.String def,
boolean opttype)
parses a method or field, with a default class name. |
int |
parse_flags(int ok)
|
int |
parse_int()
|
long |
parse_long()
|
java.lang.String |
parse_name()
|
java.lang.String |
parse_optclassname(java.lang.String default_class)
|
java.lang.String |
parse_string()
|
Thing |
parse_thing(java.lang.String defclass)
|
Thing |
parse_thing(java.lang.String defclass,
int flags)
|
Type |
parse_type()
|
Descriptor |
parseOptDescriptor(java.lang.String cname,
java.lang.String mname)
|
Type |
parseOptType(java.lang.String cname,
java.lang.String fname)
|
Token |
peek()
|
void |
pop()
|
void |
push(int s)
|
Token |
read()
|
void |
setstate(int s)
|
void |
term()
|
void |
unexpected(Token tok)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ST_TAG
public static final int ST_TAG
- See Also:
- Constant Field Values
ST_OPT
public static final int ST_OPT
- See Also:
- Constant Field Values
ST_DASH
public static final int ST_DASH
- See Also:
- Constant Field Values
ST_NORMAL
public static final int ST_NORMAL
- See Also:
- Constant Field Values
ST_TYPE
public static final int ST_TYPE
- See Also:
- Constant Field Values
ST_STRING
public static final int ST_STRING
- See Also:
- Constant Field Values
ST_CONST
public static final int ST_CONST
- See Also:
- Constant Field Values
ST_ASM
public static final int ST_ASM
- See Also:
- Constant Field Values
ST_ASM_ARG
public static final int ST_ASM_ARG
- See Also:
- Constant Field Values
ST_COMMENT
public static final int ST_COMMENT
- See Also:
- Constant Field Values
Lexer
public Lexer(java.io.Reader reader,
java.lang.String fn)
Lexer
public Lexer(java.io.InputStream is,
java.lang.String fn)
push
public void push(int s)
pop
public void pop()
peek
public Token peek()
setstate
public void setstate(int s)
read
public Token read()
justread
public Token justread()
die
public void die(java.lang.String msg)
unexpected
public void unexpected(Token tok)
match
public Token match(int type)
term
public void term()
parse_name
public java.lang.String parse_name()
parse_string
public java.lang.String parse_string()
parse_descriptor
public Descriptor parse_descriptor()
parse_type
public Type parse_type()
parse_long
public long parse_long()
parse_int
public int parse_int()
parse_double
public double parse_double()
parse_flags
public int parse_flags(int ok)
parseOptDescriptor
public Descriptor parseOptDescriptor(java.lang.String cname,
java.lang.String mname)
throws ClassFileException
- Throws:
ClassFileException
parseOptType
public Type parseOptType(java.lang.String cname,
java.lang.String fname)
throws ClassFileException
- Throws:
ClassFileException
parse_optclassname
public java.lang.String parse_optclassname(java.lang.String default_class)
parse_thing
public Thing parse_thing(java.lang.String defclass)
parse_thing
public Thing parse_thing(java.lang.String defclass,
int flags)
getThing
public java.lang.Object getThing(java.lang.String defclass)
throws ClassFileException,
ElementNotFoundException
- parse a class, method, or field, load it and return. this will
throw an exception if it fails, so you can just call it and
assume that it worked.
- Parameters:
defclass
- the default class
- Throws:
ClassFileException
ElementNotFoundException
getMethod
public MethodInfo getMethod(java.lang.String defclass)
throws ClassFileException,
ElementNotFoundException
- Throws:
ClassFileException
ElementNotFoundException
getClass
public ClassInfo getClass(java.lang.String defclass)
throws ClassFileException,
ElementNotFoundException
- Throws:
ClassFileException
ElementNotFoundException
getClasses
public ClassInfo[] getClasses()
throws ClassFileException
- get a bunch of classes. supports @/foo/bar/* notation for all
the classes in a package
- Throws:
ClassFileException
getClassNames
public void getClassNames(java.util.Collection classes)
throws ClassFileException
- Throws:
ClassFileException
getClassNames
public void getClassNames(java.util.Collection classes,
boolean sense)
throws ClassFileException
- Throws:
ClassFileException
getClasses
public void getClasses(java.util.Collection classes)
throws ClassFileException
- Throws:
ClassFileException
getClasses
public void getClasses(java.util.Collection classes,
ClassFinder f)
throws ClassFileException
- Throws:
ClassFileException
parse_element_with_default
public Thing parse_element_with_default(java.lang.String def,
boolean opttype)
throws java.lang.Exception
- parses a method or field, with a default class name.
Using 2 lookahead here is safe. 3 would not be. I would
really like a rewindable multistate lexer, but that's a little
heavy for my meager requirements here
- Parameters:
def
- default classopttype
- true if you want it to accept a type.
- Throws:
java.lang.Exception