示例#1
0
void ReadPascal(char *filename, ARRAYKATA *arrayKata)
{
    arrayKata->neff=0;

    ARRAYKATA tempArr;
    int i;
    boolean bisaCopy = true;

    // f = fopen(filename, "r");
    STARTKATA(filename);
    while (!EndKata)
    {
        SplitKata(CKata,&tempArr);
        for (i=0;i<tempArr.neff;i++)
        {
            if (tempArr.kata[i].TabKata[1] == '{')
                bisaCopy = false;
            else if (tempArr.kata[i].TabKata[1] == '}' && !bisaCopy)
            {
                bisaCopy = true;
                i++;
            }

            if (bisaCopy && i<tempArr.neff)
            {
                arrayKata->neff++;
                CopyKata(tempArr.kata[i],&arrayKata->kata[arrayKata->neff]);
            }
        }
        ADVKATA();
    }

    for (i=1;i<=arrayKata->neff;i++)
    {
        printKata(arrayKata->kata[i]);
    }
}
示例#2
0
void SplitKata(Kata K, ARRAYKATA *arr)
{
    int i;
    arr->neff = 0;
    Kata Kcp;
    Kcp.Length = 0;

    for (i=1;i<=K.Length;i++)
    {
        if (K.TabKata[i] == '(' || K.TabKata[i] == ')' ||
            K.TabKata[i] == '>' || K.TabKata[i] == '<' ||
            K.TabKata[i] == '=' || K.TabKata[i] == '+' ||
            K.TabKata[i] == '-' || K.TabKata[i] == '*' ||
            K.TabKata[i] == '{' || K.TabKata[i] == '}')
        {
            if (Kcp.Length>0)
            {
                CopyKata(Kcp, &arr->kata[arr->neff++]);
                //printKata(arr->kata[arr->neff - 1]);
            }

            Kcp.TabKata[1] = K.TabKata[i];
            Kcp.Length = 1;
            if (i+1 <= K.Length)
            {
                if (K.TabKata[i] == '>')
                {
                    if (K.TabKata[i+1] == '=')
                    {
                        i++;
                        Kcp.TabKata[2] = K.TabKata[i];
                        Kcp.Length++;
                    }
                }
                else if (K.TabKata[i] == '<')
                {
                    if (K.TabKata[i+1] == '=' || K.TabKata[i+1] == '>')
                    {
                        i++;
                        Kcp.TabKata[2] = K.TabKata[i];
                        Kcp.Length++;
                    }
                }
            }
            CopyKata(Kcp, &arr->kata[arr->neff++]);
            //printKata(arr->kata[arr->neff - 1]);

            Kcp.Length = 0;
        }
        else if (K.TabKata[i] != '\t')
        {
            Kcp.Length++;
            Kcp.TabKata[Kcp.Length] = K.TabKata[i];
        }
    }
    if (Kcp.Length > 0)
    {
        CopyKata(Kcp, &arr->kata[arr->neff++]);
        //printKata(arr->kata[arr->neff - 1]);
    }
}
List Read_Board_File (char filename[])
{
	Kata Kota;

	Kota.Length = 4;
	Kota.TabKata[0] = 'k';
	Kota.TabKata[1] = 'o';
	Kota.TabKata[2] = 't';
	Kota.TabKata[3] = 'a';

	Kata Pariwisata;

	Pariwisata.Length = 10;
	Pariwisata.TabKata[0] = 'p';
	Pariwisata.TabKata[1] = 'a';
	Pariwisata.TabKata[2] = 'r';
	Pariwisata.TabKata[3] = 'i';
	Pariwisata.TabKata[4] = 'w';
	Pariwisata.TabKata[5] = 'i';
	Pariwisata.TabKata[6] = 's';
	Pariwisata.TabKata[7] = 'a';
	Pariwisata.TabKata[8] = 't';
	Pariwisata.TabKata[9] = 'a';

	Kata Start;

	Start.Length = 5;
	Start.TabKata[0] = 's';
	Start.TabKata[1] = 't';
	Start.TabKata[2] = 'r';
	Start.TabKata[3] = 'a';
	Start.TabKata[4] = 't';

	Kata Bonus;
	
	Bonus.Length = 5;
	Bonus.TabKata[0] = 'b';
	Bonus.TabKata[1] = 'o';
	Bonus.TabKata[2] = 'n';
	Bonus.TabKata[3] = 'u';
	Bonus.TabKata[4] = 's';
	
	Kata Chance;
	
	Chance.Length = 6;
	Chance.TabKata[0] = 'c';
	Chance.TabKata[1] = 'h';
	Chance.TabKata[2] = 'a';
	Chance.TabKata[3] = 'n';
	Chance.TabKata[4] = 'c';
	Chance.TabKata[5] = 'e';
	
	Kata Penjara;
	
	Penjara.Length = 7;
	Penjara.TabKata[0] = 'p';
	Penjara.TabKata[1] = 'e';
	Penjara.TabKata[2] = 'n';
	Penjara.TabKata[3] = 'j';
	Penjara.TabKata[4] = 'a';
	Penjara.TabKata[5] = 'r';
	Penjara.TabKata[6] = 'a';
	
	Kata Worldcup;
	
	Worldcup.Length = 8;
	Worldcup.TabKata[0] = 'w';
	Worldcup.TabKata[1] = 'o';
	Worldcup.TabKata[2] = 'r';
	Worldcup.TabKata[3] = 'l';
	Worldcup.TabKata[4] = 'd';
	Worldcup.TabKata[5] = 'c';
	Worldcup.TabKata[6] = 'u';
	Worldcup.TabKata[7] = 'p';
	
	Kata Worldtravel;
	
	Worldtravel.Length = 11;
	Worldtravel.TabKata[0]='w';
	Worldtravel.TabKata[1]='o';
	Worldtravel.TabKata[2]='r';
	Worldtravel.TabKata[3]='l';
	Worldtravel.TabKata[4]='d';
	Worldtravel.TabKata[5]='t';
	Worldtravel.TabKata[6]='r';
	Worldtravel.TabKata[7]='a';
	Worldtravel.TabKata[8]='v';
	Worldtravel.TabKata[9]='e';
	Worldtravel.TabKata[10]='l';
	
	Kata Tax;
	
	Tax.Length = 3;
	Tax.TabKata[0]='t';
	Tax.TabKata[1]='a';
	Tax.TabKata[2]='x';
	
	int i,j=0,counter1=0;
	Infotype X;
	List BoardL;
	
	CreateList(&BoardL);
	
	while (!EOP())
	{
		if (counter1==0)
		{
			START(filename);
		}
		
		for (i=1; i<=3; i++)
		{
			ADVKATA(filename);
			if (i==1) 
			{
				X.ptk.nama = CopyKata(CKata);					
			}
			else
			if (i==2) 
			{
				X.ptk.tipe = CopyKata(CKata);
			}
			else
			if (i==3) 
			{
				X.ptk.currentplayer = CopyKata(CKata);
			}			
		}
		
		if (IsKataSama(X.ptk.tipe,Kota))
		{
			for (i=1; i<=travkota-3; i++)
			{
				ADVKATA(filename);
				if (i==1) 
				{
					X.ptk.kotapariwisata.kepemilikan = CopyKata(CKata);
				}
				else if (i==2) 
				{
					X.ptk.kotapariwisata.harga.beli = ConvertToBilangan(CKata);
				}
				else if (i==3) 
				{
					X.ptk.kotapariwisata.harga.sewa = ConvertToBilangan(CKata);
				}
				else if (i==4) 
				{
					X.ptk.kotapariwisata.harga.belipaksa = ConvertToBilangan(CKata);
				}
				else if (i==5) 
				{
					X.ptk.kotapariwisata.harga.listoffered = ConvertToBilangan(CKata);
				}
				else if (i==6) 
				{
					X.ptk.kotapariwisata.lvlbangunan = ConvertToBilangan(CKata);
				}
				else if (i==7) 
				{
					X.ptk.kotapariwisata.harga.biayaupgrade[i-6] = ConvertToBilangan(CKata);
				}
				else if (i==8) 
				{
					X.ptk.kotapariwisata.harga.biayaupgrade[i-6] = ConvertToBilangan(CKata);
				}
				else if (i==9)
				{
					X.ptk.kotapariwisata.harga.biayaupgrade[i-6] = ConvertToBilangan(CKata);
				}
			}
		}
		else if (IsKataSama(X.ptk.tipe,Pariwisata))
		{
			for (i=1; i<=travpariwisata-3; i++)
			{
				ADVKATA(filename);
				if (i==1) 
				{
					X.ptk.kotapariwisata.kepemilikan = CopyKata(CKata);
				}
				else if (i==2) 
				{
					X.ptk.kotapariwisata.harga.beli = ConvertToBilangan(CKata);
				}
				else if (i==3) 
				{
					X.ptk.kotapariwisata.harga.sewa = ConvertToBilangan(CKata);
				}
				else if (i==4) 
				{
					X.ptk.kotapariwisata.harga.belipaksa = ConvertToBilangan(CKata);
				}
				else if (i==5) 
				{
					X.ptk.kotapariwisata.harga.listoffered = ConvertToBilangan(CKata);
				}
				else if (i==6) 
				{
					X.ptk.kotapariwisata.lvlbangunan = ConvertToBilangan(CKata);
				}
				else if (i==7) 
				{
					X.ptk.kotapariwisata.harga.biayaupgrade[i-6] = ConvertToBilangan(CKata);
				}
			}
		}
		else if (IsKataSama(X.ptk.tipe,Start))
		{
	
		}
		else if (IsKataSama(X.ptk.tipe,Bonus))
		{
			
		}
		else if (IsKataSama(X.ptk.tipe,Chance))
		{
			
		}
		else if (IsKataSama(X.ptk.tipe,Penjara))
		{
			
		}
		else if (IsKataSama(X.ptk.tipe,Worldcup))
		{
			
		}
		else if (IsKataSama(X.ptk.tipe,Worldtravel))
		{
			
		}
		else if (IsKataSama(X.ptk.tipe,Tax))
		{
			
		}
		
		if (counter1<1)
		{
			counter1++;
		}
		
		ADVKATA(filename);
		X.ptk.id = ConvertToBilangan(CKata);
			
		j++;	
		if (j>0)
		{
			InsVLast(&BoardL,X);
		}
		
		if(!EOP())
		{
			ADV(filename);
			ADV(filename);
		}		
	}
	return BoardL;
}