Loading...
Searching...
No Matches
by::stelaTokenScan Class Reference

Base class for token scanning strategies. More...

#include <stelaTokenScan.hpp>

Inheritance diagram for by::stelaTokenScan:
by::stelaTokenScanable by::stelaIndentScan by::stelaNormalScan

Public Member Functions

virtual nint onScan (stelaParser &ps, ZZSTYPE *yylval, ZZLTYPE *loc, zzscan_t yyscanner, nbool &isBypass) override
 Pure virtual method for concrete token scanning implementations.
 
nint onScan (stelaParser &ps, ZZSTYPE *val, ZZLTYPE *loc, zzscan_t scanner)
 Default entry point for token scanning.
 
virtual nint onScan (stelaParser &ps, ZZSTYPE *yylval, ZZLTYPE *loc, zzscan_t yyscanner, nbool &isBypass)=0
 Pure virtual method for concrete token scanning implementations.
 
- Public Member Functions inherited from by::stelaTokenScanable
nint onScan (stelaParser &ps, ZZSTYPE *val, ZZLTYPE *loc, zzscan_t scanner)
 Default entry point for token scanning.
 

Detailed Description

Base class for token scanning strategies.

As mentioned in stelaParser, the parser must dynamically change scan mode to precisely measure indentation. tokenScan handles one such scan mode strategy.

Command tokens

Among tokens exist command tokens like SCAN_AGAIN, SCAN_EXIT that give commands to the scanner or parser. See zztokenType enum in stelaParser.hpp for details.

isBypass

IndentScan ignores most tokens and focuses solely on counting whitespace. However, if multiple tokens were pushed from the previous line, it operates in bypass mode internally. During this time, it skips indentation counting and simply reads and returns the stored tokens.

Member Function Documentation

◆ onScan() [1/3]

nint by::stelaTokenScanable::onScan ( stelaParser & ps,
ZZSTYPE * val,
ZZLTYPE * loc,
zzscan_t scanner )

Default entry point for token scanning.

This non-virtual method acts as a wrapper that internally dispatches to the pure virtual onScan method, which must be implemented by concrete scanner strategies.

Parameters
psThe stelaParser instance.
valThe YYSTYPE value pointer for the token.
locThe YYLTYPE location pointer for the token.
scannerThe Flex scanner instance.
Returns
The token ID.

◆ onScan() [2/3]

nint by::stelaTokenScan::onScan ( stelaParser & ps,
ZZSTYPE * yylval,
ZZLTYPE * loc,
zzscan_t yyscanner,
nbool & isBypass )
overridevirtual

Pure virtual method for concrete token scanning implementations.

Parameters
psThe stelaParser instance.
yylvalThe YYSTYPE value pointer for the token.
locThe YYLTYPE location pointer for the token.
yyscannerThe Flex scanner instance.
isBypassFlag indicating if indentation bypass is active.
Returns
The token ID.

Implements by::stelaTokenScanable.

Reimplemented in by::stelaNormalScan, and by::stelaIndentScan.

◆ onScan() [3/3]

virtual nint by::stelaTokenScanable::onScan ( stelaParser & ps,
ZZSTYPE * yylval,
ZZLTYPE * loc,
zzscan_t yyscanner,
nbool & isBypass )
virtual

Pure virtual method for concrete token scanning implementations.

Parameters
psThe stelaParser instance.
yylvalThe YYSTYPE value pointer for the token.
locThe YYLTYPE location pointer for the token.
yyscannerThe Flex scanner instance.
isBypassFlag indicating if indentation bypass is active.
Returns
The token ID.

Implements by::stelaTokenScanable.


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