When lexing Ruby source, the lexer has a small amount of state to tell which kind of token it is currently lexing.
More...
|
enum pm_lex_mode:: { ... } | mode |
| The type of this lex mode.
|
|
union { | |
|
struct { | |
|
size_t nesting | |
| This keeps track of the nesting level of the list. More...
|
|
bool interpolation | |
| Whether or not interpolation is allowed in this list. More...
|
|
uint8_t incrementor | |
| When lexing a list, it takes into account balancing the terminator if the terminator is one of (), [], {}, or <>. More...
|
|
uint8_t terminator | |
| This is the terminator of the list literal. More...
|
|
uint8_t breakpoints [11] | |
| This is the character set that should be used to delimit the tokens within the list. More...
|
|
} list | |
|
struct { | |
|
size_t nesting | |
| This keeps track of the nesting level of the regular expression. More...
|
|
uint8_t incrementor | |
| When lexing a regular expression, it takes into account balancing the terminator if the terminator is one of (), [], {}, or <>. More...
|
|
uint8_t terminator | |
| This is the terminator of the regular expression. More...
|
|
uint8_t breakpoints [6] | |
| This is the character set that should be used to delimit the tokens within the regular expression. More...
|
|
} regexp | |
|
struct { | |
|
size_t nesting | |
| This keeps track of the nesting level of the string. More...
|
|
bool interpolation | |
| Whether or not interpolation is allowed in this string. More...
|
|
bool label_allowed | |
| Whether or not at the end of the string we should allow a :, which would indicate this was a dynamic symbol instead of a string. More...
|
|
uint8_t incrementor | |
| When lexing a string, it takes into account balancing the terminator if the terminator is one of (), [], {}, or <>. More...
|
|
uint8_t terminator | |
| This is the terminator of the string. More...
|
|
uint8_t breakpoints [6] | |
| This is the character set that should be used to delimit the tokens within the string. More...
|
|
} string | |
|
struct { | |
|
const uint8_t * ident_start | |
| A pointer to the start of the heredoc identifier. More...
|
|
size_t ident_length | |
| The length of the heredoc identifier. More...
|
|
pm_heredoc_quote_t quote | |
| The type of quote that the heredoc uses. More...
|
|
pm_heredoc_indent_t indent | |
| The type of indentation that the heredoc uses. More...
|
|
const uint8_t * next_start | |
| This is the pointer to the character where lexing should resume once the heredoc has been completely processed. More...
|
|
size_t common_whitespace | |
| This is used to track the amount of common whitespace on each line so that we know how much to dedent each line in the case of a tilde heredoc. More...
|
|
} heredoc | |
|
} | as | |
| The data associated with this type of lex mode.
|
|
struct pm_lex_mode * | prev |
| The previous lex state so that it knows how to pop.
|
|
When lexing Ruby source, the lexer has a small amount of state to tell which kind of token it is currently lexing.
For example, when we find the start of a string, the first token that we return is a TOKEN_STRING_BEGIN token. After that the lexer is now in the PM_LEX_STRING mode, and will return tokens that are found as part of a string.
Definition at line 97 of file parser.h.
uint8_t pm_lex_mode::breakpoints[6] |
This is the character set that should be used to delimit the tokens within the list.
This is the character set that should be used to delimit the tokens within the string.
This is the character set that should be used to delimit the tokens within the regular expression.
Definition at line 159 of file parser.h.
uint8_t pm_lex_mode::incrementor |
When lexing a list, it takes into account balancing the terminator if the terminator is one of (), [], {}, or <>.
When lexing a string, it takes into account balancing the terminator if the terminator is one of (), [], {}, or <>.
When lexing a regular expression, it takes into account balancing the terminator if the terminator is one of (), [], {}, or <>.
Definition at line 150 of file parser.h.
uint8_t pm_lex_mode::terminator |
This is the terminator of the list literal.
This is the terminator of the string.
This is the terminator of the regular expression.
It is typically either a single or double quote.
Definition at line 153 of file parser.h.