Neobem is a preprocessor programming language primarily targeted for the idf input files for EnergyPlus. It also supports the Building Description Language used for DOE-2.
You can download the entire user manual in PDF form here or view online at neobem.io.
Quick links:
INCLUDE doc/intro.md
INCLUDE doc/getting_started.md
If you believe you have come across a bug, please open a new GitHub issue. Please attempt to produce a "minimum reproducible example (MRE)" file that reproduces the problem. If the code snippet is small enough, include directly in the issue, otherwise attach the associated file.
You can also attempt to get support on Unmet Hours,
a site similar in spirit to Stack Overflow,
but for building energy modelers.
Make sure to tag the question with neobem
as I have an email alert set up for those questions.
Feedback and contributions are welcomed. Small contributions can made directly in Pull Requests. If you'd like to propose a more significant or more fundamental change, I ask that it first be discussed to prevent wasted effort. Please use the "Discussions" within the GitHub repository, likely in the "General" or "Ideas" category.
If the change adds functionality, corresponding unit tests would be expected.
Tests are located in the test
project/directory.
For coding style conventions, you can follow the conventions laid out by Microsoft (link).
Building from source requires the following dependencies:
- A .NET environment. Typically installed with Visual Studio, Rider, or directly through the SDK libraries.
- ANTLR and Java. I typically use the open source version of Java at jdk.java.net.
- Optional: A
redo
. This is amake
alternative (see original description from Daniel J. Bernstein). There are several existing implementations out there. I now use theredo
fromzombiezen
and have usedapenwarr
s redo in the past. However, just to get things building, there is a minimaldo
shell executable in the root of the repository.
You can then follow along with the steps in the GitHub workflow that tests building commits (.github/workflows/dotnet.yml
).
The minimum steps after .NET and Java installation are:
# Get ANTLR (version 4.9.3 in this example)
curl --output antlr-4.9.3-complete.jar https://www.antlr.org/download/antlr-4.9.3-complete.jar
# Compile ANTLR grammars - environment variables ANTLR_JAR and CLASSPATH required.
export ANTLR_JAR="$(pwd)"/antlr-4.9.3-complete.jar
export CLASSPATH=.:"$(pwd)/antlr-4.9.3-complete.jar"
./do src/antlr/compiled
./do src/antlr/excelrange/compiled
./do src/antlr/idf/compiled
# Run redo targets
./do src/Help.cs src/Version.cs test/TestFileDirectory.cs
# Build
dotnet build src
dotnet build test