OpenMW
Public Types | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes
Compiler::Scanner Class Reference

Scanner. More...

#include <scanner.hpp>

List of all members.

Public Types

enum  keyword {
  K_begin, K_end, K_short, K_long,
  K_float, K_if, K_endif, K_else,
  K_elseif, K_while, K_endwhile, K_return,
  K_messagebox, K_set, K_to, K_getsquareroot,
  K_menumode, K_random, K_startscript, K_stopscript,
  K_scriptrunning, K_getdistance, K_getsecondspassed, K_enable,
  K_disable, K_getdisabled
}
enum  special {
  S_newline, S_open, S_close, S_cmpEQ,
  S_cmpNE, S_cmpLT, S_cmpLE, S_cmpGT,
  S_cmpGE, S_plus, S_minus, S_mult,
  S_div, S_comma, S_ref, S_member
}

Public Member Functions

 Scanner (ErrorHandler &errorHandler, std::istream &inputStream, const Extensions *extensions=0)
 constructor
void scan (Parser &parser)
 Scan a token and deliver it to the parser.
void putbackSpecial (int code, const TokenLoc &loc)
 put back a special token
void putbackInt (int value, const TokenLoc &loc)
 put back an integer token
void putbackFloat (float value, const TokenLoc &loc)
 put back a float token
void putbackName (const std::string &name, const TokenLoc &loc)
 put back a name toekn
void putbackKeyword (int keyword, const TokenLoc &loc)
 put back a keyword token
void listKeywords (std::vector< std::string > &keywords)
 Append all known keywords to \æ kaywords.

Private Types

enum  putback_type {
  Putback_None, Putback_Special, Putback_Integer, Putback_Float,
  Putback_Name, Putback_Keyword
}

Private Member Functions

 Scanner (const Scanner &)
Scanneroperator= (const Scanner &)
bool get (char &c)
void putback (char c)
bool scanToken (Parser &parser)
bool scanInt (char c, Parser &parser, bool &cont)
bool scanFloat (const std::string &intValue, Parser &parser, bool &cont)
bool scanName (char c, Parser &parser, bool &cont)
bool scanName (char c, std::string &name)
bool scanSpecial (char c, Parser &parser, bool &cont)

Static Private Member Functions

static bool isWhitespace (char c)

Private Attributes

ErrorHandlermErrorHandler
TokenLoc mLoc
TokenLoc mPrevLoc
std::istream & mStream
const ExtensionsmExtensions
putback_type mPutback
int mPutbackCode
int mPutbackInteger
float mPutbackFloat
std::string mPutbackName
TokenLoc mPutbackLoc

Detailed Description

Scanner.

This class translate a char-stream to a token stream (delivered via parser-callbacks).


Member Enumeration Documentation

Enumerator:
K_begin 
K_end 
K_short 
K_long 
K_float 
K_if 
K_endif 
K_else 
K_elseif 
K_while 
K_endwhile 
K_return 
K_messagebox 
K_set 
K_to 
K_getsquareroot 
K_menumode 
K_random 
K_startscript 
K_stopscript 
K_scriptrunning 
K_getdistance 
K_getsecondspassed 
K_enable 
K_disable 
K_getdisabled 
Enumerator:
Putback_None 
Putback_Special 
Putback_Integer 
Putback_Float 
Putback_Name 
Putback_Keyword 
Enumerator:
S_newline 
S_open 
S_close 
S_cmpEQ 
S_cmpNE 
S_cmpLT 
S_cmpLE 
S_cmpGT 
S_cmpGE 
S_plus 
S_minus 
S_mult 
S_div 
S_comma 
S_ref 
S_member 

Constructor & Destructor Documentation

Compiler::Scanner::Scanner ( const Scanner ) [private]
Compiler::Scanner::Scanner ( ErrorHandler errorHandler,
std::istream &  inputStream,
const Extensions extensions = 0 
)

constructor


Member Function Documentation

bool Compiler::Scanner::get ( char &  c) [private]
bool Compiler::Scanner::isWhitespace ( char  c) [static, private]
void Compiler::Scanner::listKeywords ( std::vector< std::string > &  keywords)

Append all known keywords to \æ kaywords.

Scanner& Compiler::Scanner::operator= ( const Scanner ) [private]
void Compiler::Scanner::putback ( char  c) [private]
void Compiler::Scanner::putbackFloat ( float  value,
const TokenLoc loc 
)

put back a float token

void Compiler::Scanner::putbackInt ( int  value,
const TokenLoc loc 
)

put back an integer token

void Compiler::Scanner::putbackKeyword ( int  keyword,
const TokenLoc loc 
)

put back a keyword token

void Compiler::Scanner::putbackName ( const std::string &  name,
const TokenLoc loc 
)

put back a name toekn

void Compiler::Scanner::putbackSpecial ( int  code,
const TokenLoc loc 
)

put back a special token

void Compiler::Scanner::scan ( Parser parser)

Scan a token and deliver it to the parser.

bool Compiler::Scanner::scanFloat ( const std::string &  intValue,
Parser parser,
bool &  cont 
) [private]
bool Compiler::Scanner::scanInt ( char  c,
Parser parser,
bool &  cont 
) [private]
bool Compiler::Scanner::scanName ( char  c,
Parser parser,
bool &  cont 
) [private]
bool Compiler::Scanner::scanName ( char  c,
std::string &  name 
) [private]
Todo:
add an option to disable the following hack. Also, find out who is responsible for allowing it in the first place and meet up with that person in a dark alley.
bool Compiler::Scanner::scanSpecial ( char  c,
Parser parser,
bool &  cont 
) [private]
bool Compiler::Scanner::scanToken ( Parser parser) [private]

Member Data Documentation

std::string Compiler::Scanner::mPutbackName [private]
std::istream& Compiler::Scanner::mStream [private]

The documentation for this class was generated from the following files: