|
Minishell 1.0
42 School Minishell Project - A simple shell implementation
|
#include "../../include/minishell.h"Bu dosyanın kaynak koduna git.
Fonksiyonlar | |
| int | expand_variable (t_shell *shell, t_token *token) |
| Bir token'ın içeriğindeki değişkenleri ($VAR) tarar ve değiştirir. | |
| int | expander_dispatcher (t_shell *shell, t_token *current, t_token *prev) |
| Token'ın genişletilip genişletilmeyeceğine karar veren dağıtıcı. | |
| int | expander (t_shell *shell) |
| Expander modülünün giriş noktası ve ana döngüsü. | |
Bir token'ın içeriğindeki değişkenleri ($VAR) tarar ve değiştirir.
Bu fonksiyon, token'ın string değeri üzerinde bir döngü kurar. '$' işareti bulduğunda, bunun geçerli bir değişken başlangıcı olup olmadığına bakar (can_expand). Geçerliyse, değiştirme işlemini yapan 'process_variable_replacement' fonksiyonunu çağırır.
| shell | Çevre değişkenlerine ve çıkış koduna erişim sağlayan ana yapı. |
| token | İçeriği taranacak ve güncellenecek olan token. |
expander.c dosyasının 27 numaralı satırında tanımlanmıştır.
Referanslar can_expand(), process_variable_replacement(), QUOTE_NONE, s_token::quote_type ve s_token::value.
Referans veren expander_dispatcher().
Token'ın genişletilip genişletilmeyeceğine karar veren dağıtıcı.
Bu fonksiyon iki temel kuralı kontrol eder:
| shell | Ana yapı. |
| current | İşlem sırasındaki mevcut token. |
| prev | Bir önceki token (Heredoc kontrolü için gereklidir). |
expander.c dosyasının 72 numaralı satırında tanımlanmıştır.
Referanslar expand_variable(), QUOTE_SINGLE, s_token::quote_type, TOKEN_HEREDOC, TOKEN_WORD ve s_token::type.
Referans veren expander().
| int expander | ( | t_shell * | shell | ) |
Expander modülünün giriş noktası ve ana döngüsü.
Token listesini baştan sona gezer. Her adımda bir önceki token'ı (prev_token) hafızasında tutarak ilerler. Bu "takipçi pointer" mantığı, Heredoc durumlarını tespit etmek için kullanılır.
| shell | Token listesini ve env listesini içeren ana yapı. |
expander.c dosyasının 94 numaralı satırında tanımlanmıştır.
Referanslar expander_dispatcher(), remove_empty_tokens() ve s_shell::token_list.
Referans veren process_line().