{"size": 1378, "ext": "scrbl", "max_stars_repo_path": "docs-src/ref.scrbl", "max_stars_repo_name": "DanBurton/reach-lang", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "docs-src/ref.scrbl", "max_issues_repo_name": "DanBurton/reach-lang", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "docs-src/ref.scrbl", "max_forks_repo_name": "DanBurton/reach-lang", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 43.0625, "max_line_length": 251, "alphanum_fraction": 0.7525399129}
#lang scribble/manual
@(require "lib.rkt"
          scribble/bnf)

@title[#:version reach-vers #:tag "ref" #:style 'toc]{Reach Reference}

This document contains an exhaustive discussion of each of the parts of the Reach @DApp language and its standard library. In contrast, @secref{tut} contains a series of guiding tutorials to introduce the key concepts of the language and @DApp design.

@local-table-of-contents[#:style 'immediate-only]

@section[#:tag "ref-install"]{Installation & Usage}

Reach is a Dockerized program, so its only dependencies are @link["https://www.docker.com/get-started"]{Docker} and @link["https://docs.docker.com/compose/install/"]{Docker Compose}. You can install it by running:

@commandline{curl https://raw.githubusercontent.com/reach-sh/reach-lang/master/reachc -o reachc ; chmod +x reachc}

in your project repository.

After you install it, you can compile your Reach code by executing @exec{reachc SOURCE} where @exec{SOURCE} is your @tech{executable} @tech{source file}. @exec{reachc} supports the following options:

@itemlist[

  @item{@Flag{o}/@DFlag{output} @nonterm{OUTPUT} --- Writes the compiler output files to @nonterm{OUTPUT}, which is the current directory by default.}

]

@include-section["ref-model.scrbl"]
@include-section["ref-programs.scrbl"]
@include-section["ref-networks.scrbl"]
@include-section["ref-backends.scrbl"]

