X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fpackage.html;h=4aab6551f61bfc60d1d09660deb06528189a8d05;hp=68414735233d40bdd44600d789c88382f7735fe7;hb=15295b5c059adf69277ecbbe19dc078f8893b89c;hpb=f3fb45a61fc4684119b7f0e48ed24f0aaf943d1b diff --git a/src/edu/berkeley/sbp/package.html b/src/edu/berkeley/sbp/package.html index 6841473..4aab655 100644 --- a/src/edu/berkeley/sbp/package.html +++ b/src/edu/berkeley/sbp/package.html @@ -5,7 +5,8 @@ APIs and all other packages are subject to change in future releases.

Be sure to read doc/jargon.txt and the description below. + href=#package_description>description below. There is also a + faq a the end of this document.

@@ -79,7 +80,7 @@ If the parse was not ambiguous, you can call

- +

Guide to the API

Example

@@ -166,6 +167,62 @@ Expr            =&nb output: add:{8 + mult:{add:{1 + 3} * 7}}
+

FAQs

+ +
+

+I get the error java.lang.Error: multiple non-dropped elements + in sequence, what does this mean? +

+ +

+Note: this question deals with the +package edu.berkeley.sbp.meta, which is not considered +stable. +

+ +

+When using the class edu.berkeley.sbp.meta.Grammar, you must +supply an instance of Grammar.Bindings; this instance tells +SBP how to create a parse tree for an expression using the parse trees +of its subexpressions. +

+ +

+SBP has no trouble determining what to do when parsing an expression +that drops all of its subexpressions, or all but one -- for example: +

+ +
+A = B! C D! E! +
+ +

+... in this example, only C is "non-dropped". In this case, +the result of parsing A is simply the result of parsing +C. +

+ +

+However, if we were to leave more than one element un-dropped, SBP +needs to know how to form a single tree out of the two non-dropped +subtrees. There are two ways to do this. The simplest is to provide +a tag -- a string which becomes the common parent of the two subtrees: +

+ +
+Expr = Mult:: Expr "*" Expr +
+ +

+If you are using AnnotationGrammarBindings, you can also deal +with this situation by declaring a method/inner-class whose name +matches the nonterminal (Expr) and has appropriate +annotations. This is fairly advanced stuff, and the code it uses +isn't quite as mature as the rest of the code. +

+ +

Reporting Bugs