forked from GitHub/gf-core
Use Pandoc instead of txt2tags binary, much more configurable
This commit is contained in:
@@ -1,4 +0,0 @@
|
|||||||
%!target: html
|
|
||||||
%!options: --no-headers
|
|
||||||
%!encoding: UTF-8
|
|
||||||
%!postproc(html): '<TABLE CELLPADDING="4">' '<TABLE class="table">'
|
|
||||||
24
_post.html
24
_post.html
@@ -1,24 +0,0 @@
|
|||||||
</div><!-- .container -->
|
|
||||||
|
|
||||||
<footer class="bg-light mt-5 py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-6">
|
|
||||||
<a href="/">Home</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
|
||||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
try {
|
|
||||||
var pageTracker = _gat._getTracker("UA-7811807-3");
|
|
||||||
pageTracker._trackPageview();
|
|
||||||
} catch(err) {}</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
16
_pre.html
16
_pre.html
@@ -1,16 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>{{HEAD1}}</title>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="mb-5">
|
|
||||||
<img src="/doc/Logos/gf1.svg" class="float-md-right mb-3 mb-md-0" alt="GF Logo">
|
|
||||||
<h1 class="display-4">{{HEAD1}}</h1>
|
|
||||||
<h3>{{HEAD2}}</h3>
|
|
||||||
<h4 class="text-muted">{{HEAD3}}</h4>
|
|
||||||
</div>
|
|
||||||
90
bin/_template.html
Normal file
90
bin/_template.html
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="generator" content="pandoc" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||||
|
$for(author-meta)$
|
||||||
|
<meta name="author" content="$author-meta$" />
|
||||||
|
$endfor$
|
||||||
|
$if(date-meta)$
|
||||||
|
<meta name="dcterms.date" content="$date-meta$" />
|
||||||
|
$endif$
|
||||||
|
$if(keywords)$
|
||||||
|
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
|
||||||
|
$endif$
|
||||||
|
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
|
||||||
|
<style type="text/css">
|
||||||
|
code{white-space: pre-wrap;}
|
||||||
|
span.smallcaps{font-variant: small-caps;}
|
||||||
|
span.underline{text-decoration: underline;}
|
||||||
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||||
|
$if(quotes)$
|
||||||
|
q { quotes: "“" "”" "‘" "’"; }
|
||||||
|
$endif$
|
||||||
|
</style>
|
||||||
|
$if(highlighting-css)$
|
||||||
|
<style type="text/css">
|
||||||
|
$highlighting-css$
|
||||||
|
</style>
|
||||||
|
$endif$
|
||||||
|
$for(css)$
|
||||||
|
<link rel="stylesheet" href="$css$" />
|
||||||
|
$endfor$
|
||||||
|
$if(math)$
|
||||||
|
$math$
|
||||||
|
$endif$
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
$for(header-includes)$
|
||||||
|
$header-includes$
|
||||||
|
$endfor$
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container my-5">
|
||||||
|
|
||||||
|
$if(title)$
|
||||||
|
<header id="title-block-header">
|
||||||
|
<img src="$rel-root$/doc/Logos/gf1.svg" height="200px" class="float-md-right mb-3 mb-md-0" alt="GF Logo">
|
||||||
|
<h1 class="title">$title$</h1>
|
||||||
|
$if(subtitle)$
|
||||||
|
<p class="subtitle">$subtitle$</p>
|
||||||
|
$endif$
|
||||||
|
$for(author)$
|
||||||
|
<p class="author">$author$</p>
|
||||||
|
$endfor$
|
||||||
|
$if(date)$
|
||||||
|
<p class="date">$date$</p>
|
||||||
|
$endif$
|
||||||
|
</header>
|
||||||
|
$endif$
|
||||||
|
$if(toc)$
|
||||||
|
<nav id="$idprefix$TOC">
|
||||||
|
$table-of-contents$
|
||||||
|
</nav>
|
||||||
|
$endif$
|
||||||
|
$body$
|
||||||
|
</div><!-- .container -->
|
||||||
|
|
||||||
|
<footer class="bg-light mt-5 py-5">
|
||||||
|
<div class="container mb-5">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6">
|
||||||
|
<a href="$rel-root$">Home</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||||
|
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
try {
|
||||||
|
var pageTracker = _gat._getTracker("UA-7811807-3");
|
||||||
|
pageTracker._trackPageview();
|
||||||
|
} catch(err) {}</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -3,38 +3,29 @@
|
|||||||
### This script finds all .t2t (txt2tags) files and updates the corresponding
|
### This script finds all .t2t (txt2tags) files and updates the corresponding
|
||||||
### .html file, if it is out-of-date.
|
### .html file, if it is out-of-date.
|
||||||
|
|
||||||
config=".txt2tagsrc"
|
# Path to this directory (not CWD)
|
||||||
pre="_pre.html"
|
# https://stackoverflow.com/a/246128/98600
|
||||||
post="_post.html"
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||||
tmp="tmp.html"
|
|
||||||
|
|
||||||
find . -name '*.t2t' | while read t2t ; do
|
find . -name '*.t2t' | while read t2t ; do
|
||||||
html="${t2t%.t2t}.html"
|
html="${t2t%.t2t}.html"
|
||||||
if [ "$t2t" -nt "$html" ] ; then
|
if [ "$t2t" -nt "$html" ] ; then
|
||||||
txt2tags --config-file="$config" --target=html "$t2t"
|
echo "$t2t"
|
||||||
cat $pre $html $post > $tmp
|
relroot="$( dirname $t2t | sed -E 's/^.\///' | sed -E 's/[^/]+/../g' )"
|
||||||
mv $tmp $html
|
pandoc \
|
||||||
head1=$(head -n 1 "$t2t")
|
--from=t2t \
|
||||||
head2=$(tail -n+2 "$t2t" | head -n 1)
|
--to=html5 \
|
||||||
head3=$(tail -n+3 "$t2t" | head -n 1)
|
--standalone \
|
||||||
|
--template="$DIR/_template.html" \
|
||||||
# Replace "headers" from t2t in final HTML
|
--css="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" \
|
||||||
# Documentation here: https://txt2tags.org/userguide/headerarea
|
--variable="rel-root:$relroot" \
|
||||||
if [ -n "$head1" ] ; then
|
"$t2t" \
|
||||||
sed -i.bak "s/{{HEAD1}}/$head1/" "$html" && rm "$html.bak"
|
--output="$html"
|
||||||
|
if [ -f "$html" ]; then
|
||||||
|
sed -i.bak "s/<table>/<table class=\"table\">/" "$html" && rm "$html.bak"
|
||||||
|
sed -i.bak -E "s/\`\`(.+)\`\`/<code>\1<\/code>/g" "$html" && rm "$html.bak"
|
||||||
else
|
else
|
||||||
sed -i.bak -E "s/<.+{{HEAD1}}.+>//" "$html" && rm "$html.bak"
|
echo "Error creating $html"
|
||||||
continue # empty headers
|
|
||||||
fi
|
|
||||||
if [ -n "$head2" ] ; then
|
|
||||||
sed -i.bak "s/{{HEAD2}}/$head2/" "$html" && rm "$html.bak"
|
|
||||||
else
|
|
||||||
sed -i.bak -E "s/<.+{{HEAD2}}.+>//" "$html" && rm "$html.bak"
|
|
||||||
fi
|
|
||||||
if [ -n "$head3" ] ; then
|
|
||||||
sed -i.bak "s/{{HEAD3}}/$head3/" "$html" && rm "$html.bak"
|
|
||||||
else
|
|
||||||
sed -i.bak -E "s/<.+{{HEAD3}}.+>//" "$html" && rm "$html.bak"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ April 4, 2006
|
|||||||
This is a quick reference on GF grammars. It aims to
|
This is a quick reference on GF grammars. It aims to
|
||||||
cover all forms of expression available when writing
|
cover all forms of expression available when writing
|
||||||
grammars. It assumes basic knowledge of GF, which
|
grammars. It assumes basic knowledge of GF, which
|
||||||
can be acquired from the
|
can be acquired from the
|
||||||
[GF Tutorial http://www.grammaticalframework.org/doc/tutorial/gf-tutorial.html].
|
[GF Tutorial http://www.grammaticalframework.org/doc/tutorial/gf-tutorial.html].
|
||||||
Help on GF commands is obtained on line by the
|
Help on GF commands is obtained on line by the
|
||||||
help command (``help``), and help on invoking
|
help command with ``help``, and help on invoking
|
||||||
GF with (``gf -help``).
|
GF with ``gf -help``.
|
||||||
|
|
||||||
|
|
||||||
===A complete example===
|
===A complete example===
|
||||||
@@ -31,10 +31,10 @@ phrases //one pizza// and //two pizzas//.
|
|||||||
File ``Order.gf``:
|
File ``Order.gf``:
|
||||||
```
|
```
|
||||||
abstract Order = {
|
abstract Order = {
|
||||||
cat
|
cat
|
||||||
Order ;
|
Order ;
|
||||||
Item ;
|
Item ;
|
||||||
fun
|
fun
|
||||||
One, Two : Item -> Order ;
|
One, Two : Item -> Order ;
|
||||||
Pizza : Item ;
|
Pizza : Item ;
|
||||||
}
|
}
|
||||||
@@ -42,13 +42,13 @@ fun
|
|||||||
File ``OrderEng.gf`` (the top file):
|
File ``OrderEng.gf`` (the top file):
|
||||||
```
|
```
|
||||||
--# -path=.:prelude
|
--# -path=.:prelude
|
||||||
concrete OrderEng of Order =
|
concrete OrderEng of Order =
|
||||||
open Res, Prelude in {
|
open Res, Prelude in {
|
||||||
flags startcat=Order ;
|
flags startcat=Order ;
|
||||||
lincat
|
lincat
|
||||||
Order = SS ;
|
Order = SS ;
|
||||||
Item = {s : Num => Str} ;
|
Item = {s : Num => Str} ;
|
||||||
lin
|
lin
|
||||||
One it = ss ("one" ++ it.s ! Sg) ;
|
One it = ss ("one" ++ it.s ! Sg) ;
|
||||||
Two it = ss ("two" ++ it.s ! Pl) ;
|
Two it = ss ("two" ++ it.s ! Pl) ;
|
||||||
Pizza = regNoun "pizza" ;
|
Pizza = regNoun "pizza" ;
|
||||||
@@ -84,10 +84,10 @@ File named ``Foo.gf`` contains module named
|
|||||||
|
|
||||||
Each module has the structure
|
Each module has the structure
|
||||||
```
|
```
|
||||||
moduletypename =
|
moduletypename =
|
||||||
Inherits ** -- optional
|
Inherits ** -- optional
|
||||||
open Opens in -- optional
|
open Opens in -- optional
|
||||||
{ Judgements }
|
{ Judgements }
|
||||||
```
|
```
|
||||||
Inherits are names of modules of the same type.
|
Inherits are names of modules of the same type.
|
||||||
Inheritance can be restricted:
|
Inheritance can be restricted:
|
||||||
@@ -112,15 +112,15 @@ interface I -- like resource, but can have
|
|||||||
oper f : T without definition
|
oper f : T without definition
|
||||||
instance J of I -- like resource, defines opers
|
instance J of I -- like resource, defines opers
|
||||||
that I leaves undefined
|
that I leaves undefined
|
||||||
incomplete -- functor: concrete that opens
|
incomplete -- functor: concrete that opens
|
||||||
concrete CI of A = one or more interfaces
|
concrete CI of A = one or more interfaces
|
||||||
open I in ...
|
open I in ...
|
||||||
concrete CJ of A = -- completion: concrete that
|
concrete CJ of A = -- completion: concrete that
|
||||||
CI with instantiates a functor by
|
CI with instantiates a functor by
|
||||||
(I = J) instances of open interfaces
|
(I = J) instances of open interfaces
|
||||||
```
|
```
|
||||||
The forms
|
The forms
|
||||||
``param``, ``oper``
|
``param``, ``oper``
|
||||||
may appear in ``concrete`` as well, but are then
|
may appear in ``concrete`` as well, but are then
|
||||||
not inherited to extensions.
|
not inherited to extensions.
|
||||||
|
|
||||||
@@ -134,11 +134,11 @@ Comments have the forms
|
|||||||
A ``concrete`` can be opened like a ``resource``.
|
A ``concrete`` can be opened like a ``resource``.
|
||||||
It is translated as follows:
|
It is translated as follows:
|
||||||
```
|
```
|
||||||
cat C ---> oper C : Type =
|
cat C ---> oper C : Type =
|
||||||
lincat C = T T ** {lock_C : {}}
|
lincat C = T T ** {lock_C : {}}
|
||||||
|
|
||||||
fun f : G -> C ---> oper f : A* -> C* = \g ->
|
fun f : G -> C ---> oper f : A* -> C* = \g ->
|
||||||
lin f = t t g ** {lock_C = <>}
|
lin f = t t g ** {lock_C = <>}
|
||||||
```
|
```
|
||||||
An ``abstract`` can be opened like an ``interface``.
|
An ``abstract`` can be opened like an ``interface``.
|
||||||
Any ``concrete`` of it then works as an ``instance``.
|
Any ``concrete`` of it then works as an ``instance``.
|
||||||
@@ -155,7 +155,7 @@ fun f : T -- declare function f of type T
|
|||||||
def f = t -- define f as t
|
def f = t -- define f as t
|
||||||
def f p q = t -- define f by pattern matching
|
def f p q = t -- define f by pattern matching
|
||||||
data C = f | g -- set f,g as constructors of C
|
data C = f | g -- set f,g as constructors of C
|
||||||
data f : A -> C -- same as
|
data f : A -> C -- same as
|
||||||
fun f : A -> C; data C=f
|
fun f : A -> C; data C=f
|
||||||
|
|
||||||
lincat C = T -- define lin.type of cat C
|
lincat C = T -- define lin.type of cat C
|
||||||
@@ -166,7 +166,7 @@ printname fun f = s -- printname shown in menus
|
|||||||
printname cat C = s -- printname shown in menus
|
printname cat C = s -- printname shown in menus
|
||||||
printname f = s -- same as printname fun f = s
|
printname f = s -- same as printname fun f = s
|
||||||
|
|
||||||
param P = C | D Q R -- define parameter type P
|
param P = C | D Q R -- define parameter type P
|
||||||
with constructors
|
with constructors
|
||||||
C : P, D : Q -> R -> P
|
C : P, D : Q -> R -> P
|
||||||
oper h : T = t -- define oper h of type T
|
oper h : T = t -- define oper h of type T
|
||||||
@@ -207,14 +207,14 @@ P -- parameter type, if param P
|
|||||||
P => B -- table type, if P param. type
|
P => B -- table type, if P param. type
|
||||||
{s : Str ; p : P}-- record type
|
{s : Str ; p : P}-- record type
|
||||||
{s,t : Str} -- same as {s : Str ; t : Str}
|
{s,t : Str} -- same as {s : Str ; t : Str}
|
||||||
{a : A} **{b : B}-- record type extension, same as
|
{a : A} **{b : B}-- record type extension, same as
|
||||||
{a : A ; b : B}
|
{a : A ; b : B}
|
||||||
A * B * C -- tuple type, same as
|
A * B * C -- tuple type, same as
|
||||||
{p1 : A ; p2 : B ; p3 : C}
|
{p1 : A ; p2 : B ; p3 : C}
|
||||||
Ints n -- type of n first integers
|
Ints n -- type of n first integers
|
||||||
```
|
```
|
||||||
Resource (in ``oper``): all those of concrete, plus
|
Resource (in ``oper``): all those of concrete, plus
|
||||||
```
|
```
|
||||||
Tok -- tokens (subtype of Str)
|
Tok -- tokens (subtype of Str)
|
||||||
A -> B -- functions from A to B
|
A -> B -- functions from A to B
|
||||||
Int -- integers
|
Int -- integers
|
||||||
@@ -239,7 +239,7 @@ f a b -- : C if fun f : A -> B -> C
|
|||||||
```
|
```
|
||||||
Higher-Order Abstract syntax (HOAS): functions as arguments:
|
Higher-Order Abstract syntax (HOAS): functions as arguments:
|
||||||
```
|
```
|
||||||
F a (\x -> c) -- : C if a : A, c : C (x : B),
|
F a (\x -> c) -- : C if a : A, c : C (x : B),
|
||||||
fun F : A -> (B -> C) -> C
|
fun F : A -> (B -> C) -> C
|
||||||
```
|
```
|
||||||
Tokens and token lists
|
Tokens and token lists
|
||||||
@@ -266,16 +266,16 @@ table { -- by pattern matching
|
|||||||
Pl => "mice" ;
|
Pl => "mice" ;
|
||||||
_ => "mouse" -- wildcard pattern
|
_ => "mouse" -- wildcard pattern
|
||||||
}
|
}
|
||||||
table {
|
table {
|
||||||
n => regn n "cat" -- variable pattern
|
n => regn n "cat" -- variable pattern
|
||||||
}
|
}
|
||||||
table Num {...} -- table given with arg. type
|
table Num {...} -- table given with arg. type
|
||||||
table ["ox"; "oxen"] -- table as course of values
|
table ["ox"; "oxen"] -- table as course of values
|
||||||
\\_ => "fish" -- same as table {_ => "fish"}
|
\\_ => "fish" -- same as table {_ => "fish"}
|
||||||
\\p,q => t -- same as \\p => \\q => t
|
\\p,q => t -- same as \\p => \\q => t
|
||||||
|
|
||||||
t ! p -- select p from table t
|
t ! p -- select p from table t
|
||||||
case e of {...} -- same as table {...} ! e
|
case e of {...} -- same as table {...} ! e
|
||||||
```
|
```
|
||||||
Records
|
Records
|
||||||
```
|
```
|
||||||
@@ -296,7 +296,7 @@ Local definitions
|
|||||||
```
|
```
|
||||||
let x : A = d in t -- let definition
|
let x : A = d in t -- let definition
|
||||||
let x = d in t -- let defin, type inferred
|
let x = d in t -- let defin, type inferred
|
||||||
let x=d ; y=e in t -- same as
|
let x=d ; y=e in t -- same as
|
||||||
let x=d in let y=e in t
|
let x=d in let y=e in t
|
||||||
let {...} in t -- same as let ... in t
|
let {...} in t -- same as let ... in t
|
||||||
|
|
||||||
@@ -316,10 +316,10 @@ Typed expression
|
|||||||
```
|
```
|
||||||
<t:T> -- same as t, to help type inference
|
<t:T> -- same as t, to help type inference
|
||||||
```
|
```
|
||||||
Accessing bound variables in ``lin``: use fields ``$1, $2, $3,...``.
|
Accessing bound variables in ``lin``: use fields ``$1, $2, $3,...``.
|
||||||
Example:
|
Example:
|
||||||
```
|
```
|
||||||
fun F : (A : Set) -> (El A -> Prop) -> Prop ;
|
fun F : (A : Set) -> (El A -> Prop) -> Prop ;
|
||||||
lin F A B = {s = ["for all"] ++ A.s ++ B.$1 ++ B.s}
|
lin F A B = {s = ["for all"] ++ A.s ++ B.$1 ++ B.s}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -367,7 +367,7 @@ oper
|
|||||||
cc2 : (_,_ : SS) -> SS -- concat SS's
|
cc2 : (_,_ : SS) -> SS -- concat SS's
|
||||||
optStr : Str -> Str -- string or empty
|
optStr : Str -> Str -- string or empty
|
||||||
strOpt : Str -> Str -- empty or string
|
strOpt : Str -> Str -- empty or string
|
||||||
bothWays : Str -> Str -> Str -- X++Y or Y++X
|
bothWays : Str -> Str -> Str -- X++Y or Y++X
|
||||||
init : Tok -> Tok -- all but last char
|
init : Tok -> Tok -- all but last char
|
||||||
last : Tok -> Tok -- last char
|
last : Tok -> Tok -- last char
|
||||||
prefixSS : Str -> SS -> SS
|
prefixSS : Str -> SS -> SS
|
||||||
@@ -388,7 +388,7 @@ Flags can appear, with growing priority,
|
|||||||
|
|
||||||
Some common flags used in grammars:
|
Some common flags used in grammars:
|
||||||
```
|
```
|
||||||
startcat=cat use this category as default
|
startcat=cat use this category as default
|
||||||
|
|
||||||
lexer=literals int and string literals recognized
|
lexer=literals int and string literals recognized
|
||||||
lexer=code like program code
|
lexer=code like program code
|
||||||
@@ -407,7 +407,7 @@ optimize=values good for lexicon concrete
|
|||||||
optimize=all usually good for resource
|
optimize=all usually good for resource
|
||||||
optimize=noexpand for resource, if =all too big
|
optimize=noexpand for resource, if =all too big
|
||||||
```
|
```
|
||||||
For the full set of values for ``FLAG``,
|
For the full set of values for ``FLAG``,
|
||||||
use on-line ``h -FLAG``.
|
use on-line ``h -FLAG``.
|
||||||
|
|
||||||
|
|
||||||
@@ -415,7 +415,7 @@ use on-line ``h -FLAG``.
|
|||||||
===File import search paths===
|
===File import search paths===
|
||||||
|
|
||||||
Colon-separated list of directories searched in the
|
Colon-separated list of directories searched in the
|
||||||
given order:
|
given order:
|
||||||
```
|
```
|
||||||
--# -path=.:../abstract:../common:prelude
|
--# -path=.:../abstract:../common:prelude
|
||||||
```
|
```
|
||||||
@@ -443,17 +443,17 @@ directories, colon-separated, in ``GF_LIB_PATH``.
|
|||||||
|
|
||||||
===Alternative grammar formats===
|
===Alternative grammar formats===
|
||||||
|
|
||||||
**Old GF** (before GF 2.0):
|
**Old GF** (before GF 2.0):
|
||||||
all judgements in any kinds of modules,
|
all judgements in any kinds of modules,
|
||||||
division into files uses ``include``s.
|
division into files uses ``include``s.
|
||||||
A file ``Foo.gf`` is recognized as the old format
|
A file ``Foo.gf`` is recognized as the old format
|
||||||
if it lacks a module header.
|
if it lacks a module header.
|
||||||
|
|
||||||
**Context-free** (file ``foo.cf``). The form of rules is e.g.
|
**Context-free** (file ``foo.cf``). The form of rules is e.g.
|
||||||
```
|
```
|
||||||
Fun. S ::= NP "is" AP ;
|
Fun. S ::= NP "is" AP ;
|
||||||
```
|
```
|
||||||
If ``Fun`` is omitted, it is generated automatically.
|
If ``Fun`` is omitted, it is generated automatically.
|
||||||
Rules must be one per line. The RHS can be empty.
|
Rules must be one per line. The RHS can be empty.
|
||||||
|
|
||||||
**Extended BNF** (file ``foo.ebnf``). The form of rules is e.g.
|
**Extended BNF** (file ``foo.ebnf``). The form of rules is e.g.
|
||||||
@@ -477,7 +477,7 @@ on command line. This file can be the grammar file itself.
|
|||||||
```
|
```
|
||||||
in Cat "example string"
|
in Cat "example string"
|
||||||
```
|
```
|
||||||
are preprocessed by using a parser given by the flag
|
are preprocessed by using a parser given by the flag
|
||||||
```
|
```
|
||||||
--# -resource=File
|
--# -resource=File
|
||||||
```
|
```
|
||||||
@@ -489,5 +489,4 @@ and the result is written to ``foo.gf``.
|
|||||||
[GF Homepage http://www.grammaticalframework.org/]
|
[GF Homepage http://www.grammaticalframework.org/]
|
||||||
|
|
||||||
A. Ranta, Grammatical Framework: A Type-Theoretical Grammar Formalism.
|
A. Ranta, Grammatical Framework: A Type-Theoretical Grammar Formalism.
|
||||||
//The Journal of Functional Programming//, vol. 14:2. 2004, pp. 145-189.
|
//The Journal of Functional Programming//, vol. 14:2. 2004, pp. 145-189.
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ What's new? See the [Release notes release-3.9.html].
|
|||||||
| Ubuntu (32-bit) | [gf_3.9-1_i386.deb gf_3.9-1_i386.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_i386.deb``
|
| Ubuntu (32-bit) | [gf_3.9-1_i386.deb gf_3.9-1_i386.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_i386.deb``
|
||||||
| Ubuntu (64-bit) | [gf_3.9-1_amd64.deb gf_3.9-1_amd64.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_amd64.deb``
|
| Ubuntu (64-bit) | [gf_3.9-1_amd64.deb gf_3.9-1_amd64.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_amd64.deb``
|
||||||
| Windows | [gf-3.9-bin-windows.zip gf-3.9-bin-windows.zip] | //GF+S// | ``unzip gf-3.9-bin-windows.zip``
|
| Windows | [gf-3.9-bin-windows.zip gf-3.9-bin-windows.zip] | //GF+S// | ``unzip gf-3.9-bin-windows.zip``
|
||||||
|
|
||||||
%| MINGW | [gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz] | //GF+S+C// | ``tar -C / gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz``
|
%| MINGW | [gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz] | //GF+S+C// | ``tar -C / gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz``
|
||||||
%| ... | ... | ... | ...
|
%| ... | ... | ... | ...
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user