All Packages Class Hierarchy This Package Previous Next Index
Class epp.Lex
java.lang.Object
|
+----epp.Lex
- public class Lex
- extends Object
EPP プリプロセッサが持つメソッドのうち
ファイル Lex.java で定義されるメソッドは、
Java 言語の字句解析を行なうためのものです。.
注意: このクラスは、 javadoc を作るための便宜的なクラスです。
実際の EPP のソースコード中には存在しません。
構文解析ルーチンは、メソッド match と matchAny によって、
字句解析ルーチンを間接的に呼び出しています。
メソッド match あるいは matchAny の呼び出しによって新たなトークンが
必要になると、メソッド readToken が呼ばれます。
このメソッドは、必要に応じてさらに他のメソッドを呼び出して、
EppInputStream からトークンを1つ切り出して返します。
plug-in は、これらのメソッドを拡張することで、
この字句解析ルーチンの挙動を変更できます。
例えば、普通の Java では "**" という文字列は :"*" という Symbol 2つに
字句解析されますが、それを :"**" という1つの Symbol に字句解析するように
拡張するには、次のようにします。
SystemMixin NewOp {
class Epp {
extend Token readOperator(EppInputStream in){
if (in.peekc() == '*') {
int p = in.pointer();
in.getc();
if (in.getc() == '*') {
return :"**";
}
in.backtrack(p);
return original(in);
} else {
return original(in);
}
}
}
}
- See Also:
- EppInputStream, match, matchAny, readToken
-
Lex()
-
-
readCharLiteral(EppInputStream)
- トークンの先頭がシングルクォートだった時に、 readOperator から
呼び出され、文字リテラルを返します。
-
readEndOfLineComment(EppInputStream)
- "//" で始まるコメントを読み飛ばし、次のトークンを返します。.
-
readEscapedChar(EppInputStream, StringBuffer, char)
- "¥"" のようなエスケープシーケンスを処理します。.
-
readId(EppInputStream)
- トークンの先頭がアルファベットである場合に呼び出されるメソッドです。.
-
readNumber(EppInputStream)
- 数値リテラルを読んで返します。.
-
readOperator(EppInputStream)
- トークンの先頭が記号である場合に呼び出されるメソッドです。.
-
readSharp(EppInputStream)
- "#" で始まるトークンを処理します。.
-
readStringLiteral(EppInputStream)
- トークンの先頭がダブルクォートだった時に、 readOperator から
呼び出され、文字列リテラルを返します。
-
readTokenAtNextLine(EppInputStream)
- 行末までを無視し、次の行からトークンを読んでそれを返します。.
-
readTokenStart(EppInputStream)
- 引数 in からトークンを1つ読んで返します。.
-
readTraditionalComment(EppInputStream)
- "/*" で始まるコメントを読み飛ばし、次のトークンを返します。.
Lex
public Lex()
readTokenStart
public Token readTokenStart(EppInputStream in)
- 引数 in からトークンを1つ読んで返します。.
空白文字は既にスキップされているものと仮定します。
最初の1文字を先読みし、その値がアルファベットか
数字か記号かによって、
readId, readNumber, readOperator を呼び出します。
このメソッドは、 readToken から呼ばれます。
- See Also:
- readToken
readId
public Token readId(EppInputStream in)
- トークンの先頭がアルファベットである場合に呼び出されるメソッドです。.
識別子あるいはキーワード(if, while など)を読んで Symbol
として返します。
readNumber
public Token readNumber(EppInputStream in)
- 数値リテラルを読んで返します。.
トークンの先頭が数字である場合に readTokenStart から
呼び出されます。
ただし、 ".1" のような場合は、 readTokenStart から
まず readOperator が呼び出され、そこからこのメソッドが呼ばれます。
readOperator
public Token readOperator(EppInputStream in)
- トークンの先頭が記号である場合に呼び出されるメソッドです。.
必要に応じて、 readTraditionalComment など他のメソッドを呼び出します。
readStringLiteral
public Token readStringLiteral(EppInputStream in)
- トークンの先頭がダブルクォートだった時に、 readOperator から
呼び出され、文字列リテラルを返します。
readCharLiteral
public Token readCharLiteral(EppInputStream in)
- トークンの先頭がシングルクォートだった時に、 readOperator から
呼び出され、文字リテラルを返します。
readEscapedChar
public void readEscapedChar(EppInputStream in,
StringBuffer buf,
char c)
- "¥"" のようなエスケープシーケンスを処理します。.
readStringLiteral と readCharLiteral から呼び出されます。
readTraditionalComment
public Token readTraditionalComment(EppInputStream in)
- "/*" で始まるコメントを読み飛ばし、次のトークンを返します。.
"/*" の2文字はすでに消費された状態で呼び出されます。
readEndOfLineComment
public Token readEndOfLineComment(EppInputStream in)
- "//" で始まるコメントを読み飛ばし、次のトークンを返します。.
"//" の2文字はすでに消費された状態で呼び出されます。
readSharp
public Token readSharp(EppInputStream in)
- "#" で始まるトークンを処理します。.
"#" の1文字はすでに消費された状態で呼び出されます。
このメソッドのデフォルトの動作は、readTokenAtNextLine メソッドを
呼び出します。
( #epp コマンドを読み飛ばすためです。)
readTokenAtNextLine
public Token readTokenAtNextLine(EppInputStream in)
- 行末までを無視し、次の行からトークンを読んでそれを返します。.
このメソッドは readEndOfLineComment および readSharp から
呼び出されます。
All Packages Class Hierarchy This Package Previous Next Index