style: Normed the first part of scanner.c (adding the header for my fix computer)
This commit is contained in:
parent
05ebcbef50
commit
51c532991d
2 changed files with 134 additions and 146 deletions
18
.clangd
18
.clangd
|
|
@ -46,15 +46,15 @@ CompileFlags: # Tweak the parse settings
|
||||||
- "-I/home/maix/shcat/output/include/"
|
- "-I/home/maix/shcat/output/include/"
|
||||||
- "-I/home/maix/shcat/generic_sources/header/"
|
- "-I/home/maix/shcat/generic_sources/header/"
|
||||||
- "-I/home/maix/shcat/exec/src/arith/"
|
- "-I/home/maix/shcat/exec/src/arith/"
|
||||||
- "-I/home/raphael/42/shcat/vendor/"
|
- "-I/home/raphael/Documents/shcat/vendor/"
|
||||||
- "-I/home/raphael/42/shcat/stdme/include/"
|
- "-I/home/raphael/Documents/shcat/stdme/include/"
|
||||||
- "-I/home/raphael/42/shcat/allocator/include/"
|
- "-I/home/raphael/Documents/shcat/allocator/include/"
|
||||||
- "-I/home/raphael/42/shcat/stdme/vendor/"
|
- "-I/home/raphael/Documents/shcat/stdme/vendor/"
|
||||||
- "-I/home/raphael/42/shcat/stdme/output/include/"
|
- "-I/home/raphael/Documents/shcat/stdme/output/include/"
|
||||||
- "-I/home/raphael/42/shcat/stdme/generic_sources/header/"
|
- "-I/home/raphael/Documents/shcat/stdme/generic_sources/header/"
|
||||||
- "-I/home/raphael/42/shcat/includes/"
|
- "-I/home/raphael/Documents/shcat/includes/"
|
||||||
- "-I/home/raphael/42/shcat/output/include/"
|
- "-I/home/raphael/Documents/shcat/output/include/"
|
||||||
- "-I/home/raphael/42/shcat/exec/src/arith/"
|
- "-I/home/raphael/Documents/shcat/exec/src/arith/"
|
||||||
- "-I/home/rparodi/Documents/shcat/vendor/"
|
- "-I/home/rparodi/Documents/shcat/vendor/"
|
||||||
- "-I/home/rparodi/Documents/shcat/stdme/include/"
|
- "-I/home/rparodi/Documents/shcat/stdme/include/"
|
||||||
- "-I/home/rparodi/Documents/shcat/allocator/include/"
|
- "-I/home/rparodi/Documents/shcat/allocator/include/"
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
|
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/09/10 15:41:11 by rparodi #+# #+# */
|
/* Created: 2024/09/10 15:41:11 by rparodi #+# #+# */
|
||||||
/* Updated: 2024/09/13 18:22:23 by rparodi ### ########.fr */
|
/* Updated: 2024/09/14 13:09:27 by rparodi ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -218,9 +218,10 @@ bool scan_heredoc_content(t_scanner *scanner, t_lexer *lexer, \
|
||||||
enum e_token_type middle_type, enum e_token_type end_type)
|
enum e_token_type middle_type, enum e_token_type end_type)
|
||||||
{
|
{
|
||||||
bool did_advance;
|
bool did_advance;
|
||||||
t_heredoc *heredoc = vec_heredoc_last(&scanner->heredocs);
|
t_heredoc *heredoc;
|
||||||
|
|
||||||
did_advance = false;
|
did_advance = false;
|
||||||
|
heredoc = vec_heredoc_last(&scanner->heredocs);
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
switch (lexer->data.lookahead)
|
switch (lexer->data.lookahead)
|
||||||
|
|
@ -232,14 +233,14 @@ bool scan_heredoc_content(t_scanner *scanner, t_lexer *lexer, \
|
||||||
lexer->data.result_symbol = end_type;
|
lexer->data.result_symbol = end_type;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
case '\\': {
|
case '\\': {
|
||||||
did_advance = true;
|
did_advance = true;
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
break;
|
break ;
|
||||||
}
|
}
|
||||||
|
|
||||||
case '$': {
|
case '$': {
|
||||||
|
|
@ -247,7 +248,7 @@ bool scan_heredoc_content(t_scanner *scanner, t_lexer *lexer, \
|
||||||
{
|
{
|
||||||
did_advance = true;
|
did_advance = true;
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
break;
|
break ;
|
||||||
}
|
}
|
||||||
if (did_advance)
|
if (did_advance)
|
||||||
{
|
{
|
||||||
|
|
@ -257,47 +258,39 @@ bool scan_heredoc_content(t_scanner *scanner, t_lexer *lexer, \
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
if (me_isalpha(lexer->data.lookahead) || lexer->data.lookahead == '{' || lexer->data.lookahead == '(')
|
if (me_isalpha(lexer->data.lookahead) || lexer->data.lookahead == '{' || lexer->data.lookahead == '(')
|
||||||
{
|
{
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
break;
|
break ;
|
||||||
}
|
}
|
||||||
if (middle_type == HEREDOC_BODY_BEGINNING && lexer->data.get_column((void *)lexer) == 0)
|
if (middle_type == HEREDOC_BODY_BEGINNING && lexer->data.get_column((void *)lexer) == 0)
|
||||||
{
|
{
|
||||||
lexer->data.result_symbol = middle_type;
|
lexer->data.result_symbol = middle_type;
|
||||||
heredoc->started = true;
|
heredoc->started = true;
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
return false;
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
case '\n': {
|
case '\n': {
|
||||||
if (!did_advance)
|
if (!did_advance)
|
||||||
{
|
|
||||||
lexer->data.advance((void *)lexer, true);
|
lexer->data.advance((void *)lexer, true);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
}
|
|
||||||
did_advance = true;
|
did_advance = true;
|
||||||
if (heredoc->allows_indent)
|
if (heredoc->allows_indent)
|
||||||
{
|
{
|
||||||
while (me_isspace(lexer->data.lookahead))
|
while (me_isspace(lexer->data.lookahead))
|
||||||
{
|
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
lexer->data.result_symbol = heredoc->started ? middle_type : end_type;
|
lexer->data.result_symbol = heredoc->started ? middle_type : end_type;
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
if (scan_heredoc_end_identifier(heredoc, lexer))
|
if (scan_heredoc_end_identifier(heredoc, lexer))
|
||||||
{
|
{
|
||||||
if (lexer->data.result_symbol == HEREDOC_END)
|
if (lexer->data.result_symbol == HEREDOC_END)
|
||||||
{
|
|
||||||
vec_heredoc_pop(&scanner->heredocs, NULL);
|
vec_heredoc_pop(&scanner->heredocs, NULL);
|
||||||
|
return (true);
|
||||||
}
|
}
|
||||||
return true;
|
break ;
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
|
|
@ -316,19 +309,19 @@ bool scan_heredoc_content(t_scanner *scanner, t_lexer *lexer, \
|
||||||
{
|
{
|
||||||
lexer->data.result_symbol = middle_type;
|
lexer->data.result_symbol = middle_type;
|
||||||
if (scan_heredoc_end_identifier(heredoc, lexer))
|
if (scan_heredoc_end_identifier(heredoc, lexer))
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
if (end_type == SIMPLE_HEREDOC_BODY)
|
if (end_type == SIMPLE_HEREDOC_BODY)
|
||||||
{
|
{
|
||||||
lexer->data.result_symbol = end_type;
|
lexer->data.result_symbol = end_type;
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
if (scan_heredoc_end_identifier(heredoc, lexer))
|
if (scan_heredoc_end_identifier(heredoc, lexer))
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
did_advance = true;
|
did_advance = true;
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
break;
|
break ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -345,11 +338,11 @@ bool scan_concat(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
if (lexer->data.lookahead == '"' || lexer->data.lookahead == '\'' || lexer->data.lookahead == '\\')
|
if (lexer->data.lookahead == '"' || lexer->data.lookahead == '\'' || lexer->data.lookahead == '\\')
|
||||||
return true;
|
return (true);
|
||||||
if (lexer->data.eof((void *)lexer))
|
if (lexer->data.eof((void *)lexer))
|
||||||
return false;
|
return (false);
|
||||||
}
|
}
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool scan_double_hash(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
bool scan_double_hash(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
|
|
@ -370,7 +363,7 @@ bool scan_double_hash(t_scanner *scanner, t_lexer *lexer, const bool *valid_symb
|
||||||
{
|
{
|
||||||
lexer->data.result_symbol = IMMEDIATE_DOUBLE_HASH;
|
lexer->data.result_symbol = IMMEDIATE_DOUBLE_HASH;
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -449,7 +442,7 @@ bool scan(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break ;
|
||||||
}
|
}
|
||||||
if (!valid_symbols[EXPANSION_WORD] &&
|
if (!valid_symbols[EXPANSION_WORD] &&
|
||||||
(lexer->data.lookahead == '*' || lexer->data.lookahead == '@' || lexer->data.lookahead == '?' || lexer->data.lookahead == '-' ||
|
(lexer->data.lookahead == '*' || lexer->data.lookahead == '@' || lexer->data.lookahead == '?' || lexer->data.lookahead == '-' ||
|
||||||
|
|
@ -460,12 +453,12 @@ bool scan(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
if (lexer->data.lookahead == '=' || lexer->data.lookahead == '[' || lexer->data.lookahead == ':' ||
|
if (lexer->data.lookahead == '=' || lexer->data.lookahead == '[' || lexer->data.lookahead == ':' ||
|
||||||
lexer->data.lookahead == '-' || lexer->data.lookahead == '%' || lexer->data.lookahead == '#' ||
|
lexer->data.lookahead == '-' || lexer->data.lookahead == '%' || lexer->data.lookahead == '#' ||
|
||||||
lexer->data.lookahead == '/')
|
lexer->data.lookahead == '/')
|
||||||
return false;
|
return (false);
|
||||||
if (valid_symbols[EXTGLOB_PATTERN] && me_isspace(lexer->data.lookahead))
|
if (valid_symbols[EXTGLOB_PATTERN] && me_isspace(lexer->data.lookahead))
|
||||||
{
|
{
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
lexer->data.result_symbol = EXTGLOB_PATTERN;
|
lexer->data.result_symbol = EXTGLOB_PATTERN;
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -494,13 +487,9 @@ bool scan(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (lexer->data.lookahead == '{')
|
if (lexer->data.lookahead == '{')
|
||||||
{
|
|
||||||
return (false);
|
return (false);
|
||||||
}
|
|
||||||
if (valid_symbols[EXPANSION_WORD])
|
if (valid_symbols[EXPANSION_WORD])
|
||||||
{
|
|
||||||
goto expansion_word;
|
goto expansion_word;
|
||||||
}
|
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -514,7 +503,7 @@ bool scan(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_number && valid_symbols[FILE_DESCRIPTOR] && (lexer->data.lookahead == '>' || lexer->data.lookahead == '<'))
|
if (is_number && valid_symbols[FILE_DESCRIPTOR] && (lexer->data.lookahead == '>' || lexer->data.lookahead == '<'))
|
||||||
|
|
@ -527,17 +516,17 @@ bool scan(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
if (lexer->data.lookahead == '=' || lexer->data.lookahead == ':')
|
if (lexer->data.lookahead == '=' || lexer->data.lookahead == ':')
|
||||||
return (lexer->data.result_symbol = VARIABLE_NAME, true);
|
return (lexer->data.result_symbol = VARIABLE_NAME, true);
|
||||||
return false;
|
return (false);
|
||||||
}
|
}
|
||||||
if (lexer->data.lookahead == '/')
|
if (lexer->data.lookahead == '/')
|
||||||
return false;
|
return (false);
|
||||||
if (lexer->data.lookahead == '=' || lexer->data.lookahead == '[' ||
|
if (lexer->data.lookahead == '=' || lexer->data.lookahead == '[' ||
|
||||||
(lexer->data.lookahead == ':' && !valid_symbols[OPENING_PAREN]) || lexer->data.lookahead == '%' ||
|
(lexer->data.lookahead == ':' && !valid_symbols[OPENING_PAREN]) || lexer->data.lookahead == '%' ||
|
||||||
(lexer->data.lookahead == '#' && !is_number) || lexer->data.lookahead == '@' || (lexer->data.lookahead == '-'))
|
(lexer->data.lookahead == '#' && !is_number) || lexer->data.lookahead == '@' || (lexer->data.lookahead == '-'))
|
||||||
{
|
{
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
lexer->data.result_symbol = VARIABLE_NAME;
|
lexer->data.result_symbol = VARIABLE_NAME;
|
||||||
return true;
|
return (true);
|
||||||
}
|
}
|
||||||
if (lexer->data.lookahead == '?')
|
if (lexer->data.lookahead == '?')
|
||||||
{
|
{
|
||||||
|
|
@ -547,7 +536,7 @@ bool scan(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols)
|
||||||
return me_isalpha(lexer->data.lookahead);
|
return me_isalpha(lexer->data.lookahead);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (valid_symbols[BARE_DOLLAR] && !(valid_symbols[ERROR_RECOVERY]) && scan_bare_dollar(lexer))
|
if (valid_symbols[BARE_DOLLAR] && !(valid_symbols[ERROR_RECOVERY]) && scan_bare_dollar(lexer))
|
||||||
|
|
@ -561,7 +550,7 @@ expansion_word:
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (lexer->data.lookahead == '\"')
|
if (lexer->data.lookahead == '\"')
|
||||||
return false;
|
return (false);
|
||||||
if (lexer->data.lookahead == '$')
|
if (lexer->data.lookahead == '$')
|
||||||
{
|
{
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
|
|
@ -570,7 +559,7 @@ expansion_word:
|
||||||
me_isalnum(lexer->data.lookahead))
|
me_isalnum(lexer->data.lookahead))
|
||||||
{
|
{
|
||||||
lexer->data.result_symbol = EXPANSION_WORD;
|
lexer->data.result_symbol = EXPANSION_WORD;
|
||||||
return advanced_once;
|
return (advanced_once);
|
||||||
}
|
}
|
||||||
advanced_once = true;
|
advanced_once = true;
|
||||||
}
|
}
|
||||||
|
|
@ -579,7 +568,7 @@ expansion_word:
|
||||||
{
|
{
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
lexer->data.result_symbol = EXPANSION_WORD;
|
lexer->data.result_symbol = EXPANSION_WORD;
|
||||||
return advanced_once || advance_once_space;
|
return (advanced_once || advance_once_space);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lexer->data.lookahead == '(' && !(advanced_once || advance_once_space))
|
if (lexer->data.lookahead == '(' && !(advanced_once || advance_once_space))
|
||||||
|
|
@ -600,7 +589,7 @@ expansion_word:
|
||||||
me_isalnum(lexer->data.lookahead))
|
me_isalnum(lexer->data.lookahead))
|
||||||
{
|
{
|
||||||
lexer->data.result_symbol = EXPANSION_WORD;
|
lexer->data.result_symbol = EXPANSION_WORD;
|
||||||
return advanced_once;
|
return (advanced_once);
|
||||||
}
|
}
|
||||||
advanced_once = true;
|
advanced_once = true;
|
||||||
}
|
}
|
||||||
|
|
@ -618,23 +607,22 @@ expansion_word:
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
lexer->data.mark_end((void *)lexer);
|
lexer->data.mark_end((void *)lexer);
|
||||||
if (lexer->data.lookahead == '}')
|
if (lexer->data.lookahead == '}')
|
||||||
return false;
|
return (false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lexer->data.lookahead == '\'')
|
if (lexer->data.lookahead == '\'')
|
||||||
return false;
|
return (false);
|
||||||
if (lexer->data.eof((void *)lexer))
|
if (lexer->data.eof((void *)lexer))
|
||||||
return false;
|
return (false);
|
||||||
advanced_once = advanced_once || !me_isspace(lexer->data.lookahead);
|
advanced_once = advanced_once || !me_isspace(lexer->data.lookahead);
|
||||||
advance_once_space = advance_once_space || me_isspace(lexer->data.lookahead);
|
advance_once_space = advance_once_space || me_isspace(lexer->data.lookahead);
|
||||||
lexer->data.advance((void *)lexer, false);
|
lexer->data.advance((void *)lexer, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return (false);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *tree_sitter_sh_external_scanner_create()
|
void *tree_sitter_sh_external_scanner_create()
|
||||||
|
|
@ -651,7 +639,7 @@ bool tree_sitter_sh_external_scanner_scan(void *payload, t_lexer *lexer, const b
|
||||||
t_scanner *scanner;
|
t_scanner *scanner;
|
||||||
|
|
||||||
scanner = (t_scanner *)payload;
|
scanner = (t_scanner *)payload;
|
||||||
return scan(scanner, lexer, valid_symbols);
|
return (scan(scanner, lexer, valid_symbols));
|
||||||
}
|
}
|
||||||
|
|
||||||
t_u32 tree_sitter_sh_external_scanner_serialize(void *payload, t_u8 *state)
|
t_u32 tree_sitter_sh_external_scanner_serialize(void *payload, t_u8 *state)
|
||||||
|
|
@ -659,7 +647,7 @@ t_u32 tree_sitter_sh_external_scanner_serialize(void *payload, t_u8 *state)
|
||||||
t_scanner *scanner;
|
t_scanner *scanner;
|
||||||
|
|
||||||
scanner = (t_scanner *)payload;
|
scanner = (t_scanner *)payload;
|
||||||
return serialize(scanner, state);
|
return (serialize(scanner, state));
|
||||||
}
|
}
|
||||||
|
|
||||||
void tree_sitter_sh_external_scanner_deserialize(void *payload, const t_u8 *state, t_u32 length)
|
void tree_sitter_sh_external_scanner_deserialize(void *payload, const t_u8 *state, t_u32 length)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue