A C-style block-based interpreted computer language
Run docker container
docker compose up -d --build
docker cp bf:/usr/include/boost/ ./extern/boost
docker exec -ti bf bashuse this:
./utils/config.sh
./utils/build.shProbably just use build.sh in ./utils
Then to build.
# Configure the build
CC=gcc CXX=g++ cmake ..
cmake --build build --target bluefinTesting
ctest -C ReleaseDebug
cmake -S . -B build/Debug -D CMAKE_BUILD_TYPE=Debug
cmake --build build/Debug --target testprogram = compound_statement
| program compound_statement
compound_statement = "{" statement_list "}"
statement_list = statement
| statement statement_list
statement = compound_statement line_end
| assignment_expression line_end
| white_space
expression = assignment_expression
assignment_expression = logical_expression
| unary_expression assignment_operator assignment_expression
logical_expression = relational_expression
| logical_expression || relational_expression
| logical_expression && relational_expression
relational_expression = additive_expression
| relational_expression == additive_expression
| relational_expression != additive_expression
| relational_expression >= additive_expression
| relational_expression <= additive_expression
| relational_expression > additive_expression
| relational_expression < additive_expression
additive_expression = multiplicative_expression
| additive_expression + multiplicative_expression
| additive_expression - multiplicative_expression
multiplicative_expression = unary_expression
| multiplicative_expression * unary_expression
| multiplicative_expression / unary_expression
| multiplicative_expression // unary_expression
| multiplicative_expression % unary_expression
unary_expression = primary_expression
| unary_operator primary_expression
primary_expression = indentifier
| constant
| "(" expression ")"
identifier = alphabetic character (alphanumeric character)*
declaration = {type_specifier}+ {mode_specifier}+ identifier assignment_operator assignment_expression line_end
type_specifier = int
| double
| string
mode_specifier = ?
| ~
constant = integer
| double
| "string"
assignment_operator = =
unary_operator = +|-
line_end = ";"|"\n"