• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dokładne wyjaśnienie składni w własnym języku programowania

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
487 wizyt
pytanie zadane 14 kwietnia w Inne języki przez niezalogowany

Witam,w tym poście chciałbym się dowiedzieć pewnej rzeczy otóż chce się do6wiec dokładnie jak pisac składnię 

Dostałem takie coś 

 

function execute(code) {
    const variables = {};
    for (const line of code.split("\n")) {
        if (line.includes(" = ")) {
            const [name, value] = line.split(" = ");
            variables[name] = value;
        } else if (line.startsWith("print ")) {
            console.log(variables[line.substr(6)])
        }
    }
}
 
var code = `
a = 5
c = 7
print c
print a
`;
execute(code);

Ale za bardzo nie rozumiem poszczególnych części tekstu jedyne co tu rozumiem to tylko parę rzeczy które ani trochę mi nie pomagają więc reasumując chce wiedzieć coś jak i gdzie a także po co na co i dlaczego (dlaczego raczej nie potrzebuje ale chętnie posłucham ) z góry dziękuję.i tak wiem że powinienem się najpierw nauczyć dokładnie programować ale poprostu dopóki się nie dowiem to nie odpuścze bo chciem to Wiedzieć oraz wiem że to bardzo trudne ale napewno ktoś bedze umiał mi pomóc   

komentarz 14 kwietnia przez Sefinek Obywatel (1,710 p.)

Ten mój komentarz, odnoszący się do stereotypu szybkiego przyswajania wiedzy przez osoby z zespołem aspergera, wydaje się być moim zdaniem neutralny; nie miał na celu wywołania negatywnych emocji ani obrażenia kogokolwiek. Często w publicznych dyskusjach mogą pojawiać się nieporozumienia wynikające z różnic w interpretacji wypowiedzi, zwłaszcza w kontekście tak delikatnych tematów. Moim zdaniem przesadzasz.

posłuchaj mój wiek ale nie mój charakter 

Nie odniosłem się nigdzie do twojego charakteru, ani go nie skomentowałem 

komentarz 14 kwietnia przez niezalogowany
Dobrze powiedziane to co na końcu zacytowałes odnosi się do mojego komentarza z tyn twoim komentarzem to nie mam zdania został ukryty bo został uznany za obraźliwy i tyle
komentarz 14 kwietnia przez niezalogowany
W każdym razie mnie to nie obchodzi zadałem pytanie i jedyne co mnie obchodzi to odpowiec lub podpowiedź odnośnje mojego pytania
komentarz 15 kwietnia przez Oscar Nałogowiec (29,340 p.)
edycja 15 kwietnia przez Oscar

@Infos, są odpowiednie metody opisania składni np. Notacja Backusa-Naura. Nie opisuje się jej programem ją analizującym - bo to byłby rodzaj inżynierii odwrotnej. Na podstawie opisu formalnego pisze się program, nie odwrotnie.

Sam sposób napisania programu też zależy od tego, co to ma być - jeśli chcesz zbudować kompilator to trzeba wczytać plik źródłowy, analizując go po drodze, co zwykle realizuje automat skończony sterowany poszczególnymi wczytanymi literkami. Python może być tutaj wyjątkiem bo w nim podział programu na linie na duże znaczenie. W większości języków nowa linia to po prostu separator jak każdy inny. W trakcie parsowania budujesz strukturę opisującą kod i zmienne, poszczególne instrukcje z uwzględnieniem ich hierarchi (czyli to zwykle będzie rodzaj drzewa) - co zawiera się w czym, typu blok zawiera instrucje podstawienia, wywołania funkcji, blok zawarty jest w pętli while, a ta w if. Zauważ że typowe języki mają dość ograniczoną liczbę instrukcji 'wbudowanych' - nawet tylko  kilkanaście. Reszta to po prostu obliczanie wyrażeń i użycie jakiś konstrukcji wcześniej zdefiniowanych, np. funkcji. Potem można taką strukturę 'wykonać' - czyli uruchomić na niej interpretor lub skompilować - czyli wygenerować na jej podstawie kod wynikowy. Zdarza się, że kod wynikowy to nie jest od razu kod binarny dla maszyny, ale coś pośredniego np - kod w C, bytecode itp. Pamiętam, że na studiach robilismy w ramach ćwiczeń translatory z jednego języka na inny, oczywiście takie studenckie, uproszczone maksymalnie.

komentarz 15 kwietnia przez niezalogowany
Rozumiem dzięki

1 odpowiedź

0 głosów
odpowiedź 14 kwietnia przez wizarddos Nałogowiec (26,590 p.)
wybrane 14 kwietnia
 
Najlepsza

Tbh wygląda to trochę jak próba napisania prostego interpretera do czegoś pythono-podobnego w JSie

Zaczynając od początku

var code = `
a = 5
c = 7
print c
print a
`;
execute(code);

Tworzymy nową zmienną i przypisujemy jej stringa z kodem - potem wykonujemy kod

Myślę że możnaby tu użyć `const` zamiast `var`

 

Dalej w stricte funkcji `execute`

const variables = {};

Tworzymy nowy pusty obiekt o nazwie `variables`

for (const line of code.split("\n")) {

Rozbijamy to co nam przyszło w argumencie na linie (szukając nowej linii - tzw. "newline escape sequence") i dla każdej linii od góry wykonujemy kod. Tak działają języki interpretowane

        if (line.includes(" = ")) {
            const [name, value] = line.split(" = ");
            variables[name] = value;
        }

W if'ie szukamy znaku `=` -> zmiennej

Gdy ją znajdziemy rozbijamy linię na parę nazwa-wartość przy użyciu String.prototype.split

Druga opcja - wyświetlenie stringa

else if (line.startsWith("print ")) {
            console.log(variables[line.substr(6)])
        }

Szukamy czy linia zaczyna się od `print ` a jeśli tak to wyświetlamy zawartość obiektu `variables` dla klucza pozyskanego z obcięcia pierwszych 6 znaków z stringa (czyli `print `)

Poza tym, substr() ma już status "Deprecated" i lepiej stosować "substring()" albo `slice()`

 

Ale za bardzo nie rozumiem poszczególnych części tekstu jedyne co tu rozumiem to tylko parę rzeczy które ani trochę mi nie pomagają

Po to istnieje coś takiego jak Google - można wpisać np. for-of js i masz koło 3,770,000,000  wyników omawiających właśnie to

komentarz 14 kwietnia przez adrian17 Mentor (350,860 p.)

Tbh wygląda to trochę jak próba napisania prostego interpretera do czegoś pythono-podobnego w JSie

Tak, bo napisałem to dosłownie "na kolanie" w poprzednim pytaniu tego samego autora (wcześniej dzisiaj) :P Żeby pokazać że nie trzeba niczego specjalnego żeby zrobić prymitywny "własny język".

https://forum.pasja-informatyki.pl/592896/jak-powstaly-jezyki-programistyczne-i-jak-stworzyc-taki-jezyk?show=592922#c592922

1
komentarz 14 kwietnia przez wizarddos Nałogowiec (26,590 p.)
Faktycznie, nie widziałem poprzedniego pytania z tej "serii' :P

Mógł się chociaż dopytać co w kodzie się dzieje w tamtym wątku, nie trzeba tworzyć kolejnego pytania
1
komentarz 14 kwietnia przez niezalogowany

@wizarddos, dziękuję naprawdę mi to pomogło 

Podobne pytania

+2 głosów
1 odpowiedź 449 wizyt
0 głosów
1 odpowiedź 167 wizyt
0 głosów
1 odpowiedź 129 wizyt

93,173 zapytań

142,184 odpowiedzi

321,967 komentarzy

62,499 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1149p. - dia-Chann
  2. 1131p. - Łukasz Piwowar
  3. 1124p. - CC PL
  4. 1118p. - Łukasz Eckert
  5. 1097p. - Michal Drewniak
  6. 1081p. - Marcin Putra
  7. 1076p. - rucin93
  8. 1054p. - Adrian Wieprzkowicz
  9. 1047p. - Piotr Aleksandrowicz
  10. 1000p. - ssynowiec
  11. 967p. - rafalszastok
  12. 931p. - Michał Telesz
  13. 886p. - Dominik Łempicki (kapitan)
  14. 842p. - Dawid128
  15. 819p. - Mariusz Fornal
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...