Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Diagnostics.Eventing.Reader;
- using System.Linq;
- using System.Net.NetworkInformation;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace translatoryZadanie1
- {
- public class Analizer
- {
- private List<Variable> lista = new List<Variable>();
- private int pozycja = 0;
- private string currentSymbol = "";
- public bool testVar = false;
- public bool skipToTest = false;
- public int nawiasy = 0;
- private Label label;
- public Analizer(List<Variable> lista,string currentSymbol, Form1 form)
- {
- this.lista = lista;
- label = form.label1;
- this.currentSymbol = currentSymbol;
- }
- public void Wyrazenie()
- {
- Skladnik();
- ResztaWyrazenie();
- }
- private void ResztaWyrazenie()
- {
- if (currentSymbol == "plus" || currentSymbol == "minus")
- {
- Accept(currentSymbol);
- Skladnik();
- ResztaWyrazenie();
- }
- }
- private void Accept(string expectedSymbol)
- {
- if (currentSymbol == expectedSymbol)
- {
- currentSymbol = NextSymbol().Type;
- }
- else
- {
- throw new Exception($"Oczekiwany {expectedSymbol}");
- }
- }
- private Variable NextSymbol()
- {
- if (pozycja < lista.Count)
- {
- return lista[++pozycja];
- }
- return new Variable("$", "koniec") ;
- }
- private void Skladnik()
- {
- Czynnik();
- ResztaSkladnika();
- }
- private void ResztaSkladnika()
- {
- if (currentSymbol == "mnożenie" || currentSymbol == "ukośnik")
- {
- Accept(currentSymbol);
- Czynnik();
- ResztaSkladnika();
- }
- }
- private void Czynnik()
- {
- if (currentSymbol == "Identyfikator" || currentSymbol== "Liczba całkowita" || currentSymbol == "Liczba zmienno przecinkowa")
- {
- Accept(currentSymbol);
- }
- else
- {
- Accept("nawias_otwierający");
- Wyrazenie();
- Accept("nawias_zamykający");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement