dmd.lexer
Implements the lexical analyzer, which converts source code into lexical tokens.
Specification: Lexical
License
Source: lexer.d
Documentation: https://dlang.org/phobos/dmd_lexer.html
-
Declaration
classLexer;-
Declaration
boolCcompile;trueif compiling ImportC -
Declaration
ubyteboolsize;size of a C Bool, default 1
-
Declaration
ubyteshortsize;size of a C short, default 2
-
Declaration
ubyteintsize;size of a C int, default 4
-
Declaration
ubytelongsize;size of C long, 4 or 8
-
Declaration
ubytelong_longsize;size of a C long long, default 8
-
Declaration
ubytelong_doublesize;size of C long double, 8 or D real.sizeof
-
Declaration
ubytewchar_tsize;size of C wchar_t, 2 or 4
-
Declaration
pure nothrow this(const(char)*filename, const(char)*base, size_tbegoffset, size_tendoffset, booldoDocComment, boolcommentToken);Creates a Lexer for the source code
base[begoffset..endoffset+1]. The last character,base[endoffset], must benull(0) or EOF (0x1A).Parameters
const(char)*filenameused for error messages
const(char)*basesource code, must be terminated by a
null(0) or EOF (0x1A) charactersize_tbegoffsetstarting offset into
base[]size_tendoffsetthe last offset to read into
base[]booldoDocCommenthandle documentation comments
boolcommentTokencomments become TOK.comment's
-
Declaration
nothrow this();Used for unittests for a mock Lexer
-
Declaration
final nothrow voidresetDefineLines(const(char)[]slice);Reset lexer to lex #define's
-
Declaration
final nothrow voidnextDefineLine();Set up for next #define line. p should be at start of next line.
-
Declaration
pure nothrow @safe Token*allocateToken();Return Value
a newly allocated
Token. -
Declaration
final nothrow TOKpeekNext();Look ahead at next token's value.
-
Declaration
final nothrow TOKpeekNext2();Look 2 tokens ahead at value.
-
Declaration
final nothrow voidscan(Token*t);Turn next token in buffer into a token.
Parameters
Token*tthe token to set the resulting Token to
-
Declaration
final nothrow Token*peekPastParen(Token*tk);tkis on the opening (. Look ahead and return token that is past the closing ). -
Declaration
nothrow boolparseSpecialTokenSequence();Parse special token sequence:
Return Value
trueif the special token sequence was handled -
Declaration
final nothrow voidpoundLine(ref Tokentok, boollinemarker);Parse line/file preprocessor directive: #line linnum [filespec] Allow __LINE__ for linnum, and __FILE__ for filespec. Accept
linemarkerformat:linnum [filespec] {flags}
There can be zero or more flags, which are one of the digits 1..4, and must be in ascending order. The flags are ignored.Parameters
Tokentoktoken we're on, which is linnum of
linemarkerboollinemarkertrueif line marker format and lexer is on linnumReferences:
linemarkerhttps://gcc.gnu.org/onlinedocs/gcc-11.1.0/cpp/Preprocessor-Output.html -
Declaration
final nothrow voidskipToNextLine(OutBuffer*defines= null);Scan forward to start of next line.
Parameters
OutBuffer*definessend characters to
defines -
Declaration
static pure nothrow const(char)*combineComments(const(char)[]c1, const(char)[]c2, boolnewParagraph);Combine two document comments into one, separated by an extra newline if
newParagraphistrue.
-