-
Notifications
You must be signed in to change notification settings - Fork 145
Getting Started
YoEight edited this page Oct 7, 2012
·
22 revisions
This document gets you started with the command line version of the Frege compiler. If you prefer an IDE, you may want to read how to install Eclipse FregIDE.
##Prerequisites
- computer with 256MB memory available to user processes. For compiling very large programs (like the yacc generated parser of the frege compiler, approx. 1800 functions on 40000 lines), 3 to 4 times more memory will be needed.
- 50MB disk space for the unpacked downloads.
- a Java 7 compatible JDK
- Compiler developers will need perl, make and berkeley yacc - look for byacc, pbyacc or byaccj.
##Compile, run and document Frege programs
- Download the latest
frege3
.xx.vvv.jar
from the downloads tab, and rename it tofregec.jar
- Use your preferred editor. There is some support for Frege in UltraEdit and jEdit, see the
examples/
source directory. - In the
examples/
subdirectory of the source tree you also find some small programs to play with. - Customize your command-line window so that it can display unicode characters. (on Windows, try:
chcp 65001
) - Make sure the JDK7 java compiler is in the path:
javac -version
- Make sure the JDK7 java launcher is in the path:
java -version
- Display usage page of the Frege compiler:
java -jar fregec.jar -help
- Make a subdirectory to hold Frege generated classes:
mkdir build
- Compile your program (the
-Xss1m
protects us from getting stack overflow exceptions and should be sufficient even for large source programs):
java -Xss1m -jar fregec.jar -d build test.fr
- Neither the source code file nor the fregec.jar have to be in the current directory. Of course, if they don't, the compile command above must be adapted accordingly.
- Unlike in java, the source path does not have to match the module name. However, when the modul name is
x.y.Z
, the class file goes intobuild/x/y/Z.class
, wherebuild
is the (already existing) directory specified with the-d
option, which is the current directory by default. You'll also find the intermediate java file inbuild/x/y/Z.java
, just in case you're interested to see really incomprehensible java code - please protect children and young programming adepts from looking at it. - If your program contained a
main
function, you can now run it with the following command whereTest
is the package or module name. Under Linux, write:
instead of;
to separate class path components:
java -cp build;fregec.jar Test
- Generate a documentation for your module or for any other module from the fregec.jar:
java -cp build;fregec.jar frege.tools.Doc Test
##Recompile the Compiler (Unix)
- get the source distribution with
git clone https://github.com/Frege/frege.git
- cd to the checked out directory and make subdirectories build and doc if not present already.
- Download the current
frege3
.xx.vvv.jar
from the Download tab and place it in the working directory under the name fregec.jar - check if the Makefile macros JAVAC, YACC and JAVA point to the correct executables
- the Makefile macro JAVA defines the property
-Dfrege.javac
. You can specify here a different path for the java compiler that is to be called from the frege compiler. For example, suppose you need JDK 6 for your daily work, so that java and javac call the JDK 6 binaries. You could then rename or alias the JDK 7 binaries with java7 and javac7. In this case, also set the property"-Dfrege.javac=javac7 -J-Xmx512m"
Run the following command:
make frege.mk && make -f frege.mk runtime compiler
Home
News
Community
- Online Communities
- Frege Ecosystem
- Frege Day 2015
- Protocol
- Simon Peyton-Jones Transcript
- Talks
- Articles
- Books
- Courses
Documentation
- Getting Started
- Online REPL
- FAQ
- Language and API Reference
- Libraries
- Language Interoperability
- Calling Frege From Java (old)
- Calling Java From Frege
- Calling Frege From Java (new)
- Compiler Manpage
- Source Code Doc
- Contributing
- System Properties
- License
- IDE Support
- Eclipse
- Intellij
- VS Code and Language Server
- Haskell
- Differences
- GHC Options vs Frege
- Learn You A Haskell Adaptations
- Official Doc
Downloads