I bob c++ dasturlash tili kompilyatorlari va ularning xususiyatlari c++ builder 6 kompilyator haqida dev c++ kompilyator haqida ma’lumot codeblocks kompilyator imkoniyatlari bob


// Ushbu klass bo'lakni ifodalash uchun


Download 0.5 Mb.
bet5/5
Sana16.01.2023
Hajmi0.5 Mb.
#1094865
1   2   3   4   5
Bog'liq
C DASTURLASH TILI KOMPILYATORLARI VA ULARNING XUSUSIYATLARI

// Ushbu klass bo'lakni ifodalash uchun
ublic class Token
{
// mumkin bo'lgan bo'laklar turi



public enum TokenType
{
UNKNOWN, // noma’lum bo’lak
IDENTIFIER, // identifikator
OPERATOR, // operator
NUMLITERAL, // sonli literal
STRINGLITERAL, // matnli literal
WHITESPACE, // bo’sh joylar
NEWLINE, // yangi qator
EOP // dastur oxirini belgilash uchun
}
public string Text; // bo'lak matni
public TokenType Type; // bo'lak turi
public int TextPos; // bo'lakni dastur matnidagi pozisiyasi
public Token()
{






this.Text = "";
this.TextPos = 0;
this.Type = TokenType.UNKNOWN ;
}
}
public class Lexer
{
// konstantalar
const char CHAR_NULL = '\0';
// o'zgaruvchilar
string text;
int position;
// konstruktor
public Lexer()
{
this.position= 0;
this.text= "";

}
// konstruktor
public Lexer(string text)
{
this.text= text;
this.position= 0;
}
// dastur matnini berish/olish
public string Text
{
get { return this.text; }
set { this.text = value; }
}
}
Lexer klassiga kiruvchi matnni belgilab o’qishga yordam beruvchi funksiyalarni qo’shamiz:
// jarayondagi joriy pozisiya public int Position



{
get { return this.position; }
}
// joriy belgini aniqlash
public char CurrentChar()
{
if (position < text.Length)
return Convert.ToChar (text.Substring(position, 1));
else
return CHAR_NULL ;
}
// joriy belgidan keyingi belgini aniqlash
public char NextChar()
{
if (position 1 < text.Length)
return Convert.ToChar(text.Substring(position 1, 1));
else

return CHAR_NULL;
}
// joriy belgidan oldingi belgini aniqlash
public char PrevChar()
{
if (position - 1 >= 0)
return Convert.ToChar(text.Substring(position - 1, 1));
Download 0.5 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling