1
0
forked from GitHub/gf-core

document the embedded API for Java

This commit is contained in:
Krasimir Angelov
2017-08-29 21:04:00 +02:00
parent 1e4ab95e41
commit 78dfc8958d

View File

@@ -650,6 +650,26 @@ visit = case fg e2 of
</pre>
</p>
</span>
<span class="java">
<p>In order to access the API you first need to generate
one boilerplate Java class with the compiler:
<pre class="java">
$ gf -make -output-format=java App.pgf
</pre>
This class will expose all functions in the abstract syntax
as methods. Now creating new trees is just a matter of writing ordinary Java
code:
<pre class="java">
System.out.println(App.DetCN(quant, cn));
</pre>
If the grammar name is too long to write it in front of every function
name then you can create an instance with a shorter name:
<pre class="java">
App a = new App();
System.out.println(a.DetCN(quant, cn));
</pre>
</p>
</span>
<span class="python">
<p>
@@ -665,16 +685,16 @@ If there is no matching method name then the runtime will
call the method <tt>default</tt>. The following is an example:
<pre class="python">
>>> class ExampleVisitor:
def on_DetCN(self,quant,cn):
print("Found DetCN")
cn.visit(self)
def on_DetCN(self,quant,cn):
print("Found DetCN")
cn.visit(self)
def on_AdjCN(self,adj,cn):
print("Found AdjCN")
cn.visit(self)
def default(self,e):
pass
def on_AdjCN(self,adj,cn):
print("Found AdjCN")
cn.visit(self)
def default(self,e):
pass
>>> e2.visit(ExampleVisitor())
Found DetCN
Found AdjCN