Skip to content
YoEight edited this page Oct 4, 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 [HowToEclipseFregIDE].

##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 to fregec.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 into build/x/y/Z.class, where build 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 in build/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 where Test 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

svn checkout http://frege.googlecode.com/svn/trunk frege-read-only

  • 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

Clone this wiki locally