Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
dmd.lexer
Compiler implementation of the
D programming language.
Authors:
License:
Source lexer.d
Documentation https://dlang.org/phobos/dmd_lexer.html
- static immutable ubyte[256]
cmtable; - Do our own char maps
- abstract class
ErrorHandler; - Handles error messages
- abstract void
error(const(char)*format, ...); - Report an error message.Parameters:
const(char)* formatformat string for error ... format string arguments - abstract void
error(Locloc, const(char)*format, ...); - Report an error message.Parameters:
Loc locLocation of error const(char)* formatformat string for error ... format string arguments
- class
Lexer: dmd.lexer.ErrorHandler; -
- 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 be null (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) character size_t begoffsetstarting offset into base[] size_t endoffsetthe last offset to read into base[] bool doDocCommenthandle documentation comments bool commentTokencomments become TOK.comment's - final TOK
peekNext(); - Look ahead at next token's value.
- final TOK
peekNext2(); - Look 2 tokens ahead at value.
- final void
scan(Token*t); - Turn next token in buffer into a token.
- final Token*
peekPastParen(Token*tk); - tk is on the opening (. Look ahead and return token that is past the closing ).
- final uint
escapeSequence(); - Parse escape sequence.
- static dchar
escapeSequence(ErrorHandlerhandler, ref const(char)*sequence); - Parse the given string literal escape sequence into a single character.Parameters:
ErrorHandler handlerthe error handler object const(char)* sequencepointer to string with escape sequence to parse. this is a reference variable that is also used to return the position after the sequence Returns:the escaped sequence as a single character - final void
wysiwygStringConstant(Token*result); - Lex a wysiwyg string. p must be pointing to the first character before the contents of the string literal. The character pointed to by p will be used as the terminating character (i.e. backtick or double-quote).Parameters:
Token* resultpointer to the token that accepts the result - final TOK
hexStringConstant(Token*t); - Lex hex strings: x"0A ae 34FE BD"
- final void
delimitedStringConstant(Token*result); - Lex a delimited string. Some examples of delimited strings are:
q"(foo(xxx))" // "foo(xxx)" q"[foo$(LPAREN)]" // "foo$(LPAREN)" q"/foo]/" // "foo]" q"HERE foo HERE" // "foo\n"
It is assumed that p points to the opening double-quote '"'.Parameters:Token* resultpointer to the token that accepts the result - final void
tokenStringConstant(Token*result); - Lex a token string. Some examples of token strings are:
q{ foo(xxx) } // " foo(xxx) " q{foo$(LPAREN)} // "foo$(LPAREN)" q{{foo}"}"} // "{foo}"}""
It is assumed that p points to the opening curly-brace '{'.Parameters:Token* resultpointer to the token that accepts the result - final void
escapeStringConstant(Token*t); - Scan a double-quoted string while building the processed string value by handling escape sequences. The result is returned in the given
ttoken. This function assumes that p currently points to the opening double-quote of the string.Parameters:Token* tthe token to set the resulting string to - final TOK
charConstant(Token*t); - final void
stringPostfix(Token*t); - Get postfix of string literal.
- final TOK
number(Token*t); - Read in a number. If it's an integer, store it in tok.TKutok.Vlong. integers can be decimal, octal or hex Handle the suffixes U, UL, LU, L, etc. If it's double, store it in tok.TKutok.Vdouble.Returns:TKnum TKdouble,...
- final TOK
inreal(Token*t); - Read in characters, converting them to real.Bugs:Exponent overflow not detected. Too much requested precision is not detected.
- final void
poundLine(); - parse: #line linnum [filespec] also allow __LINE__ for linnum, and __FILE__ for filespec
- final uint
decodeUTF(); - Decode UTF character. Issue error messages for invalid sequences. Return decoded character, advance p to last character in UTF sequence.
- final void
getDocComment(Token*t, uintlineComment, boolnewParagraph); - Parse doc comment embedded between t.ptr and p. Remove trailing blanks and tabs from lines. Replace all newlines with \n. Remove leading comment character from each line. Decide if it's a lineComment or a blockComment. Append to previous one for this token.If newParagraph is true, an extra newline will be added between adjoining doc comments.
- static const(char)*
combineComments(const(char)*c1, const(char)*c2, boolnewParagraph); - Combine two document comments into one, separated by an extra newline if newParagraph is true.
Copyright © 1999-2018 by the D Language Foundation | Page generated by
Ddoc on Thu Nov 1 12:28:28 2018