aagjalpankaj / nllang
NLLang — een speelse programmeertaal met Nederlandse sleutelwoorden, geschreven in PHP.
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^10.0
README
NLLang is een speelse programmeertaal met Nederlandse sleutelwoorden, geschreven in PHP.
⚠️ Waarschuwing: NLLang is gebouwd voor kinderen, nieuwsgierige geesten en mensen die te veel Nederlandse koffie hebben gedronken. Gebruik het niet in productie.
Installatie
Homebrew (aanbevolen)
brew tap aagjalpankaj/nllang brew install nllang
Composer
Vereisten: PHP 8.1 of hoger en Composer.
composer global require aagjalpankaj/nllang
Eenmalige instelling: Zorg dat Composer's globale
bin-map in je$PATHstaat. Voeg dit toe aan~/.zshrcof~/.bashrc:export PATH="$PATH:$(composer global config bin-dir --absolute)"Herlaad je shell daarna met
source ~/.zshrc. Als je dit al eerder hebt gedaan voor een ander globaal Composer-pakket, is deze stap niet nodig.
Gebruik
Maak een nieuw bestand aan (test.nl)
Bewerk het bestand in een teksteditor.
hoi
zeg "Hoi, wereld!";
doei
Uitvoeren
nllang test.nl
Uitvoer
Hoi, wereld!
Documentatie
Algemeen
hoi is het beginpunt van een programma en elk programma moet eindigen met doei. Alles buiten deze blokken wordt genegeerd.
Dit wordt genegeerd
hoi
// Schrijf hier je code
doei
Dit ook
Variabelen
Variabelen worden gedeclareerd met stel. Meerdere variabelen kunnen in één statement worden gedeclareerd.
hoi
stel a = 10;
stel b = "twee";
stel c = 15;
stel d, e = 5, f;
a = a + 1;
b = 21;
c *= 2;
doei
Typen
Getallen en teksten werken zoals in andere talen. Lege waarden worden aangeduid met niets. waar en onwaar zijn de booleaanse waarden.
hoi
stel a = 10;
stel b = 10 + (15 * 20);
stel c = "tekst";
stel d = 'ook tekst';
stel e = 3.14;
stel f = niets;
stel g = waar;
stel h = onwaar;
doei
Ingebouwde functies
Gebruik zeg om iets af te drukken. Meerdere waarden worden gescheiden door een spatie.
hoi
zeg "Hoi, wereld!";
stel a = 10;
{
stel b = 20;
zeg a + b;
}
zeg 5, 'ok', niets, waar, onwaar;
doei
Hoi, wereld!
30
5 ok niets waar onwaar
Bewerkingen
NLLang ondersteunt de gebruikelijke rekenkundige en vergelijkingsoperatoren. Strings worden samengevoegd met +.
hoi
stel a = 10, b = 3;
zeg a + b; // 13
zeg a - b; // 7
zeg a * b; // 30
zeg a / b; // 3.333...
zeg a % b; // 1
zeg a == 10; // waar
zeg a != b; // waar
zeg a > b; // waar
zeg a <= 10; // waar
zeg "Neder" + "land"; // Nederland
a += 5;
b *= 2;
zeg a, b;
// Logische ontkenning
zeg niet waar; // onwaar
zeg !onwaar; // waar
doei
Voorwaarden
NLLang ondersteunt als/anders als/anders constructies. Het als blok wordt uitgevoerd als de voorwaarde waar is, anders wordt een anders als blok uitgevoerd als de bijbehorende voorwaarde waar is, en het anders blok wordt uitgevoerd als alle voorwaarden onwaar zijn.
hoi
stel score = 75;
als (score >= 90) {
zeg "Uitstekend!";
} anders als (score >= 70) {
zeg "Goed gedaan!";
} anders als (score >= 50) {
zeg "Voldoende.";
} anders {
zeg "Onvoldoende.";
}
doei
Goed gedaan!
Lussen
Statements in een zolang blok worden herhaald zolang de voorwaarde waar is. Gebruik stop om de lus te verlaten en verder om naar de volgende iteratie te gaan.
hoi
stel i = 0;
zolang (i < 10) {
i += 1;
als (i == 5) {
zeg "Vijf! Doorgaan...";
verder;
}
als (i == 8) {
zeg "Stop bij acht.";
stop;
}
zeg i;
}
zeg "Klaar!";
doei
1
2
3
4
Vijf! Doorgaan...
6
7
Stop bij acht.
Klaar!
Functies
Definieer functies met taak en geef een waarde terug met geef. Functies zijn recursief aanroepbaar.
hoi
taak begroet(naam) {
zeg "Hoi, " + naam + "!";
}
taak faculteit(n) {
als (n <= 1) {
geef 1;
}
geef n * faculteit(n - 1);
}
begroet("wereld");
zeg faculteit(6);
doei
Hoi, wereld!
720
Lijsten
Maak lijsten aan met [...]. Gebruik de ingebouwde functies lengte, duw en pop om lijsten te bewerken.
hoi
stel getallen = [1, 2, 3];
zeg lengte(getallen); // 3
zeg getallen[0]; // 1
getallen[1] = 99;
getallen = duw(getallen, 4);
zeg getallen; // [1, 99, 3, 4]
getallen = pop(getallen);
zeg getallen; // [1, 99, 3]
doei
Voor-elk lus
Gebruik voor elk om over een lijst te itereren. stop en verder werken ook hier.
hoi
stel namen = ["Alice", "Bob", "Charlie"];
voor elk naam in namen {
zeg "Hoi, " + naam + "!";
}
// Sla even getallen over
stel cijfers = [1, 2, 3, 4, 5];
voor elk n in cijfers {
als (n % 2 == 0) {
verder;
}
zeg n;
}
doei
Hoi, Alice!
Hoi, Bob!
Hoi, Charlie!
1
3
5
Gebruikersinvoer
Lees invoer van de gebruiker met vraag(). Gebruik getal() en tekst() om typen om te zetten.
hoi
stel naam = vraag("Wat is je naam? ");
zeg "Hoi, " + naam + "!";
stel leeftijd = getal(vraag("Hoe oud ben je? "));
als (leeftijd >= 18) {
zeg "Je bent volwassen.";
} anders {
zeg "Je bent " + tekst(18 - leeftijd) + " jaar van volwassen.";
}
doei
Scoping
Variabelen leven in het blok waarin ze zijn gedeclareerd. Een binnenste blok kan variabelen van buiten lezen, maar kan ze ook overschaduwen met een nieuwe declaratie.
hoi
stel x = 5;
{
stel x = 99;
zeg x; // 99
}
zeg x; // 5
doei
Commentaar
Gebruik // voor regelcommentaar en /* */ voor blokcommentaar.
hoi
// Dit is een regelcommentaar
stel a = 10; // ook hier
/*
Dit is
blokcommentaar
*/
zeg a;
doei
Sleutelwoordenlijst
| NLLang | Betekenis |
|---|---|
hoi |
begin van het programma |
doei |
einde van het programma |
stel |
variabele declareren |
zeg |
afdrukken naar de console |
als |
als-voorwaarde |
anders als |
anders-als-voorwaarde |
anders |
anders-blok |
zolang |
zolang-lus |
stop |
verlaat de lus |
verder |
volgende iteratie |
voor elk ... in |
itereer over een lijst |
taak |
functie definiëren |
geef |
waarde teruggeven uit functie |
niet / ! |
logische ontkenning |
waar |
booleaanse waarde waar (true) |
onwaar |
booleaanse waarde onwaar (false) |
niets |
lege waarde (null) |
Ingebouwde functies
| Functie | Beschrijving |
|---|---|
zeg(...) |
Afdrukken naar de console |
vraag(prompt) |
Lees een regel invoer van de gebruiker |
lengte(lijst) |
Geef de lengte van een lijst |
duw(lijst, waarde) |
Voeg een waarde toe aan het einde van een lijst |
pop(lijst) |
Verwijder het laatste element van een lijst |
tekst(waarde) |
Zet een waarde om naar tekst |
getal(waarde) |
Zet een waarde om naar een getal |
Voorbeelden
Bekijk de map examples/ voor kant-en-klare voorbeeldprogramma's:
hallo.nl— Hallo wereldrekenen.nl— Rekenkundige bewerkingenkeuze.nl— Voorwaarden en scopingteller.nl— Lussen en Fibonaccivoor_elk.nl— Voor-elk lusfuncties.nl— Functies en recursielijsten.nl— Lijsten en ingebouwde functiesniet.nl— Logische ontkenning
