https://github.com/yhirose/fizzbuzzlang
A Programming Language just for writing Fizz Buzz program. :)
https://github.com/yhirose/fizzbuzzlang
fizz-buzz fizzbuzz language peg programming-language
Last synced: 6 months ago
JSON representation
A Programming Language just for writing Fizz Buzz program. :)
- Host: GitHub
- URL: https://github.com/yhirose/fizzbuzzlang
- Owner: yhirose
- License: mit
- Created: 2019-02-27T20:07:43.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-09-17T12:18:48.000Z (about 2 years ago)
- Last Synced: 2025-04-24T00:49:27.684Z (6 months ago)
- Topics: fizz-buzz, fizzbuzz, language, peg, programming-language
- Language: C++
- Homepage:
- Size: 14.6 KB
- Stars: 6
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
FizzBuzzLang
============A Programming Language just for writing [Fizz Buzz](https://en.wikipedia.org/wiki/Fizz_buzz) program. :)
```
for n from 1 to 100
puts n % 3 == 0 ? (n % 5 == 0 ? 'FizzBuzz' : 'Fizz') : (n % 5 == 0 ? 'Buzz' : n)
```Build and Run demo
------------------```bash
> make
./fzbz fizzbuzz.fzbz
1
2
Fizz
4
Buzz
...
```PEG grammar
-----------```peg
# Syntax Rules
EXPRESSION <- TERNARY
TERNARY <- CONDITION ('?' EXPRESSION ':' EXPRESSION)?
CONDITION <- MULTIPLICATIVE (ConditionOperator MULTIPLICATIVE)?
MULTIPLICATIVE <- CALL (MultiplicativeOperator CALL)*
CALL <- PRIMARY (EXPRESSION)?
PRIMARY <- FOR / Identifier / '(' EXPRESSION ')' / String / Number
FOR <- 'for' Identifier 'from' Number 'to' Number EXPRESSION# Token Rules
ConditionOperator <- '=='
MultiplicativeOperator <- '%'
Identifier <- !Keyword < [a-zA-Z][a-zA-Z0-9_]* >
String <- "'" < ([^'] .)* > "'"
Number <- < [0-9]+ >Keyword <- 'for' / 'from' / 'to'
%whitespace <- [ \t\r\n]*
```License
-------[MIT](https://github.com/yhirose/fizzbuzzlang/blob/master/LICENSE)