From 0a0227b9180534d2a431f3d6e08a398bde2244c4 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 12 Dec 2005 02:23:16 -0500 Subject: [PATCH 1/1] initial import darcs-hash:20051212072316-5007d-b2da724d7a4090bc581c289fdec49c2a295abbdc.gz --- LICENSE | 24 + Makefile | 48 ++ README | 78 +++ TODO | 110 ++++ doc/jargon.txt | 112 ++++ doc/osq.lunch.talk.pdf | Bin 0 -> 524224 bytes doc/preprint.pdf | Bin 0 -> 151915 bytes doc/sbp.html | 242 ++++++++ index.html | 1 + src/edu/berkeley/sbp/Atom.java | 30 + src/edu/berkeley/sbp/Element.java | 24 + src/edu/berkeley/sbp/Forest.java | 217 +++++++ src/edu/berkeley/sbp/GSS.java | 328 ++++++++++ src/edu/berkeley/sbp/Parser.java | 337 ++++++++++ src/edu/berkeley/sbp/Repeat.java | 63 ++ src/edu/berkeley/sbp/Sequence.java | 207 +++++++ src/edu/berkeley/sbp/Token.java | 34 + src/edu/berkeley/sbp/Tree.java | 57 ++ src/edu/berkeley/sbp/Union.java | 90 +++ src/edu/berkeley/sbp/Walk.java | 191 ++++++ src/edu/berkeley/sbp/misc/CharToken.java | 169 +++++ src/edu/berkeley/sbp/misc/MetaGrammar.java | 758 +++++++++++++++++++++++ src/edu/berkeley/sbp/misc/ReflectiveWalker.java | 100 +++ src/edu/berkeley/sbp/misc/RegressionTests.java | 164 +++++ src/edu/berkeley/sbp/misc/StringWalker.java | 15 + src/edu/berkeley/sbp/misc/TreeWalker.java | 20 + src/edu/berkeley/sbp/package.html | 3 + src/edu/berkeley/sbp/tib/Braces.java | 41 ++ src/edu/berkeley/sbp/tib/Tib.java | 246 ++++++++ src/edu/berkeley/sbp/tib/TibDoc.java | 110 ++++ src/edu/berkeley/sbp/util/ArrayIterator.java | 15 + src/edu/berkeley/sbp/util/EmptyIterator.java | 9 + src/edu/berkeley/sbp/util/FastSet.java | 56 ++ src/edu/berkeley/sbp/util/HashMapBag.java | 26 + src/edu/berkeley/sbp/util/IntegerTopology.java | 76 +++ src/edu/berkeley/sbp/util/MapBag.java | 10 + src/edu/berkeley/sbp/util/Range.java | 737 ++++++++++++++++++++++ src/edu/berkeley/sbp/util/Reflection.java | 122 ++++ src/edu/berkeley/sbp/util/StringUtil.java | 58 ++ src/edu/berkeley/sbp/util/TopologicalBag.java | 121 ++++ src/edu/berkeley/sbp/util/Topology.java | 29 + tests/meta.g | 54 ++ tests/regression.tc | 305 +++++++++ tests/testcase.g | 7 + 44 files changed, 5444 insertions(+) create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README create mode 100644 TODO create mode 100644 doc/jargon.txt create mode 100644 doc/osq.lunch.talk.pdf create mode 100644 doc/preprint.pdf create mode 100644 doc/sbp.html create mode 100644 index.html create mode 100644 src/edu/berkeley/sbp/Atom.java create mode 100644 src/edu/berkeley/sbp/Element.java create mode 100644 src/edu/berkeley/sbp/Forest.java create mode 100644 src/edu/berkeley/sbp/GSS.java create mode 100644 src/edu/berkeley/sbp/Parser.java create mode 100644 src/edu/berkeley/sbp/Repeat.java create mode 100644 src/edu/berkeley/sbp/Sequence.java create mode 100644 src/edu/berkeley/sbp/Token.java create mode 100644 src/edu/berkeley/sbp/Tree.java create mode 100644 src/edu/berkeley/sbp/Union.java create mode 100644 src/edu/berkeley/sbp/Walk.java create mode 100644 src/edu/berkeley/sbp/misc/CharToken.java create mode 100644 src/edu/berkeley/sbp/misc/MetaGrammar.java create mode 100644 src/edu/berkeley/sbp/misc/ReflectiveWalker.java create mode 100644 src/edu/berkeley/sbp/misc/RegressionTests.java create mode 100644 src/edu/berkeley/sbp/misc/StringWalker.java create mode 100644 src/edu/berkeley/sbp/misc/TreeWalker.java create mode 100644 src/edu/berkeley/sbp/package.html create mode 100644 src/edu/berkeley/sbp/tib/Braces.java create mode 100644 src/edu/berkeley/sbp/tib/Tib.java create mode 100644 src/edu/berkeley/sbp/tib/TibDoc.java create mode 100644 src/edu/berkeley/sbp/util/ArrayIterator.java create mode 100644 src/edu/berkeley/sbp/util/EmptyIterator.java create mode 100644 src/edu/berkeley/sbp/util/FastSet.java create mode 100644 src/edu/berkeley/sbp/util/HashMapBag.java create mode 100644 src/edu/berkeley/sbp/util/IntegerTopology.java create mode 100644 src/edu/berkeley/sbp/util/MapBag.java create mode 100644 src/edu/berkeley/sbp/util/Range.java create mode 100644 src/edu/berkeley/sbp/util/Reflection.java create mode 100644 src/edu/berkeley/sbp/util/StringUtil.java create mode 100644 src/edu/berkeley/sbp/util/TopologicalBag.java create mode 100644 src/edu/berkeley/sbp/util/Topology.java create mode 100644 tests/meta.g create mode 100644 tests/regression.tc create mode 100644 tests/testcase.g diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..acf93e9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,24 @@ +* Copyright (c) 2005, Regents of the University of California +* All rights reserved. +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the University of California, Berkeley nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..40ad504 --- /dev/null +++ b/Makefile @@ -0,0 +1,48 @@ + +java = java + +regress: + make boot + rm edu.berkeley.sbp.jar + make test + +profile: edu.berkeley.sbp.jar + $(java) -agentlib:yjpagent \ + -cp $< edu.berkeley.sbp.misc.RegressionTests \ + -profile \ + tests/meta.g \ + tests/testcase.g \ + tests/regression.tc + +test: edu.berkeley.sbp.jar + $(java) -cp $< edu.berkeley.sbp.misc.RegressionTests \ + tests/meta.g \ + tests/testcase.g \ + tests/regression.tc + +boot: edu.berkeley.sbp.jar + cd src; \ + $(java) -cp ../$< \ + edu.berkeley.sbp.misc.MetaGrammar \ + ../tests/meta.g \ + edu.berkeley.sbp.misc.MetaGrammar + +edu.berkeley.sbp.jar: $(shell find src -name \*.java) + mkdir -p bin + javac -d bin -sourcepath src $^ + cd bin; jar cf ../$@ . + +javadoc: + rm -rf doc/api + mkdir -p doc/api + javadoc -sourcepath src -public -d doc/api `find src -name \*.java` + +clean: + rm -rf doc/api edu.berkeley.sbp.jar bin edu.berkeley.sbp.tar.gz + +upload: + make clean + make javadoc + darcs dist + echo '' > index.html + rsync -are ssh --progress --verbose --delete ./ argus.cs.berkeley.edu:public_html/sbp/ diff --git a/README b/README new file mode 100644 index 0000000..fd7dd4c --- /dev/null +++ b/README @@ -0,0 +1,78 @@ +============================================================================== +Scannerless Boolean Parser + +Adam Megacz +12-Dec-2005 + +______________________________________________________________________________ +Requirements + + Java 1.5.0 + + The core grammar structures will always require generics (and thus + Java 1.5 to compile and probably at least that version in order to + run, although there are some hacks out there that might make it + possible to execute the compiled bytecode on Java 1.2+). + + Being able to run a "precompiled" parser for a fixed grammar on any + jdk1.1+ JVM is a very high priority for the near future. + + +______________________________________________________________________________ +Makefile targets + + make edu.berkeley.sbp.jar -- compile the code + make test -- run regression tests + make javadoc -- generate javadoc in doc/api/ + make boot -- bootstrap the metagrammar by compiling tests/meta.g + into src/edu/berkeley/sbp/misc/MetaGrammar.java + +______________________________________________________________________________ +Browsing the code + + Rule #1: the JavaDoc is your friend + Rule #2: the JavaDoc IS YOUR FRIEND + + I've put substantially more effort into the public methods and their + corresponding javadoc comments than anything else. The generated + javadoc is by far your best bet at getting up to speed quickly. + Specifically, read the "long form" package comment for + edu.berkeley.sbp, which gets placed at the bottom of this: + + doc/api/edu/berkeley/sbp/package-summary.html + + README -- this file + TODO -- stuff to do in the future + src/ + edu/ + berkeley/ + sbp/ -- core API: grammar, trees, and forests + misc -- regression testing and sample code + util -- some nifty data structures not specific to parsing + tib -- Text with Indentation and Braces (experimental/undocumented) + doc/ + api/ -- generated javadocs go here + tests/ + meta.g -- the tentative metagrammar, written in itself + testcase.g -- the grammar for testcases (extends meta.g) + regression.tc -- some test cases (formatted according to testcase.g) + + +______________________________________________________________________________ +Using the code + + The public methods in edu.berkeley.sbp.* are considered very stable; + they are highly unlikely to change in future releases. Everything + else should be considered at-your-own-risk, especially non-public + (ie package/private/protected methods). + + Currently I would not recommend extending any of the subclasses of + Element. + + What I call the "tentative metagrammar" (meta.g) is definately going + to change at least somewhat in the near future, although I doubt it + would be anything drastic enough to require more than a few minutes + to update a grammar description. + + The TIB stuff is super experimental; I'm not even sure if I'll keep + it around. Use at your own risk. diff --git a/TODO b/TODO new file mode 100644 index 0000000..4931457 --- /dev/null +++ b/TODO @@ -0,0 +1,110 @@ + +______________________________________________________________________________ +pre-1.0 + + - Javadoc comments + + - switch maximal to not-followed-by (~/~) + + - should Union.add() be there? + - should Atom.top() be there? + + - fix the location stuff, it's broken + - decent/better error messages + + - finalize metagrammar + - Java grammar + - TeX (math?) + - URL (RFC) + - RFC2822 (email message/headers) + + - WIKI!!! TEX!!! + +______________________________________________________________________________ +Undecided + + - public API for hates/needs + + - clean up the whole Walk situation + - cleaner solution to "maximal"? + - "lift" cases: + - right now I can only lift the last child in a forest... begs + the question of what the right representation for Forests is + if we need to be able to do lift operations on it. + + +______________________________________________________________________________ +post-1.0 + + - Implement a k-token peek buffer (for each state, see if it "dead + ends" during the next k Phases based solely on state -- ignoring + result SPPF) + + - Arrange for the SPPF corresponding to dropped subtrees to never be + generated (or merged, etc) + + - Is there any way we can avoid creating a GSS.Node instance for + nodes which are transient in the sense that they have only one + eligible reduction? + + - Implement "GLR syntactic predicates" -- the ability to do + arbitrary lookahead (ie "followed-by" and "not-followed-by" for + arbitrary patterns). This enables generalized longest-match and + lets us drop the Maximal hack. + + - Re-read Rekers, particularly the stuff on optimal sharing + + - Isolate the Element objects from Parse.Table/GSS so we can move + towards compilation. + + - consider allowing a Forest.Body to represent some other Tree whose + Body's should be [recursively] considered part of this Forest. + + - perhaps not: right now we have a nice situation where + Forest.Ref instances become immutable once iterator()ed. This + also gives us a strong place to to culling with the certainty + that we won't throw out a Body which would later be salvaged + by some yet-to-be-added dependency. + + - Figure out if there is a way to: + + - allow unwrapping of children other than the very last one. + + - fold repetitions into an array form in Forest, before + conversion to Tree. The major problem here is that multiple + tree-arrays are possible, all of different lengths. Worse, + even if they're all the same length, not all elements belong + in the same "possibility vector" as all others. You + essentially need a GSS to represent the array, which perhaps + is what the unfolded form was in the first place. + + - Wikipedia grammar (needs to be both lexerless and boolean) + + - Boolean Parsing + => Ordered Choice (";" operator) + + - bring back in parse-table phase resolution of precedence (just + like associativity). This can be inferred from the use of ">" + when the rules are in one of these special forms: + + E ::= E _ + > _ E + + E ::= _ E + > E _ E + + E ::= E _ E + > E _ E + + where "_" is anything and "E" is the defining nonterminal. + Essentially what we're looking for is the situation where the + leftmost portion of one rule produces another rule, and the + rightmost portion of the latter produces the former. + + I'm not 100% certain that this is as "strong" as the prefer/avoid + form (try to prove this, you probably can), but it's "what people + intend" most of the time. + + - implement Johnstone's algorithm for "reduced, resolved LR + tables" to eliminate superfluous reductions on + epsilon-transitions. diff --git a/doc/jargon.txt b/doc/jargon.txt new file mode 100644 index 0000000..c622090 --- /dev/null +++ b/doc/jargon.txt @@ -0,0 +1,112 @@ +______________________________________________________________________________ +Definitions + + Token -- an indivisible datum. Most things in SBP are parameterized + over a token type. + + Tree -- a tree of Tokens; each node consists of a Token (called the + node's "head") and zero or more children (which are in + turn Trees). To use a Haskell-like notation, + + data Tree a = Tree a [Tree] + + Note that (1) this is not the algebraic type most + commonly used for trees and (2) this model of trees is + not simply specific to the data structures used to + implement SBP -- the parser assumes that everything it + deals with is a Token, Tree, or Forest (see below). + + Forest -- a set of trees. There is an implicit assumption here that + a Forest can be represented efficiently when its + constituent trees share supertrees and subtrees. + + SBP does not yet commit to a specific model of Forests, + and the API exposes little more than the ability to expand + a Forest into a set of Trees. This may change. + + One key issue to resolve is how to efficiently represent + trees with a huge number of children where only a subset + of these children are shared (this effectively requires a + Tomita-style SPPF just for the child-list). Currently + this issue is sidestepped by the fact that the "raw" parse + forest will never have a tree of arity greater than the + longest production rule (and therefore not unreasonably + long); the "unfolding" transformation used to create + arrays out of EBNF-repetition productions takes place + during the Forest-to-TreeSet expansion. Clearly this is + not an ideal long-term solution. + + Element -- a pattern which: + + 1. matches a sequence of zero or more Trees + 2. uses the matched Trees to create a sequence of output Forests + + The restriction that the result of an Element can only be + zero or one Trees (rather than zero or more) is one which + we hope to lift soon. + + Atom -- an Element which matches exactly one Token. An Atom is + effectively a (possibly infinite) set of Tokens; matching + is a membership-test. + + Sequence -- an Element which matches the juxtaposition of zero or + more sub-Elements, and which creates its output Tree by + composing the output Trees of those sub-Elements. + + Position -- within a specific Sequence, a Position is the + imaginary space before or after one of the elements + (ie at the beginning of the sequence, at the end, or + between two elements). Positions correspond exactly + to the automata-theoretic notion of an LR "item", but + "item" is such a horribly chosen and vague name that + I just couldn't bring myself to perpetuate it. Note + that Positions and Locations have no relationship to + each other. + + Union -- an Element which matches exactly one of a set of one or + more sub-Elements; its output forest is union + + Location -- a specific location in the input tree. This notion + still needs to be formalized; for example, not all + nodes in the output Forest have a sensible notion of + Location. + + +______________________________________________________________________________ +Tree Notation + +The following notation is used for Tree (Trees of Strings); it +can be generalized to Tree where X maps onto Strings (ie +Tree, etc). + + Tree ::= Head // equivalent to Head:{} + | "{" Body "}" // equivalent to "":{} + | Head ":" "{" Body "}" + | Head ":" (Tree) // ":" is right-associative + + Head ::= "\"\"" // the empty string + | "\"" [~\"]+ "\"" // Strings containing spaces, braces, quotes, or colons + | [~\":{}\r\n\ ]+ // non-empty strings of "normal" characters + + Body ::= Tree */ (" "+) // zero or more Trees separated by whitespace + +Example: + + a:{b {e f:g:h} g} + + "a" + / | \ + "b" "" "g" + | + "f" + | + "g" + | + "h" + +______________________________________________________________________________ +Forest Notation + +This has not yet been finalized + + diff --git a/doc/osq.lunch.talk.pdf b/doc/osq.lunch.talk.pdf new file mode 100644 index 0000000000000000000000000000000000000000..31ca8d24f230f9e67b203fb8f53bba48f8e7c1d0 GIT binary patch literal 524224 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 VvY`kBP%LeFi-%VPC#bpkBEZ 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

)Q;JK9^4MSZkNCLp!n&=1`wI#D? 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 z zmIEjuVCLowPPRBj!YAClxY*dp8;T;hyySJe*(-7EA$Wbgy3gaz-r(PhXlO_i%cj$8U1PJ7X$UdU&{RP^T`({=7h>ev1GEFB$ZCWOoRpy#um+Oad;1 zlVff3&-{X-iWU*o@PsI&RlpmU7M>+-a*W&x{c`Sb*OIrGVr^Afk&dh@JPFz&Q={X? zF#&c5CuH_m*(vTJO7zVDTp$-=C-2A8?G*1PN6l6l?+2l!F8NN848Pvix@UD`?>6GS zU-NyexSSrHDGnO?(XOA7#qU{x`5TY(Bub?l`g$Gm(u_Kw@k7;7z??jGfu+&;-Zx+2 zj{^j3=ekGx=N(qa$alYQB^&K-aHs2`kUBuE{;y(~XAnRBZLevJJxEQ4+da&X)tOn4 z`fOUql4uYcRtgP?qhWPybJhZ$53u5PAK)K9JfEV7O0|umr?{{+QEa2rJz}J^c%S0S7I{b?5+A|g9>;mHAcKtCv*FVfBLjklFOGHL| zdAN17<1;hj`LI;2R7~-?hnJF5+|0gO%CAoclQTky^>>q-ZHS-+o`ZAPkT4H%kYm4n zcueX~|4v2~_JYBfTi4XlO3i|#2CRg|zFG1MII0qgS?Cv!y*@2Yoyl63^~ghhp5UYj z7UUMg_?NfG!iot}%Y?=9ta-fcVWGs^*(Y;NZ>LE78utaBbjG(Ycz)Vp99%H2yqw$+ z>j~Ry8ir&69lQxx&&fU7Z@8+J)N&=cK2{lPUSNF&aRB@9(b7{54iBgpM>``g2M-MM zJ9eZ|wu0nfg8DtT%}%2m_3`4I_c1YRIa+=jYW)L4; znwZ6@!h%vL?Y{AM;!jq;Vjg`xOPKOa5Db!Mt^*3D5Wj?riBHi|B{9`IJtE1hk;pU9 zi@SGIkHVEEABb9K6wyaX?C^lE;N@pzU=y62o0pVP(fXD~z+T@58pKngo*(wy6jPOA zSI;M}vb8=#2=x~j9)$NhO=NTk?kd#5QJ?a)exjDflXBzS9dS$KwEupfN5v@rU2idV z3y70#JSVjhwx@Z<3`5t;!P^yng{hWTWaeXLX>z*J{h*~O6PD}gydASh#Cjta6AO-ohbtS`<527F)%0)@TDcKDvHk7j%nYuD=vH|n zpD`**aGJ<`G8}ceZEYr2e$0&g6@QX?(TTXL&*sUf7TL;aMxviQ%m_045L;c=)Q}^U zlnKnex2;VGcwZ8P%uKANwJWC62HmcqRD&#-M>yvWAU!#lBw3Q4BI16Tb7DE~DZ`L? zd~75r_pi@;KiWms6P9P{<^U|Eu~uq-sH$>+8$ch(f%omo*TIdEMc{Sxq5OdxBRvUM zfxgKP)(KS9%i1yhe0sm9X1ZB;xq0{4734lgP|5{5g_31`pvp$h>j=Olij%5(jq@sk zi#L3!hUuuP%!EHD=_{zj3RSUXxl5ww7VfrYuLy)!5`)@#$-TIA)bQc^1naAQ!sG5}oO zc21Iux$!H*LXSPDwVpih=e;1O`!R#gFJQs{E>3W&aDf`qD_UOKSoInFsieD^N8f<@ zr<2HRWJtn6wSIzmIuaBeJ3gX?C_Q`2((^bVjqy~%b#0OPN0ZY7Jjk3TpH&+GqM#M_ z!ziJ2xKl*OIV0OhSlBF!cX@TgHy01*$Xu^F#~U9QJMn9!Xvg^sJIoEFz*4laPe&K6lyW7e#Q+rJ9n3552T<^OrXK%IgA6 zjRJ0kpkz6S!5e)~d{2g81+HKrg49*Lq=5jf^u1c~r;l}EfFwRaDU!GF{Q)!`Effi ziAbQ;FqiAi>-uczT2$NzJi+#{L_23TV&HH!#4u9v^{O=iwcBEQALA-xRq-{O8`9^r6%J_7Gh4f8QUdpXFc-J)X*m| zs)Hhl_Ru zT=kB-PzaUl>N&00zV)K~u(Jswho7fPxR+&D>lu(#Ws{YJcbrQ)EE@PF>oVJ3u+-nh z0C$Srcg?^+MW&+oXN8laBSh+HD~k1|mJ0eb^dYcUfI1Vq^N%L*$|Phx6i@@EOrug= z-C2U5&Q_6~o8xeGu?Cxtm>|DkKo;JM-|h<5JNf&uVKGs_1@_J{KJ^JhXus4xyvbHs zPU$uy28h#U3{C0OnJcl#Q_@hJl@&!bDqqSVIxz!PwnJi4<=MJ+Lw>hJPI|SrRvHAS zlJq{W3fc=K1%Y0V2T_akPZx?>zsU#F7+0DUt951S^jq{X9$+KU_5g5I*4zScz(X{@ zd^$|cB^B=y8s)H1m!grWcenpoD>$Jnkq3`-2N2dTRoy~Y9v8GZY{<ya+ zUkK|uhlj4wvnNv@I2ff~+53Y{v^(hZU;_q@0FRQ4_RH(T)Mhmby;RggqqunOKHS4k zhuj5-wzANKI2Bp=L~2e^u0adOlAx%__@o4mYkX~xZZZ!uYkNiC-~h<;YKky55U#)td6e~x=sdTEL=^qGs5jkhUhx*~2 zQ+-cc6(TTITUgF62x8I|)TuX9Kje&+@e`d@E7==F!vH9~o?4a@sw6xk?#EQxd#c?H z7K%UWwm!!PCPxs^BaypdF&rZ^{bu~zVVj)`G?4pWE~9#1uvJx-3ghB%w=b=y zSe6vZZR4Az%9}fsiBG|*cM|(nu40hsTck`ZAgdNnfpTmT@U?ThfPub#v4vCCWjSIt zVOiPbC2mO!M|#93T9IY7Pp`*csw&roD7E59D2FwJu(198t(|rBM%*v_s?U9aSD*3s zSAWzDTo(ui`httN-|!c9J4!r4YCgVnh<)(=E}z|SM5JDI@JGF5=Y^$y&|7gJo?3I* zn?f$>wO=O7aP)ZxRV~19a!m}`nnH$E-Tqx{VCYvq(tE?vx>`@`BdlmFPf6_}T>fol zpmhg8oEfY%x4g`YJo(|Mp}!x@@!G}d^xzUy*Cn9bS_s&yIyPT<88Y$dw`h$RIG)Kw zZ!d(qXFpB70Q13#shkfdqwUBmvaXU5NkQ`z=ZC zyLBhPK8jQF`~9|#GtvRVs~Gg<8*BU_Om4tZ6)tNPbt|-BQ*TRv!hVg^VU`b4!utmH z=C5TV=@eOKz}s9$L)@d}*tWix|L6Wm#!afKGa$X|nisIJNEOrN$?Y^1e-X5~hi&&0 znT6ux*B=|7k&7Vex}Z*N=R@bMN@@xa4Sx=!CgzsP4f z3fD52`ynmgzSbW7z*$8MCgZCSZ+X^pb6^KfCb@3#IhGMQ&x2rw{LCmfY@eE|xA_+W zJAGcQ8v72%m+h}?-~O2O&Mg3C1#}s#*XSNhdp2Z&+*}XvppUoIb=8FA!wN5PdjoZu z2r~vv$O=IP4d-440Ex4hELQO+i`$xDjrJXehAnE=xS{zb62;cTp~+B8B6bfB146 zl{!CYPF(^%nhm-%L)vPq!a6Rsk2m167eB^#eMs&d*=TdM*sr)oY>J!Fg)io9St<1M|v^vpsKPs#mZUKIhNXFrO@sA^IAo*`4EK9 zHMdUljo$$Fen16!lbV|TObWOz2jF-z66lmz=-PgUJ*2Bf2*pHEo4uvFa3AK4;1W6m)pAvr612Y4+XR|3!M)y;*Pcqz|{qe zL)DA+)6}cZ&Mz)RHT}=PPiyRnSI-;QWN&50JggMu1LmRjvx~qUM0$%H9w0d1` zm(**sNw+!NGi4Lnelcv?xs3(TuYU#+p=-r1?Nj%IHLFGcLXz!*2$>n zYosWYJ#;}pV!%FBuP49^Eh?ag9b3cK-KDswp)!|&ll>RLokKVd-Sr1QFOx+C&SpQk zQUMH*e_izufk7|Y97cF~hN_1hdYj(E;mZJ>YveHPDXGcvzKB#VWa~bD2}ZQluPd!A zvo&aG2O~kA4J7tG2PWnOShu%*p6&bff=cTIJ={GNvaUUmr+a`mh!?Z_vmHrDvlufG z?62%25sVK+Xc)xpw+9fT%z~m@a*a!saX2t6Via;a&?Gs^qs^I92V-xE{n>xgf4}mx zSi|J@LXq%LVdEvDnWK>+((t;9CWsi8nc;k+syC6D^$67pC67k1FTUQM^Kao-B48Ai z;lTe!!LQEV`~pE@8QP35QYkf6#l_|ly@8R(Ei<=%e!t&BnNFjk(v#D=q=xwiq_&KJ zlQ0H{zR0S(Papt!vB4SX_xdh0sr{^X1iq8&K{sEzrP%prxdK*c zK`0MCai!MtlV72xkADWVUPplGoe?|Y9v&0{eN~-b;al<){bD}i6zM?RtOWVVEN%qA zs+?{hCutjWNRHQ@ik{UhMORGCCUryoKMHRE8w<0@>_uEm7vcFbNysPhYv&flSDDBM zm!^eKAvZRSmCZjXIXjrcQCL@QmW7ni7Wzh)VG3?>X1**>t`J4yRW{uDHSM_PCNhLP zTv_o5d+T~}1;OriZ?-iI+>{)1QBe6~dERf;`*26t_3^CWvsKKb4mQ9aEvBz-J!`xYyKmw7WyMEz2DdBSb_L4Y;vRf@H8U>4Jj1 z5(`al!TU7$S3-|pEq}9!cue+R^~r$0i+H2HDUhzK`aOi_*4k~C01I0@Ko%QeUPdIL zXBO8gJ@R4_s^>64amVqq2UxRtHp+ZJi#U3hux|X^hQ7tmgnWrC?Ed^k@_uq5cBNhrCCsueXC=e(gu6KAZ?&*YQG%K*6|Jfz{fKc9yEm?8{NL@%c#Bf!lx z45SJ|VwDA=hU_$-&$W;&F>|0=fbz`P)2jE1BdE@CYa! zXao*iTf=CSg!PKyQ(cU{t#R_q0q40Csp)9PrHUZ%kW9kVW(u3L>0_?R5E$A*g(N^Z zzFSG=5^{DmYsyE}_tBuj^sg&_MY~HRIk5Ma{yMtj|0QlGMwJa2e0{AuFyVNFk+`Ca ziW=Ftko>1#v2`RSCvo^x%hNNcj(v|d>Tg47GnJliH6v!rkYs3laMJkLZ5~l%BvxW1 z+1hsBWNRUcU0@eA&_jQwhXyO-1P_+ADq)_Af>0E zFDGC~r189Vm}UG&UOx-GyS^J8ZsqMALhHN(PaP`$T7V%;M$I<>Yv3t*Ip z?FBGu*#)9nndLK$yy1qyB7n+&S46Ka&UsMUAw|pY()T3KyGMYJ=zkkOYZs7fX)f#( z!wwDWsroWbmRqTSdvb7afZnu4GA5+e7cyM{*`1yN#XThaEIY?RN5(|UPDIW{>Kl`a zQ@1riDVL_f;!?ZB-@C@#hFqUG~r2>1k*n52?jNzP2Uq}nSTLTO-?<}A&vsiv4R6wy~ z-Iio%=Ev-cVX|iiwx@0XF*Y}aK;v77uUGr4kcVT8|Wm<3YNDAiAtuU`Wx$1DHd2^ zAH;oLXl!(Dng11fGZ7JyOs+#)Nkfl@hIT+=LRAJ6BW4k`&8Vte!MyX}1xRy*n4<(mIz&s0@#q ztF{DM80#4socgxoYx98Mq9P+h4a+gs)Yx6az`%rtimi!D2J-Ii>iaQLfqf4E2M75x z);BS~JhK5LKi1~@r$IW#B-~TxkArMrsYKv7zlN6ewwLFb=$cxZN45jayFgk4h!t*h zdVhfW@%IoB<>+l!6E{N=^z{k|3ity0=w$*O?VRl$tAQ@R zS|$-`aBeLt{P?81ohFtleY+g{p0WH&j?pn!sfh`oI1p$%J;MVU?*0n>^jgF)-nMsk ze*Z>%5H&LbO(qx4rmz=?C>7^t7waM^DVMQpR;dy^FU@UFRo^o40t%oASpd)q8bnMq zKv%Jc`W5I$eN9bcZ7tAFB5oiUtsoO@SGpdE-BBo+ZNC$nlH)9g^x(_K$k|N4@={-u_W<|ERZr)Z0Jm?H~2_k9zw@z5S!! z{!wrLsJDOA+dt~g^x(_K$k|N4@={-u{23-u{EK{XeKThQEN@-+TXO@-+k7{~PL!>3_K1*nj+g z?Rq=ZK{;L-ifTI?&LxHwJ?apLr>&pn7bpB0a)&HXHJdh@FP20u^i`-@SI33+75CBe zX)$xtX$nHX!AS@nr;1e?YSZ(U`jMM-{OweS_h9HPnc&vo;~;%H*@x#yCM(%zPNN#( z6>zYb{CS4OA;G&o$h*40w<|Ci zLd1wv4vdpXu*1f}Nt@QpW@I+{tVS6e6h7ky;f1cM5;n=T0I*Tik~0oT)DtqJeSt6r z!rx4Z8hzTSX=&TRg|5&cnI?;bi|QlujRzq_*H}>S+P%!+#XxZzP>fxXk&(eY=!bx} z9avF;;B6Yz)cw0BAY(e`g)&mp3g{KT7n9ztGhx^D16cvXD1ShVjFg_Fqob>=w6?y` z*gZHn35%PQj*LWf1-Ar6I)?;9%orBCjaxaqr!_#iIsOA>f)Kid3MQzd(dz_Omi8)y zlyem;y7$+obv-!U9i|yRoQxYJ zY;3HlqtM=h4I-A&eR&Fde|rN50|NsG4_Mj)p?`mW>+j@oMd1<>AleFD-2?wscBW!j#Rqs^$4S@@KQ;Uzxum>^aJfWF+LKW+rBrBc76#2JTuthP-2tM-sY*WPR9OK|3*W{L5tINMvf_ z@R_vkq2-peuAzeaH-ce}kE|$WNI|F=W!T;LnWhn_?HCnRnMLKoJW$5Q!pz#FtG+xf z=is1VVBn>-KA(Cr8up_bQ~cvu7XD=IQR8cG&lzgo*P2o$~TDNdTY`szxR*5%RJ*~!Jl#qn{AUk|VA%>44Q z-MhMnhJ^&mQPqMk-qCZ5+Rx0d1Sn|u$f$%5=x)s|3_U3`QHdVm&lr(vy4FU0BWI^F z!!`0Lxc%(UrMa^=qp2$|z`+ETX=kU$y9c0v4IXg=w-^3aaEKKe8u~9m@6p=Ex4AI8 zrV2C*11%T%qf?+Qn&c5=wmv%2wm8%dphNFta&`*Y%j!-(a|%Ai>n%Wlgl>oejGa?PNmICgqT(E4 z4QV50#;#ggYHECZBQq^6ElWpLRn;&c;Mpy`m75a);D-FTp7~b&h~n;H0fN{dTP?Zn_{U^4oO40UsI1K<`0 z1~?_g#>QM!lrPSc6B63kIvh>xzP$l=tu6r$BnOF&*vWo1bC zKucv6?;7Ljsf7jbhsupEktY{)j00xOBDNA^58FgP5KL0n8^J2ff^si{eo1OX#~i(?#2V*T&!)y?&u7|lrd zAonx7Lo%6M%S)~=cgJ-VJ>d}u>E3To-!?#|H@jS1++dFC06%${rWXabWZM-JvNAHM z;7LIg#*B$>AMy?egJpf}T=X&mi*Ha%E-!+>JaV4lSjnbSEtJ<=`RG z8qp1k$hhAE0$yAA_2j-PnbpR-@2!*h?qmYzW#m-lcjl5`=iuHe+Vs3VNJzlK8Y6U3RY}UH?UV%>K0B+D?)4PMA+}jABlrZtu#I_J09?@Icq9>%D z90@AN*j)fQ5p+O>J$oxm$2+Os%r%#Tl>zk#*N;h}O%1Q=$q+Z)tImB@Ue71+Tc5UH zlU`5V*Ii`Jh#4_eys8~Teo;};TNM!vTrQrD$^BCrM+d;9=E>QLPq@RIKBq@YZByu^ z@XSuX967t%Irzwyio7C%A2Jh@0K*XYh|pwka?Q;9E+zsO1kRCL6s{;ldsD;_tf#j# zREW#VW7FMcfV`2NT#jF7CWaQSYl{qC?ilFAn%Bwi?PoaS^l1hcNq;WxqU=D%O-xMe zfbnoc%U^FhWF!ZE?3!Ee&m($ozcWNA?17(v-o4Nl9u_9s0J|jAz5Fp0{ow;i>pHkY zgk@y}I$j7%p4p}3>_M9HbE0}S1}61XPcjKLO}hj}q$t3FhoL3@^W)}b3EINm`=(#s zNTu@o`em1mUlnijQ1ehQ*5iDbzR^O0p_!v;Hm3cmhDP>WwGn$dFn=d?&Fb`MG%zxu z!1w?y5jcwHeD@Vl?uGG#cSCnLeK?EjSpgiB8d3iwqcH28Uda}|-A(I72 z@O$%Hd;-~;z;giMsCtG5qZr8I^}4aOaxyXlT@!p?U(`4$6<1<6vyWX>*}H&9LSYGd zrLLKuHkr(AV|S4t)<;nQ+=f$|r>(TTMjtM_G4!oOrvO;!Z$A3dpvOV?+V{p!zTyf) zv)JSZ(`O#c!NsSki#!$U^Pg3lQ%)w|f}nb83J z##-=x4oiRk=zzNMM*q+}p|wYRd-t$^DNADD*v)KV=2(JDQ%T~#*n2Ae+PpRZy3O+A zP2G~Y-jB$Ad~oJGRtBVnlccIRxA9s1vHPn3Zf!^F2;Nv6Kz}^zMm~Iof3rHj&Gidb$O@4CsUVnI<=M|&-V%ZMNO!}%dl5kUxF!&(GxE#xHnus z>?v;b2npajC*E(K2X`Ah#^3-beeYU8<=DWeWFTk%rUk}BlHlhnuc-~<+mNm@t~3tX@VC@_Rn8?wKOV6l}WV`5eVZnzEoTP$$XQjR*T#A-=$%pXq4u1j4aKqY^d|u zTcBBcH{E5YxZ^q4;JRC0JRp6%jS#VYKC6iNm|SRuRYHt9Hw-@?Rcl3kjuqZbh4;9G zTS{;CcmW*sj#LqDJo|IAvj zu}+~t4*8l47-&UhPq(7;)to6MBYau}nMi6xK4Fou00S6}d3QHpf#5=bc57{okksXU zeK!-(1}AymYOkam#w4&q;#gx4@sKj3{E8!Ge7d)dhxv_SispNn#k#+7%*XB*l=l(f zP<(Gk(7L*cax`UB_?No}z8D?0&ldc{cc~oVILN?3@&f9y%Es)DM*)I@Y3PxP&bdt4Fu)>G=n5R);iqLUEM#;bl0SFT&)9iAaGT(sOM!Nr&VjFC5rq z;SOk~Ogcmlrs+eU;+9T603Q$NpZ#NXiU|md?!llPFSb5M6C_#hH8Xn-aeW<&*i=et zH%}oTHV4;J$JZ!|Mte3APpkAyo8ALp z&OXNv{jxG1S}8wBD9PuL@S6}iSpCXZTGPww9JA$owR9Q_S>)r9eu5v!#*A3~m{t*Yj6 z^LDT7;bU^7wd4s*ivBRPf)v`=oKaPZ&j5?^=-CA`sGOF5E0`<(ktCsiNL`5FuxT(E*fWptfAOJW2(+ zC(J)y5U;MyL0LK#)DY_k)!R7t?Y4vk4ijF6e`hl2lL?=Yh^Y9kq*l&V7X6HqQ%L@b zw<=5PzY*~cx@5}qGtI4?K>}YQ=vM?K{R0JDx-zY$kerd(+$QTUiW=@5*{(l7j<}aD zzppHnOCoM&=~^F~@hKazQTo>)`0*4p+DbzodI7&K%ig11P2foK=T1i=k;OlYaIs=3X~4_ zsjrtMzN{mbG$f|>dl#X%VOTh43SfWR8hJSzr>A(#Ie_n+H^M3%Eu8cVU0tES|Ipve z#5}SrRW!1ET<%04LJxW{I%w`k%^R~1t7^Q5m!T`?T9YkOmq>B>nI`ct*q0DAvYpvj zrrNGAsAs3)(8#+gF~QutvZZn}hEw?%HL=#yc*dN+pxRKM`ttV>x3HYP82^2*WAlBg zE4PttamS;089j)uoIOB=*=44-;USQYlPQ0}*qoe2E09YqZ=kHKC9IB3%h&-Y!OOsE zoY}QJ9p2l(HOy(*=8{Riqog1&=FFw5h9?cXlOH{4$ez}^U8nk4)gYYs1}RD;U@@*I zNx24Vov6WC;a1;3qqX%XdX-4{Q1ENGX1>Y^?}+zJN6 zk^%=%zT|NNZ}jWDxP`Wot9R!~b&75qI}ZD8*Dm)%ls58oqCkyj$xg2stS8Ltp?-tz zq~gb}vW1ZmN%(y#$HEYZdc*{@M+9VBjeLoA&0`5b*vq*Dx`qJ@*UVd|sE z(>&{aMCRP-76+T-#VS2xvpx0`rPFPGv@`K$#76u0py|x<7AJw@w3t+3wOn_8Ro z6HGwlb47^tvsR4tGfYb4Q(untlS4`56Zx6oLFJGr>rv&f)h!qluOltcdV~F^$R%=K znhV72OdIddV5@B z1UZoCkGTFYhN+e>cEecn+vC?+Y^&?KUmx=c>`x zwJmjR(-OF%GHyu)g(io6N6b!A6%dGJQJbmhpwBzVIaSDPX8x>$4`>UxnEYUsU@EH-bbi!siLo|N z002V*2Jyb)e#4`P(-|38LQhaym_u=Ox$K_MBhJcfLAc`_(}m_bT3lGThBBQ5diJqR z{opqCIYBzP0aE>atkCXlFu-g6+VcOqa`FXHcO0?tZ|TG{w<}_rbAQ2vrO1`Dxfw3T zMod+)oQaZ|n_5N*{;GBGue}358Yv=D>g&rHZf>Wmi5b=tHT9$O_$aJyQqlztalb5P zH;O@?AmPRFiK&fQ;Hc3+X?ywI9I2V5VlspqdTSe-Y<5b^eOJzO+upAU%8h=64(|U` z&l*KLUgmNYbf6}=gnk)5Vp}RIG%+@|nezKjL_rJ!;z19Gi-)tZu{&)0ZXOB9g-L(K z1Ok`6bF0Arsbmes9a|bn`;j~NXyi2Q38&OmVDC&gw7G?}>)llsW0t^gskMyu#@Z9x zn45J;A9;c665wOu;bbL)@EV5^aC8R6?E)*HeOq`(BwMHFv{FAcwdIS)C%|eYu~E>V zEIh)w)?AGtQmqDyTYX*%$IV+t4p40(R|hvn5`JG00IQaGV}6HwWntp{+8UcnYqQP> zXY1S@9bWI?0RgPR41K_w-$YN3-$&=hMyBXaFH~^XAvHQxh_pm~VX)s-0KRP*su=-mWRWR@Z7GX!jYIl15J(1bTD2aH;sknajj-2h7 znplN$0gT^C3^&Fiv;lS1z#xrW<6CsW>uOQaOwqlR*Q2^6`mD(w(0nxL8mL0~>R?(hrRb=*CCYmp$c?tV0v-6HorWFc*^2 zj}P~7@qxbrxOn)IgVH8UKKz!>mJ80DL+Ij&nB8972sB{f%+KZ5|#IIg{D@Hp5s0 ztf2o``U8^nU(4s@yEa*6RYGGa>KEAtBsek@JPt)K-FGYe&=lS;%72C%|*_r!t_ zKcH#{*5F~*b_W`gTbz3F8b^2<;QcZ2kNX2^ZDk@8tAiT0<(v&ICeRHGhw)-3XQ9)k zN+2gCCm&tfA_S$_+0{3o6A=;eXZ?u`q1&tup&w#tVS6BBd4(?V# zR~EsHyN4eJY+Fk+8^3`tO>?%evDrbzdq&Em?`hVrd4wq(etY7k+Qx=D7eZ$hm&b5? zfo-yw;Xi-=!0krl_*~1AwvwW{YdX5PkZD7EaB5gk6aN|(9%D=ya>#$GeG74=4s z#fdopbAW@uJA(kemoqSL6;{^A3Ofe}$g=RdIFfCD48}$VjOan(uUPj^;t}OqOb^bo#YC>(P}A_uEoyOougJ~0I{^PF8IGy2@QlE@H`#P5 zYu8Q20{OGNg7}hxok=AxAR_>p`w8J1vHH>1&VOz?dJ@OBxql42%&OvjxNX?&F3ueu z|1MC*;TORNnRoV-?Y;C(_fUi@Yinx8k)O<4n{bq_Ozmgx0e50I=QO)>Hww=u)EOqQ zN%<}|;gRn5IDPx{Iu+`JeBNUN%KQ1k_zLojr6QwT~{h%xkYjLQHMS~2EV(8T>lPHwM3IY8`;S8&mcI|`l8mG z^S{`8>!3Qbb?X;*cXxMpmmtC2-6eQ%g1fsr!QCB#y99R)?vmh_q&vO4`{X-&*ZJz+ zTXm}cVNr`USqo~sbNu~#h&o7!$)7qsH#s&WQME*I-Pbot&h)KXIGYIzC6HxEO3oY)x54kyqM%t-RYGi$vW{W`p- zWrE~@KgKe$gU?0iHEb0$$Hq$#dD#(6tSalXsgqi}HaJ!Rh(A>7UKrzE10d1?kQIg9 z%)joZBf+cAjz8}kk3v@YMSGq9t52fq#%0%6`UZ~|d%xRf=;Jmc)IzsadWj|Q(=gF7 zA~3jiuGRirdLN|?+*w9#U>&({CP{}2AY7{6EPal+IWBE{BJjWg192^MmL*tk3obg1 z=~UG6@cdzqW=Wn}&9C)wB=)a|CikzY48$+;Lfv-`zX4b^_J0JwuH;{`U~lI&q}&(I zwW8-P5Soe;J3z&@&$U`Yov=l@Ywo*8)mb9Qat75|4GjH-pnj<2yNFoW{&kcN%g-Cg zX%f&&2n!48I~W@g{H8Jm0_}gvj`dfv`+f|M0s;L$vinDN|BdW^9@g|{*)e^evA%2Z zud@5DvcJggS1m6rzqh>nBfEcO_ut6wyGs5(+cEvr(_dxx+sR>nn(a7$AN%J{E7tEb ztyU6}f$=_wi_*092mECuh{du-y{dw5kUu4JhkL>@TwWm8D?)$5Q-bDgLdc_@R>jBDT0=3iP0*1uZ{)}ILYmqqp;OYx8F{=MveV%(o)$Mh50{yN+J-BPgr%2KfXVJR4Y zk=u#c>%0E@;4VQ?+7ekFrJY%2#h)s-!0{$gG?u}OrmQtN-+UU$Ff|uZa3CegDE01g zj3jkZnf;weD-!xUkPiY$bS<{>`)}kaW_34my}T(LDKk?-h8Cy}1HP`MJdC%0U3tLB zt#+Dql1@QXZ=i>om3p#x!s5ORG{Pzb=~fzZU``ko^0prM;@EY&7K@U;Tugxel!ZIj zT)64sv%7Mkoh7c|En8cy78e zrc`iknPD?-7PLxTy<=?g$04DT0g$gv`}VxjiHmoO%kpI)jY(*BGRQ;tO-cBAL$k9h zJm;L>$Q?6BfOWk;)as9-`FvJOgJo>>ze0H&JrAoNq_I^doiB9Q@GT(CA^ z5u<{vsVa>pLSM)MJB2-mq4KAJs}#hm@1_Ungs;Xj!4geY3fc5-4qI4dxMg$dipY&A zmMWDn*1pTla?^A_nVjZ83O+2#s>-zT2+m#5coP;z>Qa4p;9a z92mrl{28HLcxIL9otQ=Un#N*sxaumVyO$?-b$yKun;XZf)q*Vks2_7^X9RQEe6M|= z)$?+Q#l?N+PWSpfa8~uX{4dhQA6ov70&L8TKVw5iwx5&jUoVco8y~ix*U+EmWVZi% zA$#ul|H39dkJcw8WOL|+4KqJ0WX5Z|Qe6L#j-)8HjP_A}> zi_KRRxVg1rP{M(n_=k5_RkEK!t6ti)o*!DY);jiI@=X+?1#NMjSl zg%tOtTlLZz=aS&N@W@GtE2yHC!}2PYIEk;5tJxVY#69kA8P0-jMHZfZ;{lV;`Jo;1 zQ3Y42yvdgwlh*qen@~Lzy*BQQ)rLz`MywsmSO?|9rqhi`jt$X|{Z{&e)#gO&lUj7F zU#jC%NBXu1|)S0{2I@tNeWlVw@Y z@8N~+oVctCvP1?n_(4cLlf5K1?vUP3kvnm#~w?8Mp;MGl9NumrlXP+)hE8aPzxqsuaD3gk}STR<~ zHg9j8p_8%#Q!$30s=O(#`j}nX^TNvA$^QaARt0GGtIO=C(PL-$BgALq{JAjw&$46x!|46fpz%+G z#{a27{r}!V{nHopzrHW%hf4k~JLX?H_a7?zv!!7F z8M^*uw)>s!e$jJA@aLYhF%9WB6n3QcBh~$2c;fh!`xRc-i>(C+_Z~1Jk45MyJiRtQ z#?Rgto$E=g+6Ac!=E*+10Qw(S;}T*ow|7UB+Uxn38`+{^*Gw+ipq5J=9>Shh`8*s+ z+&MIA2K*#@N8<+7QS4Da_)2zE!GGZD)-@vO_l#4XGGLfp(G6NLnv=s z1N_TP>anv;RYir=4lZ*(M^n6TxmuuBZ;*v}FQV7{ZBGlnrvQ;E#VuVT0SV`pVazZ} z?de?WP9eXQlkhif`PIqd2QJH(sGB}x9=sG>*>%0J7Z(%7y`rsX(l00sBPY3=8fx$A!N_mcO)9jq9J;c9PoNN80M& zK347{_D3>6kcoom_bu{|sf#9GAC}5WDh|`lM&txm$X?9=+dP}m z(~usOpenHn%HB+pH76v2oxup6?&CfwZ0)ZOn;F-&(QZZ1z#ghg}?3&wR>0H45Xv@!ypAqYIKw|Y* z#H1rOjH^%18U;|K{5^yGS563rSHN>sQu`5%Pl4obWnLeEUdgBYq9d6hl!b zRC@k+L6~BY!SHf^PX_loLPRRX##4av!JcbDWnTm`CMS=vK;w~2sOvC{*GCp$a|1jx z^lv7GsThjf=rr>+jln%IVrh^nTOWrO?>^}Zw%|2YuMUR{XFiR^>*FB^t_|co5l_N( z_cN7==rww`_PQ2}Gyop%`9v;mi&EMM7Rp9I;lYGQkn7KUwZQEk zH!MRz8(mJEs>f7pG|UWg*9;OI5IJ90|VxjQE7lBSgOl7{kYFVy_{B zR<4NEAT(@@HNd8PIonUe`Y37sMD+8#b|a=O!c7c)`ErL*ESR0I2riKDE$9PFPYZmw=%yKM&qxO&VZmiirl?ZdPuztn6uR%s;obu3h!c0rb^dQT}dEP zzmAKBJG>`8dH^;{DuPX}yXCz9m7c+RJ>eC^~z|3X@O zkM{JrI-)QSnQBl0T_eFIB!HSayaNyHQb2X79G1{&PT4RDfx3jnjD9i$@{lCDyIlHQ zlpgNC;(o~O|RE8rn#++67~$!|H!-3tk$n%``l-SY^o{WB%v z?hIBL-jtK_rL3Ae}v4s7^3h?YRL*V1DtLYM^?HvtwZ_c_PmdRs8wh@D6u&X7RO6ThL+J^(Z zIW`bCq=Qp2Ed)7b)J8@`$2FNv+A}g+0m|%MGB&;joVvzB(kI?!I63NTRF%e8t*O6qY0bZsp>CI-C1k=a*Ju$2)xz z3eW_wG=R|`NyFtMj7_-Q(s&FhN}G4PYn%|odoxw7Y{Av>G--z)9UxvB>{iR}SG-U7 zDSA(PLNB{#MbG>JvEV7ipLZwQmVQSK#dCHrN1N{`;>9z1TYe%Rhefe9!)*}KJx zGrE9aRA zMNYBqkR{ea9zX7vMtb0;>=o5MJk+Ihwk=`0kdLpBd7*Q&!p{V{a4^Zy>~eHCfXXoq zdM0GWf6LRl+Azt1|LCDC^m~x zKy{<6>0V)(H{|}!@MT+wxz{5A`>q6mdC7K6G!tC9HmFWVq@^>VfuJYDPONfjp3qPH!E0#?h@_ap6}@sAb#nWaBe0>>go17yk~s9r_2lVCUzFqpVcoW_Mg`6I~*&y+P?0{kkdE)@zvh=og)Dw z^KY3Iy@IiWjg!5hu>%1U`|nQ)+q`ppea-i0egyPT^wP#g=K4Z5E(Dt2!vyx%c{N!B3uD9Iek5Vd zNbti0K+(T>{g&xB8~XiKqAreNijLnmr+ohvVh)T1EWdkHvDbI`vAIRz^-ucqU&Z7JZ9~F<+X54>oF_z!qup@cysh-ON5~V7)@skaMLX&inAtC5h(~ld` za8Ht^#BAQIpB1OPt0`P8AEl`hAi;=rFIns>Q7n|HzA1c`cq!&Jw{apW^)qZ=KGeOA z^Kz&qZ(p>Weuz->?*)%L+89LfaIN+zTz_WTGl<+tXY9y(>ZMR$Vd;0#R2tM z)TGf14W%6`7Nf!Y1(cvQV~AC0I{8y#>l!#1@z=^7`$002s?uJ6y;8;@RRk(%8HVRS zI+f2f7Cx4Ua6hH-%_r)|YD^j@()3H00pbqRs9Jy*&9|*`Nu@{RF*u98y270=3P_f| zZYaOV(In>H2FyMjxZ<%8K%s$f(Y+!j>RbbAD)jPjXO9nfBt`)u0-JREWYf@vl@rP4 zY9bv>4*Fh{2Vw8?I3TudoTi?+(9Z**t(^WA24Q3R z=0bg(r6kE`duT2OK*mihG|o5g-ytH7t9dx)^_>D#gn)LTD+WuITE-g{#jj-6VA3e9 zqI&BuN(h{QY=8Fj1AjZby|=u$x6x}5I)YM~b-(ux79gG?sOgYWQweE-xU_q#xE5eq z;W|61d#j@sfO;udh(n`jTy>1kk0-R;lEw!|`HZ=#N7Tk67YDn4))?bV)dE5Fg}68B zsXx!4=H`Tbwn7{1$v@dO&=PJ(%KnCEfBpTWsh{Mf@n|dPJg%)UP4yW^D5l2bkb=;&C+{KO3r=QgrGV$hMgp`hd}8I)u5P6fDyiF9G4w-rp7kb0 zQAv$fm952;YTFq050d}D*7k|Jn=BsMpk|mm+b)h^#s%i7vczi#!Ufn1<1I+K-LRFlUi6_&wwTS zj2Rk-(OFL)3Vx#9z#Wc;m5Q5F$z3~)Ea9~vCaDWo_Pw6u+Q{F~7&Wo`n#o}0I#HTA z=n;n-!~iZ9(TYAN&NsLE*f1NhJdTWZhy&FX&Wend(WnIjk{Kn48-YH^C)k?gJqU-^ z{_%GI9Y#YScuA=?xNkTNI;MOOt6Y1<(Or=)gJ3)zN3zo4}{{Mp~!7IMCC{X?GB$_=&1w z(iD9`DF)3iy(F3bl*D-J`MEKfMJvRq^($9kN0$H^n((&SwQ-?bZuYQ31SHqoO$T@< zE6C*)d38pp6e2ojA6US^3-UL}6%OH-5up2aP(e{vHTo|6Xpjc^@jQtnV2WBC=!b3t zLhuk#G8c$7yO@UnD8LCxW<2TJAQYM-Tm=4J#9h$#9*>wcbLyvv8@RW*8$&6~@v%l9 z3Y@ib2~1$c5(JN@gA{oq6P>;Cz-QpQ_QR?Rz<=HXoi{0G921mIlvr(5ckn zFs&Camd^0p;{>J&txyl!S3;0j zwr(V74e4_jvLM)v_XqUr&1_0Y?NA5u7XH|EqmzpPlID(UBcWX|HcC?t3v zPFoTCyNa*z$JTW}}Hc>02r z@Ta9&rXOn48{xq`0N$8@az6k^dtkdLK^3L zVzj&i0K&K%Qo3BxfsBPC^~SF-ET9j<$SI~w4QVzxSY)F|gO&-lmk^k=c_@^WMmRN0 zhF2Lxk%8D16Sw0al#Wx>9(e9*)@VLwmW*>;Vl1hn(1(jyyz;K*K;}8Rs|!y;=O(~6 z{XqRlr9R%5!{<}>rz5)@l5HXs7i2}~!?Yc>NNY9K_cWEX4h`0_n(f(L-*0yqR&0PReQ(Cg=qm9VUm|n~U7)GHNU1knAd&G!x z9gxNmR>azqXM}-ec5w+V3=z(}9$F07>P_K+K^^IeJCbVv57{%Bpgbk?;T_JCrQRI3 z)>Mv8bJ^+n$)GJpe{~0QH#_~W7I`*+W?UZlfJ65>3=in^Hb@q;-C~O{_SDh%_dbuL zz8E7}To^?aOlKe+s7O%2i*I0`Tpod;B^o>01zo4knQqif)YP9JI38L1gv(pOd7nK# zEDXxNfY#q0DExwv|7cQSVqyBDb%lxZXI1Sx-Ti`*nSY#m{YrX&Vr0(WYHsxZV∨ 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 KKP0NZ_dfwaQYu>j literal 0 HcmV?d00001 diff --git a/doc/preprint.pdf b/doc/preprint.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6600afdfe33833245d9957ce394eedfa07f228ec GIT binary patch literal 151915 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 literal 0 HcmV?d00001 diff --git a/doc/sbp.html b/doc/sbp.html new file mode 100644 index 0000000..fe6ac8f --- /dev/null +++ b/doc/sbp.html @@ -0,0 +1,242 @@ + +The Scannerless Boolean Parser (SBP) + + + +

+ +
+ +SBP: the Scannerless Boolean Parser +
+ +

What is it?

+ +The Scannerless Boolean Parser (SBP) is a scannerless parser for boolean +grammars (a superset of context-free grammars). It is written in +Java and emits Java source code. + +

What is interesting about it?

+ +SBP deliberately sacrifices performance in favor of ease of extensibility. +

+ +Since it is an implementation of the (modified) Lang-Tomita +GLR algorithm, SBP supports all context-free languages. +

+ +It is scannerless +(does not require a lexer). This allows it to easily handle languages +which have non-regular lexical structure or lack a clear lexer-parser +distinction, such as TeX, XML, RFC1738 (URLs), ASN.1, SMTP headers, +and Wiki markup. +

+ +In addition to the juxtaposition and union operators provided in +context-free languages, JTP supports grammars which use the +intersection operator (conjunctive +grammars) and the complement operator (boolean +grammars). + +

What features does it have?

+ +Features fully implemented are in green; +those partially implemented are in orange; +those unimplemented (but planned) are in red. + +
  • An implementation of the Lang-Tomita GLR parsing algorithm +
      +
    • Including Johnstone & Scott's RNGLR algorithm for epsilon-productions + +
    • Visser's extensions + for scannerless parsing +
      • Follow, Avoid, Prefer, Reject constraints +
      • Character ranges +
      • Automatic insertion of whitespace/comments +
      + +
    • Any topological space can be + used as an alphabet (need not be discrete) +
      • Unicode +
      • Trees +
      + +
    • Associativity constraints on n-ary operators + +
    + +
  • Ability to parse a wide variety of grammars in + O(n3) time: + +
      +
    • all context-free grammars + +
    • epsilon productions, included in the parse forest + +
    • circularities, included in the parse forest. + +
    • Regular expression operators ( + *, + ?, + + + ) + +
    • conjunctive grammars + (intersection operator) + +
    • boolean grammars (intersection, intersect-with-complement, and + generalized-complement) +
    + + +
  • Facilitates experimenting with grammars + +
      +
    • Interpreted mode, in which the + parse table is interpreted directly, eliminating the + need for a compiler and making it easier for grammars + to operate on grammars. + +
    • Simple + API + makes it easy to generate, analyze, and modify grammars + programmatically. + +
        +
      • Components of a grammar (nonterminals, + productions, etc) represented as objects +
      • composite elements implement Iterable<T> +
      + +
    • Compiled mode, in which Java + source code is emitted; compiling this code yields a + parser. The resulting parser is much faster. +
    + + +
+ +

What is it deliberately missing?

+ +
  • Semantic actions; the only option is to return a parse forest. +
      +
    • This keeps the grammar specification language-neutral. +
    • A grammar can, however, indicate that certain parts of the parse tree should be dropped. +
    +
+ +

What features would be nice to have?

+ +
    +
  • Drop Farshi's algorithm and use GRMLR. + Done! + +
  • An implementation of the McPeak-Necula + optimization for bounded-depth determinism. + +
  • Lazy parse trees, to decrease the space requirements from + o(n) to o(1) [but still O(n)]. + +
  • Consider implementing + Aycock-Horspool unrolling. Improves performance with + only highly localized increase in algorithmic complexity. + Subsumes many other optimizations. + +
+ +

What are the long term goals?

+ +As we come to a more mature understanding of the pragmatic aspects of +boolean grammars, a long-term goal is to migrate support for these +features to existing high-performance GLR implementations (Elkhound, bison-glr). + +

Where can I read more about it?

+ +
  • The README file is the best place to start +
  • After that, be sure to read jargon.txt +
  • The javadoc + is the best description of the API +
  • There's a tentative metagrammar, + written in itself. +
  • You can also get slides + from my talk at the OSQ Lunch on 02-Nov-2005, though some of + the stuff (specifically what SBP can and cannot do) is + outdated. +
  • A preprint of one of my conference + submissions. +
+ +

Where can I get it?

+ +The color coding above accurately reflects the state of the +implementation (11-Dec-2005). However, in its current state it is a +bit messy, and may require a bit of fiddling to get it to do what you +want. This situation should improve in the next few weeks as I am +done adding features (for now) and am currently focusing on +reliability, cleanliness, and performance. +

+ +SBP is available under the BSD license. +

+ +You can download a snapshot (11-Dec-2005) here. The parser-generator +requires Java 1.5 or later; the Java code it emits should run on any Java 1.1+ JVM. After unpacking +the archive, simply type make to compile SBP and run the +regression tests. + +

+ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..36be89b --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + diff --git a/src/edu/berkeley/sbp/Atom.java b/src/edu/berkeley/sbp/Atom.java new file mode 100644 index 0000000..0722d0b --- /dev/null +++ b/src/edu/berkeley/sbp/Atom.java @@ -0,0 +1,30 @@ +package edu.berkeley.sbp; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; + +/** an element which matches exactly one input token */ +public abstract class Atom extends Element { + + private final Topology rt; + + public Atom(Topology rt) { this.rt = rt; } + + Topology top() { return rt; } + + void reachable(HashSet h) { /* do-nothing */ } + + /** equality is based on the underlying Topology */ + public int hashCode() { return rt.hashCode(); } + + /** equality is based on the underlying Topology */ + public boolean equals(Object o) { return o != null && o instanceof Atom && ((Atom)o).rt.equals(rt); } + + /** declared abstract to force subclasses to override it in a useful manner */ + public abstract String toString(); +} + diff --git a/src/edu/berkeley/sbp/Element.java b/src/edu/berkeley/sbp/Element.java new file mode 100644 index 0000000..b199a23 --- /dev/null +++ b/src/edu/berkeley/sbp/Element.java @@ -0,0 +1,24 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; + +/** the root superclass for all components of the grammar (terminals, nonterminals, literals, etc) */ +public abstract class Element { + + /** add all positions reachable from the start of this Element to @rp */ + abstract void reachable(HashSet rp); + + Forest epsilonForm() { throw new Error("no epsilon form: " + this); } + final boolean possiblyEpsilon(Walk.Cache cache) { + Boolean ret = cache==null ? null : cache.possiblyEpsilon.get(this); + if (ret != null) return ret.booleanValue(); + ret = new Walk.PossiblyEpsilon().walk(this) ? Boolean.TRUE : Boolean.FALSE; + if (cache != null) cache.possiblyEpsilon.put(this, ret); + return ret; + } +} diff --git a/src/edu/berkeley/sbp/Forest.java b/src/edu/berkeley/sbp/Forest.java new file mode 100644 index 0000000..13ac199 --- /dev/null +++ b/src/edu/berkeley/sbp/Forest.java @@ -0,0 +1,217 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; + +/** an efficient representation of a collection of trees (Tomita's shared packed parse forest) */ +public abstract class Forest { + + /** assume that this forest contains exactly one tree and return it; otherwise throw an exception */ + public final Tree expand1() throws Parser.Ambiguous, Parser.Failed { + Iterator> it = expand(true).iterator(); + if (!it.hasNext()) throw new Parser.Failed(); + return it.next(); + } + + /** expand this forest into a set of trees */ + public abstract HashSet> expand(boolean toss); + + abstract boolean valid(); + + static Forest singleton(Token.Location loc, Sequence creator) { return create(loc, null, new Forest[] { }, creator, false, true); } + static Forest singleton(Token.Location loc, Forest body, Sequence creator) { return create(loc, null, new Forest[] { body }, creator, false, true); } + static Forest leaf(Token.Location loc, T tag, Sequence creator) { return create(loc, tag, null, creator, false, false); } + static Forest create(Token.Location loc, T tag, Forest[] tokens, Sequence creator, boolean unwrap, boolean singleton) { + return new MultiForest(loc, tag, tokens, creator, unwrap, singleton); + } + + // Body ////////////////////////////////////////////////////////////////////////////// + + protected static class Body { + + private final Token.Location location; + private final T tag; + private final Forest[] tokens; + private final Sequence creator; + private final boolean unwrap; + private final boolean singleton; + + private Body(Token.Location loc, T tag, Forest[] tokens, Sequence creator, boolean unwrap, boolean singleton) { + this.location = loc; + this.tag = tag; + this.tokens = tokens==null ? emptyForestArray : new Forest[tokens.length]; + if (tokens != null) System.arraycopy(tokens, 0, this.tokens, 0, tokens.length); + this.creator = creator; + this.unwrap = unwrap; + this.singleton = singleton; + } + + private HashSet> expand(boolean toss, ArrayList> toks, int i, HashSet> h) { + if (singleton) { + for(Body b : (IterableForest)tokens[0]) b.expand(toss, toks, i, h); + + } else if (i==tokens.length) { + h.add(new Tree(null, tag, toks.toArray(tree_hint))); + + } else if (unwrap && i==tokens.length-1) { + if (tokens[i] != null) + for(Body b : (IterableForest)tokens[i]) + b.expand(toss, toks, 0, h); + + } else { + if (tokens[i]!=null) { + HashSet> exp = tokens[i].expand(toss); + if (exp != null) + for(Tree r : exp) { + int old = toks.size(); + toks.add(r); + expand(toss, toks, i+1, h); + while(toks.size() > old) toks.remove(toks.size()-1); + } + } + } + return h; + } + void addTo(HashSet h) { + if (!singleton) h.add(this); + else for(Body b : (IterableForest)tokens[0]) b.addTo(h); + } + void addTo(FastSet h) { + if (!singleton) h.add(this, true); + else for(Body b : (IterableForest)tokens[0]) b.addTo(h); + } + + private boolean kcache = false; + private boolean keep = false; + public boolean keep() { + if (kcache) return keep; + kcache = true; + for(Forest token : tokens) if (!token.valid()) return keep = false; + return keep = creator==null || (creator.needs.size()==0 && creator.hates.size()==0); + } + public boolean keep(Iterable> h) { + if (keep()) return true; + for(Forest token : tokens) if (!token.valid()) return false; + int needs = 0; + for(Body b : h) { + if (creator.hates.contains(b.creator) && b.keep(h)) return false; + if (creator.needs.contains(b.creator) && b.keep(h)) needs--; + } + return needs <= -1 * creator.needs.size(); + } + + + public String toString() { + StringBuffer ret = new StringBuffer(); + for(int i=0; i 0) { + ret.append(q); + ret.append(" "); + } + } + String tail = ret.toString().trim(); + String head = (tag!=null && !tag.toString().equals("")) ? (tail.length() > 0 ? tag+":" : tag+"") : ""; + if (tail.length() > 0) tail = "{" + tail + "}"; + return head + tail; + } + } + + + // Ref ////////////////////////////////////////////////////////////////////////////// + + static abstract class IterableForest extends Forest implements Iterable> { + public abstract Iterator> iterator(); + } + + /** + * This class represents a partially complete collection of + * forests to be viewed as a forest at some later date; once + * viewed, it becomes immutable + */ + static class Ref extends IterableForest { + private FastSet hp = new FastSet(); + private Forest res = null; + public boolean valid = false; + public Ref() { } + public void merge(Forest p) { + if (res != null) throw new Error("already resolved!"); + if (p==null) throw new Error(); + if (p!=this) hp.add(p); + } + public Iterator> iterator() { return ((IterableForest)resolve()).iterator(); } + public HashSet> expand(boolean toss) { return resolve().expand(toss); } + public boolean valid() { resolve(); return valid; } + public String toString() { return resolve().toString(); } + public Forest resolve() { + if (hp==null) return res; + HashSet results = null; + FastSet nh = new FastSet(); + for(Forest p : hp) + for(Body b : (IterableForest)p) { + if (b.keep() && (b.creator==null || !b.creator.lame)) { valid = true; b.addTo(nh); } + else results = new HashSet(); + } + if (results != null) { + for(Forest p : hp) for(Body b : (IterableForest)p) results.add(b); + for(Body b : results) { + if (b.keep() && (b.creator==null || !b.creator.lame)) continue; + if (!b.keep(results)) continue; + if (b.creator!=null && b.creator.lame) continue; + valid = true; + b.addTo(nh); + } + } + hp = null; + return res = new MultiForest(nh, valid); + } + } + + // Implementations ////////////////////////////////////////////////////////////////////////////// + + private static class MultiForest extends IterableForest { + private final FastSet> results; + private boolean valid; + public boolean valid() { return valid; } + private MultiForest(FastSet> results, boolean valid) { this.results = results; this.valid = valid; } + public MultiForest(Token.Location loc, T tag, Forest[] tokens, Sequence creator, boolean unwrap, boolean singleton) { + this.results = new FastSet>(new Body(loc, tag, tokens, creator, unwrap, singleton)); + this.valid = true; + } + public Iterator> iterator() { return results.iterator(); } + + public HashSet> expand(boolean toss) { + HashSet> ret = new HashSet>(); + for(Body b : results) + ret.addAll(b.expand(toss, new ArrayList>(), 0, new HashSet>())); + if (toss && ret.size() > 1) throw new Parser.Ambiguous(this); + return ret; + } + + // Display ////////////////////////////////////////////////////////////////////////////// + + private String toString = null; + public String toString() { + if (toString != null) return toString; + StringBuffer ret = new StringBuffer(); + ret.append(" r : results) { + if (!first) ret.append(' '); + first = false; + ret.append(r); + } + ret.append("?>"); + return toString = ret.toString(); + } + } + + // Statics ////////////////////////////////////////////////////////////////////////////// + + private static Tree[] tree_hint = new Tree[0]; + private static Body[] body_hint = new Body[0]; + private static final Forest[] emptyForestArray = new Forest[0]; +} diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java new file mode 100644 index 0000000..d8c0fd4 --- /dev/null +++ b/src/edu/berkeley/sbp/GSS.java @@ -0,0 +1,328 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; + +////////////////////////////////////////////////////////////////////////////// +// TODO: +// +// - fix public/package/private status +// + +////////////////////////////////////////////////////////////////////////////// +// Optimizations to add +// +// ** NOTE: not all of these are appropriate for this class -- it is +// simply a list of optimizations not implemented. This +// class is meant to remain simple and easy to understand; +// optimizations which obscure that do not belong here (they +// should go into the compiled version instead) +// +// - most of our time is now spent creating and storing Reduct instances +// - we should be able to perform Reduct's immediately after creating them... +// + +/** implements Tomita's Graph Structured Stack */ +class GSS { + + public GSS() { } + + /** corresponds to a positions between tokens the input stream; same as Tomita's U_i's */ + public class Phase { + + /** the token immediately after this phase */ + public final Token token; + + /** currently this is necessary only for the code() hack -- it doesn't actually correspond to the input */ + private final int pos; + + /** FIXME */ + public Forest.Ref finalResult = null; + + /** all reductions (pending and completed) */ + private HashSet reductions = new HashSet(); /* ALLOC */ + + /** all nodes, keyed by the value returned by code() */ + private HashMap hash = new HashMap(); /* ALLOC */ + + /** the number of pending reductions */ + private int pendingReductions = 0; + private int totalReductions = 0; + private HashSet pendingReduct = new HashSet(); + + /** the number of nodes in this phase */ + private int numNodes = 0; + + boolean closed = false; + + public Phase(Phase previous, Token token) { + this.pos = previous==null ? 0 : previous.pos+1; + this.token = token; + } + + public boolean isDone() { return token == null; } + + private String error = "generic syntax error"; + public void checkFailure() throws Parser.Failed { + if (numNodes <= 0) + throw new Parser.Failed(error, getLocation()); + } + + public Token.Location getLocation() { return token==null ? null : token.getLocation(); } + + /** add a new node (merging with existing nodes if possible) + * @param parent the parent of the new node + * @param result the SPPF result corresponding to the new node + * @param state the state that the new node is in + * @param fromEmptyReduction true iff this node is being created as a result of a reduction of length zero (see GRMLR paper) + * @param start the earliest part of the input contributing to this node (used to make merging decisions) + */ + public void newNode(Node parent, Forest pending, Parser.Table.State state, boolean fromEmptyReduction, Phase start) { + Node p = hash.get(code(state, start)); + if (p != null) newNode2(p, parent, pending, state, fromEmptyReduction, start); + else newNode3(parent, pending, state, fromEmptyReduction, start); + } + private void newNode2(Node p, Node parent, Forest pending, Parser.Table.State state, boolean fromEmptyReduction, Phase start) { + p.holder.merge(pending); + if (p.parents.contains(parent)) return; + p.parents.add(parent, true); + if (p!=parent && !fromEmptyReduction) p.queueReductions(parent); + } + private void newNode3(Node parent, Forest pending, Parser.Table.State state, boolean fromEmptyReduction, Phase start) { + do { + if (token != null && state.canShift(token)) break; + if (state.isAccepting()) break; + if (token==null) break; + int count = 0; + Parser.Table.Reduction r = null; + for(Parser.Table.Reduction red : token==null ? state.getEofReductions() : state.getReductions(token)) { r = red; count++; } + //if (count==0) return; -- BEWARE! this optimization is suspected to cause really nasty heisenbugs + if (count > 1) break; + //if (r.numPop == 0) break; + //r.reduce(pending, parent, null, Phase.this, null); + //return; + } while(false); + + Node n = new Node(parent, pending, state, start); // ALLOC + n.queueEmptyReductions(); + if (!fromEmptyReduction) n.queueReductions(); + } + + /** perform all reduction operations */ + public void reduce() { + for(Phase.Node n : hash.values()) { + n.queueEmptyReductions(); + n.queueReductions(); + } + while(pendingReduct.size()>0) + pendingReduct.iterator().next().go(); + } + + /** perform all shift operations, adding promoted nodes to next */ + public void shift(Phase next) { + closed = true; + Forest res = null; + boolean ok = false; + for(Phase.Node n : hash.values()) { + n.holder.resolve(); + if (token == null && n.state.isAccepting()) { + ok = true; + if (finalResult==null) finalResult = new Forest.Ref(); + finalResult.merge(n.holder); + } + if (!n.holder.valid()) continue; + if (token == null) continue; + for(Parser.Table.State st : n.state.getShifts(token)) { + if (res == null) res = Forest.create(token.getLocation(), token.result(), null, null, false, false); + next.newNode(n, res, st, true, this); + ok = true; + } + } + + if (!ok && token != null) { + StringBuffer error = new StringBuffer(); + error.append("error: unable to shift token \"" + token + "\"\n"); + error.append(" before: " +pendingReductions+ "\n"); + error.append(" before: " +totalReductions+ "\n"); + for(Phase.Node n : hash.values()) { + n.queueReductions(); + n.queueEmptyReductions(); + } + error.append(" after: " +pendingReductions+ "\n"); + error.append(" candidate states:\n"); + for(Phase.Node n : hash.values()) { + //for(Sequence.Position p : n.state) error.append(" " + p + "\n"); + //error.append(" --\n"); + for(Parser.Table.Reduction r : n.state.getReductions(token)) error.append(" " + r + "\n"); + //error.append(" ==\n"); + } + next.error = error.toString(); + } + + // this massively improves GC performance + reductions = null; + hash = null; + } + + + // GSS Nodes ////////////////////////////////////////////////////////////////////////////// + + private HashMap pcache = new HashMap(); + /** a node in the GSS */ + public class Node { + + private Forest.Ref holder = null; + private HashMap cache = null; + + public HashMap cache() { return cache==null ? (cache = new HashMap()) : cache; } + public Forest.Ref holder() { return holder==null ? (holder = new Forest.Ref()) : holder; } + public Forest pending() { return Phase.this.closed ? holder().resolve() : holder; } + public FastSet parents() { return parents; } + + /** which Phase this Node belongs to (node that Node is also a non-static inner class of Phase) */ + public final Phase phase = Phase.this; + + /** what state this node is in */ + public final Parser.Table.State state; + + /** the set of nodes to which there is an edge starting at this node */ + public final FastSet parents = new FastSet(); /* ALLOC */ + + /** FIXME */ + public void queueReductions() { + for(Node n2 : parents) + queueReductions(n2); + } + + /** FIXME */ + public void queueReductions(Node n2) { + new Reduct(this, n2, null); + for(Parser.Table.Reduction r : token==null ? state.getEofReductions() : state.getReductions(token)) { + + // currently we have this weird problem where we + // have to do an individual reduct for each child + // when the reduction length is one (ie the + // children wind up being children of the newly + // created node rather than part of the popped + // sequence + + if (r.numPop == 1) new Reduct(this, n2, r); + } + } + + + /** FIXME */ + public void queueEmptyReductions() { + for(Parser.Table.Reduction r : token==null ? state.getEofReductions() : state.getReductions(token)) { + if (r.numPop==0) + new Reduct(this, null, r); /* ALLOC */ + } + } + + private Node(Node parent, Forest pending, Parser.Table.State state, Phase start) { + this.state = state; + if (pending != null) this.holder().merge(pending); + if (parent != null) parents.add(parent, true); + if (Phase.this.hash.get(code(state, start)) != null) throw new Error("severe problem!"); + Phase.this.hash.put(code(state, start), this); + Phase.this.numNodes++; + if (parent==null) holder().valid = true; // hack to make sure that the "base" node is always considered valid + } + } + + + // Forest / Completed Reductions ////////////////////////////////////////////////////////////////////////////// + + /** a pending or completed reduction */ + class Reduct { + + /** the node from which the reduction should begin */ + public Node n = null; + + /** the node on the other end of the edge to be reduced along (either: null, the second node of the reduction, + * or the parent of the result of a length-one reduction) + */ + public Node n2 = null; + + /** true iff the reduction has already been performed */ + private boolean done = false; + + /** the reduction to be applied */ + public Parser.Table.Reduction r; + + public Tree result = null; + + public Reduct(Node n, Node n2, Parser.Table.Reduction r) { + this.n = n; + this.n2 = n2; + this.r = r; + if (reductions.contains(this)) { done = true; return; } + reductions.add(this); + pendingReduct.add(this); + pendingReductions++; + } + + /** perform the reduction */ + public void go() { + if (done) return; + done = true; + pendingReduct.remove(this); + pendingReductions--; + + // FIXME: explain this + if (r==null) { + for(Parser.Table.Reduction r : token==null ? n.state.getEofReductions() : n.state.getReductions(token)) { + if (r.numPop <= 1) continue; + r.reduce(n, n2, Phase.this, null); + } + } else if (r.numPop<=1) { + // UGLY HACK + // The problem here is that a "reduction of length 0/1" + // performed twice with different values of n2 needs + // to only create a *single* new result, but must add + // multiple parents to the node holding that result. + // The current reducer doesn't differentiate between + // the next node of an n-pop reduction and the + // ultimate parent of the last pop, so we need to + // cache instances here as a way of avoiding + // recreating them. + + Forest ret = (r.numPop==0 ? pcache : n.cache()).get(r); + if (ret != null) r.reduce(n, n2, n.phase, ret); + else (r.numPop==0 ? pcache : n.cache()).put(r, r.reduce(n, n2, n.phase, null)); + + } else { + r.reduce(n, n2, Phase.this, null); + } + } + + // FIXME: this is a PITA + public int hashCode() { return n.hashCode() ^ (r==null ? 0 : r.hashCode()) ^ (n2==null ? 0 : n2.hashCode()); } + public boolean equals(Object o) { + if (o==null) return false; + if (o==this) return true; + if (!(o instanceof Reduct)) return false; + Reduct other = (Reduct)o; + return equal(r, other.r) && equal(n, other.n) && equal(n2, other.n2); + } + } + + } + + /** helper method */ + private static boolean equal(Object a, Object b) { + if (a==null && b==null) return true; + if (a==null || b==null) return false; + return a.equals(b); + } + + /** this is something of a hack right now */ + private static long code(Parser.Table.State state, Phase start) { + return (((long)state.idx) << 32) | (start==null ? 0 : start.pos); + } + +} diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java new file mode 100644 index 0000000..046e725 --- /dev/null +++ b/src/edu/berkeley/sbp/Parser.java @@ -0,0 +1,337 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.Sequence.Position; +import edu.berkeley.sbp.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; + +/** a parser which translates streams of Tokens of type T into a Forest */ +public class Parser { + + private final Table pt; + + //public Parser( Topology top) { this(new Table( top)); } + //public Parser(String s, Topology top) { this(new Table(s, top)); } + + /** + * create a parser to parse the grammar with start symbol u + * @param top a "sample" Topology that can be cloned (FIXME, demanding this is lame) + */ + public Parser(Union u, Topology top) { this(new Table(u, top)); } + + Parser(Table pt) { this.pt = pt; } + + /** parse input for a exactly one unique result, throwing Ambiguous if not unique or Failed if none */ + public Tree parse1(Token.Stream input) throws IOException, Failed, Ambiguous { return parse(input).expand1(); } + + /** parse input, using the table pt to drive the parser */ + public Forest parse(Token.Stream input) throws IOException, Failed { + GSS gss = new GSS(); + GSS.Phase current = gss.new Phase(null, input.next()); + current.newNode(null, null, pt.start, true, null); + for(;;) { + GSS.Phase next = gss.new Phase(current, input.next()); + current.reduce(); + current.shift(next); + if (current.isDone()) return (Forest)current.finalResult; + current.checkFailure(); + current = next; + } + } + + + // Exceptions ////////////////////////////////////////////////////////////////////////////// + + public static class Failed extends Exception { + private final Token.Location location; + private final String message; + public Failed() { this("", null); } + public Failed(String message, Token.Location loc) { this.location = loc; this.message = message; } + public Token.Location getLocation() { return location; } + public String toString() { return message + (location==null ? "" : (" at " + location + "\n" + location.getContext())); } + } + + public static class Ambiguous extends RuntimeException { + public final Forest ambiguity; + public Ambiguous(Forest ambiguity) { this.ambiguity = ambiguity; } + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("unresolved ambiguity "/*"at " + ambiguity.getLocation() + ":"*/); + for(Object result : ambiguity.expand(false)) + sb.append("\n " + result); + return sb.toString(); + } + } + + + // Table ////////////////////////////////////////////////////////////////////////////// + + /** an SLR(1) parse table which may contain conflicts */ + static class Table { + + private final Union start0 = new Top(); + private final Sequence start0seq; + static class Top extends Union { public Top() { super("0"); } } + + public final Walk.Cache cache = new Walk.Cache(); + + public HashSet closure() { + HashSet hp = new HashSet(); + start0.reachable(hp); + return hp; + } + public Position firstPosition() { return start0seq.firstp(); } + public Position lastPosition() { Position ret = start0seq.firstp(); while(!ret.isLast()) ret = ret.next(); return ret; } + + private void walk(Element e, HashSet hs) { + if (e==null) return; + if (hs.contains(e)) return; + hs.add(e); + if (e instanceof Atom) return; + for(Sequence s : (Union)e) { + hs.add(s); + for(Position p = s.firstp(); p != null; p = p.next()) + walk(p.element(), hs); + } + } + public HashSet walk() { + HashSet ret = new HashSet(); + walk(start0, ret); + return ret; + } + + /* + public String toString() { + StringBuffer sb = new StringBuffer(); + for(Element e : walk()) + if (e instanceof Union) + ((Union)e).toString(sb); + return sb.toString(); + } + */ + + /** the start state */ + public final State start; + + /** used to generate unique values for State.idx */ + private int master_state_idx = 0; + + /** construct a parse table for the given grammar */ + public Table(Topology top) { this("s", top); } + public Table(String startSymbol, Topology top) { this(new Union(startSymbol), top); } + public Table(Union u, Topology top) { + start0seq = new Sequence.Singleton(u, null, null); + start0.add(start0seq); + + // construct the set of states + HashMap,State> all_states = new HashMap,State>(); + HashSet all_elements = walk(); + for(Element e : all_elements) + cache.ys.put(e, new Walk.YieldSet(e, cache).walk()); + this.start = new State(closure(), all_states, all_elements); + + // for each state, fill in the corresponding "row" of the parse table + for(State state : all_states.values()) + for(Position p : state.hs) { + + // the Grammar's designated "last position" is the only accepting state + if (p==lastPosition()) + state.accept = true; + + // FIXME: how does right-nullability interact with follow restrictions? + // all right-nullable rules get a reduction [Johnstone 2000] + if (p.isRightNullable(cache)) { + Walk.Follow wf = new Walk.Follow(top.fresh(), p.owner(), all_elements, cache); + Reduction red = new Reduction(p); + state.reductions.put(wf.walk(p.owner()), red); + if (wf.includesEof()) state.eofReductions.add(red, true); + } + + // if the element following this position is an atom, copy the corresponding + // set of rows out of the "master" goto table and into this state's shift table + if (p.element() != null && p.element() instanceof Atom) + state.shifts.addAll(state.gotoSetTerminals.subset(((Atom)p.element()).top())); + } + } + + /** a single state in the LR table and the transitions possible from it */ + public class State implements Comparable, Iterable { + + public final int idx = master_state_idx++; + private final HashSet hs; + + private transient HashMap gotoSetNonTerminals = new HashMap(); + private transient TopologicalBag gotoSetTerminals = new TopologicalBag(); + + private TopologicalBag reductions = new TopologicalBag(); + private FastSet eofReductions = new FastSet(); + private TopologicalBag shifts = new TopologicalBag(); + private boolean accept = false; + + // Interface Methods ////////////////////////////////////////////////////////////////////////////// + + public boolean canShift(Token t) { return shifts.contains(t); } + public Iterable getShifts(Token t) { return shifts.get(t); } + public boolean isAccepting() { return accept; } + public Iterable getReductions(Token t) { return reductions.get(t); } + public Iterable getEofReductions() { return eofReductions; } + public Iterator iterator() { return hs.iterator(); } + + // Constructor ////////////////////////////////////////////////////////////////////////////// + + /** + * create a new state consisting of all the Positions in hs + * @param hs the set of Positions comprising this State + * @param all_states the set of states already constructed (to avoid recreating states) + * @param all_elements the set of all elements (Atom instances need not be included) + * + * In principle these two steps could be merged, but they + * are written separately to highlight these two facts: + *
    + *
  • Non-atom elements either match all-or-nothing, and do not overlap + * with each other (at least not in the sense of which element corresponds + * to the last reduction performed). Therefore, in order to make sure we + * wind up with the smallest number of states and shifts, we wait until + * we've figured out all the token-to-position multimappings before creating + * any new states + * + *
  • In order to be able to run the state-construction algorithm in a single + * shot (rather than repeating until no new items appear in any state set), + * we need to use the "yields" semantics rather than the "produces" semantics + * for non-Atom Elements. + *
+ */ + public State(HashSet hs, + HashMap,State> all_states, + HashSet all_elements) { + this.hs = hs; + + // register ourselves in the all_states hash so that no + // two states are ever created with an identical position set + all_states.put(hs, this); + + // Step 1a: examine all Position's in this state and compute the mappings from + // sets of follow tokens (tokens which could follow this position) to sets + // of _new_ positions (positions after shifting). These mappings are + // collectively known as the _closure_ + + TopologicalBag bag0 = new TopologicalBag(); + for(Position position : hs) { + if (position.isLast() || !(position.element() instanceof Atom)) continue; + Atom a = (Atom)position.element(); + HashSet hp = new HashSet(); + position.next().reachable(hp); + bag0.addAll(a.top(), /*clo.walk()*/hp); + } + + // Step 1b: for each _minimal, contiguous_ set of characters having an identical next-position + // set, add that character set to the goto table (with the State corresponding to the + // computed next-position set). + + for(Topology r : bag0) { + HashSet h = new HashSet(); + for(Position p : bag0.getAll(r)) h.add(p); + gotoSetTerminals.put(r, all_states.get(h) == null ? new State(h, all_states, all_elements) : all_states.get(h)); + } + + // Step 2: for every non-Atom element (ie every Element which has a corresponding reduction), + // compute the closure over every position in this set which is followed by a symbol + // which could yield the Element in question. + // + // "yields" [in one or more step] is used instead of "produces" [in exactly one step] + // to avoid having to iteratively construct our set of States as shown in most + // expositions of the algorithm (ie "keep doing XYZ until things stop changing"). + /* + for(Element e : all_elements) { + if (e instanceof Atom) continue; + HashSet h = new Walk.Closure(null, g.cache).closure(e, hs); + State s = all_states.get(h) == null ? new State(h, all_states, all_elements) : all_states.get(h); + if (gotoSetNonTerminals.get(e) != null) + throw new Error("this should not happen"); + gotoSetNonTerminals.put(e, s); + } + */ + HashMapBag move = new HashMapBag(); + for(Position p : hs) { + Element e = p.element(); + if (e==null) continue; + HashSet ys = cache.ys.get(e); + if (ys != null) { + for(Element y : ys) { + HashSet hp = new HashSet(); + p.next().reachable(hp); + move.addAll(y, hp); + } + } + } + for(Element y : move) { + HashSet h = move.getAll(y); + State s = all_states.get(h) == null ? new State(h, all_states, all_elements) : all_states.get(h); + gotoSetNonTerminals.put(y, s); + } + } + + public String toString() { return "state["+idx+"]"; } + + public int compareTo(Table.State s) { return idx==s.idx ? 0 : idx < s.idx ? -1 : 1; } + } + + /** + * the information needed to perform a reduction; copied here to + * avoid keeping references to Element objects in a Table + */ + public class Reduction { + // FIXME: cleanup; almost everything in here could go in either Sequence.Position.getRewrite() or else in GSS.Reduct + public final int numPop; + private final Position position; + private final Forest[] holder; // to avoid constant reallocation + public int hashCode() { return position.hashCode(); } + public boolean equals(Object o) { + if (o==null) return false; + if (o==this) return true; + if (!(o instanceof Reduction)) return false; + Reduction r = (Reduction)o; + return r.position == position; + } + public Reduction(Position p) { + this.position = p; + this.numPop = p.pos; + this.holder = new Forest[numPop]; + } + public String toString() { return "[reduce " + position + "]"; } + public Forest reduce(Forest f, GSS.Phase.Node parent, GSS.Phase.Node onlychild, GSS.Phase target, Forest rex) { + holder[numPop-1] = f; + return reduce(parent, numPop-2, rex, onlychild, target); + } + public Forest reduce(GSS.Phase.Node parent, GSS.Phase.Node onlychild, GSS.Phase target, Forest rex) { + return reduce(parent, numPop-1, rex, onlychild, target); + } + + // FIXME: this could be more elegant and/or cleaner and/or somewhere else + private Forest reduce(GSS.Phase.Node parent, int pos, Forest rex, GSS.Phase.Node onlychild, GSS.Phase target) { + if (pos>=0) holder[pos] = parent.pending(); + if (pos<=0 && rex==null) { + System.arraycopy(holder, 0, position.holder, 0, holder.length); + rex = position.rewrite(target.getLocation()); + } + if (pos >=0) { + if (onlychild != null) + reduce(onlychild, pos-1, rex, null, target); + else + for(GSS.Phase.Node child : parent.parents()) + reduce(child, pos-1, rex, null, target); + } else { + State state = parent.state.gotoSetNonTerminals.get(position.owner()); + if (state!=null) + target.newNode(parent, rex, state, numPop<=0, parent.phase); + } + return rex; + } + } + } + + private static final Forest[] emptyForestArray = new Forest[0]; +} diff --git a/src/edu/berkeley/sbp/Repeat.java b/src/edu/berkeley/sbp/Repeat.java new file mode 100644 index 0000000..2365cbd --- /dev/null +++ b/src/edu/berkeley/sbp/Repeat.java @@ -0,0 +1,63 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; + +/** currently this class exports only static methods to create repetitions; there are no public instance methods or constructors */ +public class Repeat extends Union { + + /** repeat zero or one times */ + public static Repeat maybe(Element e) { return new Repeat(e, true, false); } + /** repeat zero or more times */ + public static Repeat many0(Element e) { return new Repeat(e, true, true); } + /** repeat zero or more times, separated by sep */ + public static Repeat many0(Element e, Element sep) { return new Repeat(e, true, true, sep); } + /** repeat one or more times */ + public static Repeat many1(Element e) { return new Repeat(e, false, true); } + /** repeat one or more times, separated by sep */ + public static Repeat many1(Element e, Element sep) { return new Repeat(e, false, true, sep); } + public static Maximal maximal(Element e) { return new Maximal(e); } + + // Instance ////////////////////////////////////////////////////////////////////////////// + + final boolean zeroOkay, manyOkay; + final Element e; + final Element separator; + + Repeat(final Element e, boolean zeroOkay, boolean manyOkay) { this(e, zeroOkay, manyOkay, null); } + Repeat(final Element e, boolean zeroOkay, boolean manyOkay, Element separator) { + super(e+(!manyOkay ? "?" : (zeroOkay ? "*" : "+")), true); + this.e = e; + this.zeroOkay = zeroOkay; + this.manyOkay = manyOkay; + this.separator = separator; + if (zeroOkay) { + add(new Sequence.Constant.Empty()); + if (manyOkay) add(new Sequence.Singleton(many1(e, separator), null, null)); + else add(new Sequence.Singleton(e, null, null)); + } else { + add(new Sequence.RewritingSequence(null, new Element[] { e }, null, null)); + if (this.separator==null) { + add(new Sequence.Unwrap(new Element[] { e, Repeat.this }, null, null)); + } else { + add(new Sequence.Unwrap(new Element[] { e, this.separator, Repeat.this }, new boolean[] { false, true, false }, null, null)); + } + } + } + + static class MaximalSequence extends Sequence.Singleton { + private final Element e; + public String toString() { return e+"@";} + public MaximalSequence(Element e) { super(e, null, null); this.e = e; } + } + static class Maximal extends Union { + public Maximal(final Element e) { + super(e+"+", true); + add(new MaximalSequence(e)); + } + } +} diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java new file mode 100644 index 0000000..fcff530 --- /dev/null +++ b/src/edu/berkeley/sbp/Sequence.java @@ -0,0 +1,207 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; + +/** juxtaposition; zero or more adjacent Elements; can specify a rewriting */ +public abstract class Sequence extends Element implements Iterable { + + // Static Constructors ////////////////////////////////////////////////////////////////////////////// + + /** the empty sequence (matches the empty string) */ + public static final Sequence empty = new Sequence.Constant.Empty(); + + /** after matching the sequence, do not add anything to the output tree */ + public static Sequence drop(Element[] e, HashSet and, HashSet not, boolean lame) { return new Constant.Drop(e, and, not, lame); } + + /** after matching the sequence, insert a constant into the output tree */ + public static Sequence constant(Element[] e, Object o, HashSet and, HashSet not) { return new Constant(e, o, and, not); } + + /** after matching the sequence, place the result of the idxth match in the output tree */ + public static Sequence singleton(Element[] e, int idx, HashSet and, HashSet not) { return new Singleton(e, idx, and, not); } + + /** + * after matching the sequence, create the specified output tree + * @param tag the tag for the output tree + * @param e the elements to match + * @param drops only elements of e whose corresponding boolean in drops is false will be included in the output tree + **/ + public static Sequence rewritingSequence(Object tag, Element[] e, boolean[] drops, HashSet and, HashSet not) { + return new RewritingSequence(tag, e, drops, and, not); } + + //////////////////////////////////////////////////////////////////////////////// + + protected final Element[] elements; + + final HashSet needs; + final HashSet hates; + boolean lame = false; + + final Position firstp; + Position firstp() { return firstp; } + + public Iterator iterator() { return new ArrayIterator(elements); } + protected Sequence(Element[] elements, HashSet and, HashSet not) { + this.needs = and==null ? new HashSet() : and; + this.hates = not==null ? new HashSet() : not; + //for(Sequence s : needs) s.lame = true; + //for(Sequence s : hates) s.lame = true; + this.elements = elements; + this.firstp = new Position(0); + } + + void reachable(HashSet h) { firstp().reachable(h); } + + Forest epsilonForm() { return firstp().rewrite(null); } + + protected abstract Forest postReduce(Token.Location loc, Forest[] args); + + + // Position ////////////////////////////////////////////////////////////////////////////// + + /** the imaginary position before or after an element of a sequence; corresponds to an "LR item" */ + public class Position { + + void reachable(HashSet h) { + if (h.contains(this)) return; + h.add(this); + if (element() != null) element().reachable(h); + } + + final int pos; + private final Position next; + final Forest[] holder; + + private Position(int pos) { + this.pos = pos; + this.next = pos==elements.length ? null : new Position(pos+1); + this.holder = new Forest[elements.length]; + } + + boolean isFirst() { return pos==0; } + boolean isRightNullable(Walk.Cache cache) { + if (isLast()) return true; + if (!element().possiblyEpsilon(cache)) return false; + return next().isRightNullable(cache); + } + + /** the element immediately after this Position, or null if this is the last Position */ + public Element element() { return pos>=elements.length ? null : elements[pos]; } + + /** the element which produces the sequence to which this Position belongs */ + public Sequence owner() { return Sequence.this; } + + /** the next Position (the Position after this.element()) */ + public Position next() { return next; } + + /** true iff this Position is the last one in the sequence */ + public boolean isLast() { return next()==null; } + + // Reduction ///////////////////////////////////////////////////////////////////////////////// + + Forest rewrite(Token.Location loc) { + for(int i=pos; i ret = Sequence.this.postReduce(loc, holder); + for(int k=0; k"); + return ret.toString(); + } + } + + + // toString ////////////////////////////////////////////////////////////////////////////// + + public String toString() { return toString(new StringBuffer(), false).toString(); } + StringBuffer toString(StringBuffer sb) { return toString(sb, true); } + StringBuffer toString(StringBuffer sb, boolean spacing) { + for(int i=0; i and, HashSet not) { super(e, and, not); this.result = result; } + public Forest postReduce(Token.Location loc, Forest[] args) { + return (Forest)Forest.leaf(loc, result, this); + } + static class Drop extends Constant { + public Drop(Element[] e, HashSet and, HashSet not, boolean lame) { + super(e, null, and, not); + this.lame = lame; + } + } + static class Empty extends Sequence.Constant.Drop { public Empty() { super(new Element[] { }, null, null, false); } } + } + + static class Singleton extends Sequence { + private final int idx; + public Singleton(Element e, HashSet and, HashSet not) { this(new Element[] { e }, 0, and, not); } + public Singleton(Element[] e, int idx, HashSet and, HashSet not) { super(e, and, not); this.idx = idx; } + public Forest postReduce(Token.Location loc, Forest[] args) { return (Forest)Forest.singleton(loc, args[idx], this); } + } + + static class Unwrap extends Sequence { + private boolean[] drops; + public Unwrap(Element[] e, HashSet and, HashSet not) { super(e, and, not); this.drops = null; } + public Unwrap(Element[] e, boolean[] drops, HashSet and, HashSet not) { super(e, and, not); this.drops = drops; } + public Forest postReduce(Token.Location loc, Forest[] args) { + if (drops==null) return Forest.create(loc, null, args, this, true, false); + int count = 0; + for(int i=0; i[] args2 = new Forest[count]; + int j = 0; + for(int i=0; i and, HashSet not) { this(tag, e, null, and, not); } + public RewritingSequence(Object tag, Element[] e, boolean[] drops, HashSet and, HashSet not) { + super(e, and, not); + this.tag = tag; + this.drops = drops == null ? new boolean[e.length] : drops; + for(int i=0; i Forest postReduce(Token.Location loc, Forest[] args) { + Forest[] args2 = new Forest[count]; + int j = 0; + for(int i=0; i "); + sb.append(tag); + return sb; + } + } +} diff --git a/src/edu/berkeley/sbp/Token.java b/src/edu/berkeley/sbp/Token.java new file mode 100644 index 0000000..196f5ca --- /dev/null +++ b/src/edu/berkeley/sbp/Token.java @@ -0,0 +1,34 @@ +package edu.berkeley.sbp; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; + +/** a token of input -- note that this represents an actual input token rather than an Element which matches a token */ +public interface Token { + + // FIXME!!! remove this + /** converts this Token into a standalone result (ie for a non-rewriting pattern) */ + public String result(); + + /** this is declared abstract as a way of forcing subclasses to provide a thoughtful implementation */ + public abstract String toString(); + + public abstract Location getLocation(); + + /** a sequence of input tokens; returns null when EOF is reached */ + public static interface Stream { + public T next() throws IOException; + } + + /** a location within the input stream */ + public static interface Location { + public String toString(); + public String getContext(); + } + +} + diff --git a/src/edu/berkeley/sbp/Tree.java b/src/edu/berkeley/sbp/Tree.java new file mode 100644 index 0000000..989224c --- /dev/null +++ b/src/edu/berkeley/sbp/Tree.java @@ -0,0 +1,57 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; + +/** a tree (or node in a tree); see jargon.txt for details */ +public class Tree { + + final T head; + Tree[] children; + final Token.Location location; + + public T head() { return head; } + public int numChildren() { return children.length; } + public Iterable> children() { return new ArrayIterator(children); } + + public Token.Location getLocation() { return location; } + + public Tree(Token.Location loc, T head) { this(loc, head, null); } + public Tree(Token.Location loc, T head, Tree[] children) { + this.location = loc; + this.head = head; + Tree[] children2 = children==null ? new Tree[0] : new Tree[children.length]; + if (children != null) System.arraycopy(children, 0, children2, 0, children.length); + this.children = children2; + } + + /** append Java code to sb which evaluates to this instance */ + public void toJava(StringBuffer sb) { + sb.append("new Tree(null, "); + sb.append(head==null ? "null" : "\"" + StringUtil.toJavaString(head+"") + "\""); + sb.append(", new Tree[] { "); + for(int i=0; i 0) { ret.append(q); ret.append(" "); } + } + String tail = ret.toString().trim(); + String h = (head!=null && !head.toString().equals("")) ? (tail.length() > 0 ? head+":" : head+"") : ""; + if (tail.length() > 0) tail = "{" + tail + "}"; + return h + tail; + } + + +} diff --git a/src/edu/berkeley/sbp/Union.java b/src/edu/berkeley/sbp/Union.java new file mode 100644 index 0000000..df6c374 --- /dev/null +++ b/src/edu/berkeley/sbp/Union.java @@ -0,0 +1,90 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; + +/** an element which can produce one of several alternatives */ +public class Union extends Element implements Iterable { + + final String shortForm; + final boolean synthetic; + private final List alternatives = new ArrayList(); + + public Iterator iterator() { return alternatives.iterator(); } + + void reachable(HashSet h) { for(Sequence s : alternatives) s.reachable(h); } + + /** adds an alternative */ + public void add(Sequence s) { alternatives.add(s); } + + /** + * Since every cycle in a non-degenerate grammar contains at + * least one Union, every instance of this class must be able to + * display itself in both "long form" (list of the long forms of + * its alternatives) and "short form" (some abbreviation). + * + * @param shortForm the "short form" display; usually + * @param synthetic if true, this Union's "long form" is "obvious" and should not be displayed when printing the grammar + */ + public Union(String shortForm) { this(shortForm, false); } + public Union(String shortForm, boolean synthetic) { + this.shortForm = shortForm; + this.synthetic = synthetic; + } + + private Forest.Ref epsilonForm = null; + Forest epsilonForm() { + if (epsilonForm != null) return epsilonForm; + epsilonForm = new Forest.Ref(); + for(Sequence s : this) + if (s.possiblyEpsilon(null)) + epsilonForm.merge(s.epsilonForm()); + return epsilonForm; + } + + // Display ////////////////////////////////////////////////////////////////////////////// + + public String toString() { return shortForm; } + private static String pad(int i,String s) { return s.length() >= i ? s : pad(i-1,s)+" "; } + void toString(StringBuffer sb) { + if (synthetic) return; + boolean first = true; + if (alternatives.size()==0) { + sb.append(pad(15, shortForm) + "::= "); + } else for(Sequence s : this) { + sb.append(pad(15, first ? shortForm : "") + (first ? "::= " : " | ")); + first = false; + sb.append(s.toString()); + sb.append('\n'); + } + sb.append('\n'); + } + + // SubUnion ////////////////////////////////////////////////////////////////////////////// + + /** FIXME this is kind of a hack */ + public class Subset extends Union { + private final Set exclude; + public Subset(String shortForm, Set exclude) { super(shortForm, true); this.exclude = exclude; } + public Iterator iterator() { + final Iterator it = Union.this.iterator(); + return new Iterator() { + private Sequence next = it.hasNext() ? it.next() : null; + public boolean hasNext() { return next != null; } + public Sequence next() { + Sequence ret = next; + do { + next = it.hasNext() ? it.next() : null; + } while (next != null && (next instanceof Sequence) && exclude.contains((Sequence)next)); + return ret; + } + public void remove() { throw new Error(); } + }; + } + } + +} diff --git a/src/edu/berkeley/sbp/Walk.java b/src/edu/berkeley/sbp/Walk.java new file mode 100644 index 0000000..5754726 --- /dev/null +++ b/src/edu/berkeley/sbp/Walk.java @@ -0,0 +1,191 @@ +package edu.berkeley.sbp; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.Sequence.Position; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; + +/** a traversal of the grammar performed by mapping from Elements to a lattice and computing the resulting LUB */ +abstract class Walk { + protected HashSet acc = new HashSet(); + protected abstract T bottom(Element e); + + protected final Cache c; + public Walk() { this(null); } + public Walk(Cache c) { this.c = c; } + + public T sequence(Sequence s) { + T ret = bottom(s); + for(Position p = s.firstp(); p!=null && !p.isLast(); p = p.next()) + ret = sequence(s, ret, walk(p.element())); + return ret; + } + + public T walkAtom(Atom r) { return walk(r); } + public T union(Union u, T a, T b) { return bottom(u); } + public T sequence(Sequence s, T a, T b) { return bottom(s); } + protected T walk(Element e) { + if (acc.contains(e)) return bottom(e); + acc.add(e); + return walk2(e); + } + + protected T walk2(Element e) { + if (e instanceof Atom) return walkAtom((Atom)e); + else if (e instanceof Sequence) return sequence((Sequence)e); + else if (e instanceof Union) { + T ret = bottom(e); + for(Sequence s : (Union)e) ret = union((Union)e, ret, walk(s)); + return ret; + } else { + throw new Error("unknown element of class " + e.getClass().getName() + ": " + e); + } + } + + static class YieldSet extends Walk> { + private final Element e; + public final HashSet walk() { return walk(e); } + public YieldSet(Element e, Cache c) { super(c); this.e = e; } + public HashSet bottom(Element e) { return acc; } + public HashSet sequence(Sequence seq) { return bottom(seq); } + public HashSet walkAtom(Atom r) { + c.atoms.put(e, c.atoms.get(e)==null ? r.top() : c.atoms.get(e).union(r.top())); + return super.walkAtom(r); + } + } + + + // Boolean ////////////////////////////////////////////////////////////////////////////// + + static class PossiblyEpsilon extends Walk { + public Boolean walkAtom(Atom r) { return false; } + public Boolean sequence(Sequence s, Boolean a, Boolean b) { return new Boolean(a && b); } + public Boolean union(Union u, Boolean a, Boolean b) { return new Boolean(a || b); } + public Boolean bottom(Element e) { return (e instanceof Union) ? false : true; } + private HashMap hm = new HashMap(); + protected Boolean walk(Element e) { + if (hm.get(e) != null) return hm.get(e); + hm.put(e, false); + Boolean ret = walk2(e); + hm.put(e, ret); + return ret; + } + } + + + // Token-Set ////////////////////////////////////////////////////////////////////////////// + + static abstract class WalkTokenSet extends Walk> { + public Topology cs; + public WalkTokenSet(Topology cs) { this.cs = cs; } + public WalkTokenSet(Topology cs, Cache c) { super(c); this.cs = cs; } + public Topology bottom(Element e) { return cs; } + public Topology walkAtom(Atom r) { cs.add(r.top()); return cs; } + } + + class First extends WalkTokenSet { + public First(Topology cs, Walk.Cache cache) { super(cs, cache); } + public Topology sequence(Sequence seq) { + for(Position p = seq.firstp(); p!=null && !p.isLast(); p = p.next()) { + walk(p.element()); + if (!p.element().possiblyEpsilon(c)) break; + } + return cs; + } + } + + class Last extends WalkTokenSet { + public Last(Topology cs, Walk.Cache cache) { super(cs, cache); } + public Topology sequence(Sequence seq) { sequence(seq.firstp()); return cs; } + private Topology sequence(Position p) { + if (p==null) return null; + Topology ret = sequence(p.next()); + if (ret!=null) return ret; + if (p.isLast()) return null; + if (p.element().possiblyEpsilon(c)) return null; + if (p.element()==null) return null; + return walk(p.element()); + } + } + + static class Follow extends WalkTokenSet { + private final Element me; + private final HashSet all; + private boolean eof = false; + public boolean includesEof() { return eof; } + public Follow(Topology cs, Element me, HashSet all, Cache c) { super(cs, c); this.me = me; this.all = all; } + public Topology bottom(Element e) { return cs; } + public Topology sequence(Sequence seq) { return cs; } + public Topology walkAtom(Atom r) { return walk((Element)r); } + public Topology walk(Element e) { + if (acc.contains(e)) return bottom(e); + acc.add(e); + + if (c != null) { + Topology cached = (Topology)c.follow.get(e); + if (cached != null) { + cs.add(cached); + eof |= c.eof.get(e); + return cs; + } + } + + Topology cso = cs; + boolean eofo = eof; + eof = false; + cs = cso.fresh(); + + if (e instanceof Parser.Table.Top) eof = true; + for(Element x : all) { + boolean matched = false; + if (x instanceof Parser.Table.Top) walk(x); // because this symbol might not appear in any other Sequence + if (!(x instanceof Sequence)) continue; + Sequence a = (Sequence)x; + Position mp = null; + for(Position pos = a.firstp(); pos != null && !pos.isLast(); pos = pos.next()) { + if (matched) cs.add(new First(cs.fresh(), c).walk(pos.element())); + if (pos.isLast()) { matched = (matched && pos.element().possiblyEpsilon(c)); continue; } + boolean good = false; + if (e instanceof Atom) { + Topology top = c.atoms.get(pos.element()); + if (top==null) continue; + if (!(top.containsAll(((Atom)e).top()))) continue; + } else { + if (c.ys.get(pos.element()).contains(e)) good = true; + } + if (good) { + mp = pos; + matched = true; + } + } + if (matched) walk(a); + } + + if (e instanceof Repeat.MaximalSequence || e instanceof Repeat.Maximal) + cs.remove(new Last(cs.fresh(), c).walk(e)); + + if (c != null && e==me) { + c.follow.put(e, cs.dup()); + c.eof.put(e, eof); + } + + cso.add(cs); + cs = cso; + eofo |= eof; + eof = eofo; + + return cs; + } + } + + static class Cache { + public final HashMap possiblyEpsilon = new HashMap(); + public HashMap eof = new HashMap(); + public HashMap follow = new HashMap(); + public HashMap> ys = new HashMap>(); + public HashMap atoms = new HashMap(); + } +} diff --git a/src/edu/berkeley/sbp/misc/CharToken.java b/src/edu/berkeley/sbp/misc/CharToken.java new file mode 100644 index 0000000..bad4372 --- /dev/null +++ b/src/edu/berkeley/sbp/misc/CharToken.java @@ -0,0 +1,169 @@ +package edu.berkeley.sbp.misc; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; + +/** an implementation of Token for streams of Java char values */ +public class CharToken implements Token, IntegerTopology.IntegerMappable { + + // Public ////////////////////////////////////////////////////////////////////////////// + + public static class CharRange extends Atom { + private String esc(char c) { return StringUtil.escapify(c+"", "[]-~\\\"\'"); } + public CharRange(Topology t) { super(t); } + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append('['); + Range.Set ranges = ((IntegerTopology)top()).getRanges(); + if (ranges.size() == -1 || ranges.size() > Character.MAX_VALUE/2) { + sb.append('~'); + ranges = ranges.complement(); + } + ranges = ranges.intersect(all); + for(Range r : ranges) { + if (r.isMinNegInf() || r.isMaxPosInf()) throw new Error("should not happen"); + if (r.getMin()==r.getMax()) { + sb.append(esc((char)r.getMin())); + } else{ + sb.append(esc((char)r.getMin())); + sb.append('-'); + sb.append(esc((char)r.getMax())); + } + } + sb.append(']'); + return sb.toString(); + } + } + + /** returns an element matching all characters between start and end, inclusive */ + public static Atom positiveRange(char start, char end) { + return new CharRange(new IntegerTopology(new Range.Set(new Range((int)start, (int)end)))); + } + + /** returns an element matching all characters not between start and end, inclusive */ + public static Atom negativeRange(char start, char end) { + return new CharRange(new IntegerTopology(new Range.Set(new Range((int)start, (int)end)).complement().intersect(all))); + } + + private static final Range.Set all = new Range.Set(new Range(0, Character.MAX_VALUE)); + public static final Atom any = new CharRange(new IntegerTopology(all)); + public static final Atom none = new CharRange(new IntegerTopology()); + public static IntegerTopology range(Range r) { return new IntegerTopology(r); } + public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology(r)); } + + /** returns an element which exactly matches the string given */ + public static Element string(String s) { + if (s.length() == 0) return MetaGrammar.epsilon; + final String escapified = "\""+StringUtil.escapify(s, "\"\r\n\\")+"\""; + Element ret; + if (s.length() == 1) { + ret = + new CharRange(new IntegerTopology((int)s.charAt(0))) { + public String toString() { return escapified; } }; + } else { + Union ret2 = new Union("\""+s+"\"_str", true) { + public String toString() { return escapified; } }; + Element[] refs = new Element[s.length()]; + for(int i=0; i((int)s.charAt(i))); + ret2.add(Sequence.constant(refs, s, null, null)); + ret = ret2; + } + return ret; + } + + /** FIXME */ + public static Topology top() { return new IntegerTopology(); } + public static Topology top(String s) throws java.text.ParseException { + return new IntegerTopology(Range.Set.parse(s)); + } + + // Private ////////////////////////////////////////////////////////////////////////////// + + public final char c; + public final Location location; + private CharToken(char c, int line, int col) { this(c, new CartesianLocation(line, col)); } + private CharToken(char c, Location loc) { this.c = c; this.location = loc; } + public String result() { return c+""; } + public Location getLocation() { return location; } + public String toString() { return "\'"+StringUtil.escapify(c+"")+"\'"; } + + ////////////////////////////////////////////////////////////////////////////////////////// + + public int toInt() { return (int)c; } + + // Statics ////////////////////////////////////////////////////////////////////////////// + + static class CartesianLocation implements Location { + public final int line; + public final int col; + public String toString() { return line + ":" + col; } + public CartesianLocation(int line, int col) { this.line = line; this.col = col; } + public String getContext() { return ""; } + } + + /** an implementation of Token.Stream for sequences of characters */ + public static class Stream implements Token.Stream { + private final String message; + private final Reader r; + private int line = 1; + private int col = 1; + + public Stream(String s) { this(new StringReader(s)); } + + public Stream(Reader r) { this(r, null); } + public Stream(Reader r, String s) { this.r = r; this.message = s; } + + public Stream(InputStream i) { this(i, null); } + public Stream(InputStream i, String s) { this(new InputStreamReader(i), s); } + + private Line currentLine = new Line(); + private class Line { + public StringBuffer line = new StringBuffer(); + } + + private class LocWrap implements Location { + Line myline = Stream.this.currentLine; + public final int line; + public final int col; + public String toString() { return line + ":" + col; } + public LocWrap(int line, int col) { this.line = line; this.col = col; } + public String getContext() { + StringBuffer spaces = new StringBuffer(); + for(int i=0; i 10) { + then = now; + System.out.print(" "+(message==null?"":message)+" " + s + " \r"); + } + if (c=='\n') { + currentLine = new Line(); + line++; + col = 1; + } else { + currentLine.line.append(c); + col++; + } + return ret; + } + } + +} diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java new file mode 100644 index 0000000..9244f05 --- /dev/null +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -0,0 +1,758 @@ +package edu.berkeley.sbp.misc; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import java.util.*; +import java.io.*; + +public class MetaGrammar extends ReflectiveWalker { + + public static Union make() throws Exception { + return ((MetaGrammar)new MetaGrammar().walk(meta)).done(); + } + + + // FIXME + private static HashSet dropAll = new HashSet(); + + // Statics ////////////////////////////////////////////////////////////////////////////// + + private static final Union SELF = new Union("()"); + + public static Union epsilon = new Union("()"); + static { epsilon.add(Sequence.empty); } + + // MetaGrammar ////////////////////////////////////////////////////////////////////////////// + + public Object walk(String tag, Object[] argo) { + if ("dork".equals(tag)) return Reflection.lub(argo); + return super.walk(tag, argo); + } + public PreSequence[] dork(PreSequence[] p) { return p; } + public Object _star_(Element r) { return new Rep(r, null, false, true); } + public Element _leftbracket_(Object o, Object[] args) { return rangex(o==null || !(o instanceof Character) ? null : o, args); } + public Union _colon__colon__equals_(String s, PreSequence[][] p) { return nonTerminalZ(s, p); } + public Union _bang__colon__colon__equals_(String s, PreSequence[][] p) { + return nonTerminalZ(s, p, true); } + public Union _colon__colon__equals_(boolean q, String s, PreSequence[][] p) { + return nonTerminalZ(s, p, q); + } + public Element _leftparen__rightparen_() { return epsilon; } + public Element epsilon(Object o, Object b) { return epsilon; } + public Element _rightparen_(Object e) { return SELF; } + + public PreSequence _amp_(PreSequence p, Object[] o) { + p.needs.add(new PreSequence(o, null, true)); + return p; + } + public PreSequence _amp__tilde_(PreSequence p, Object[] o) { + p.hates.add(new PreSequence(o, null, true)); + return p; + } + + public Element _bang_(Element r) { return r; } + public Object care(String s) { return new MyLift(s); } + //public Element _backtick_(Element r) { return new Unwrap(r); } + //public Element _hash_(Element e) { return e; } + //public Element _hash_(Element e) { return _plus__plus_(e); } + + public PreSequence[] alternatives(PreSequence[] s) { return s; } + + public Range _minus_(Character a, Character b) { return b==null ? new Range(a.charValue(), true) : new Range(a.charValue(), b.charValue()); } + public Union nonTerminalY(String s) { return nonTerminalX(s, false, false); } + public Union nonTerminalX(String s, boolean synthetic, boolean dropAll) { + Union n = s.equals(startSymbol) ? g : nt.get(s); + if (n == null) nt.put(s, n = new Union(s, synthetic)); + if (dropAll) this.dropAll.add(n); + return n; + } + public Object _leftparen_(PreSequence[][] p) { return nonTerminalZ(p); } + public Union nonTerminalZ(PreSequence[][] p) { return nonTerminalX("anon"+(anon++), p, false, false); } + public Union nonTerminalZ(String s, PreSequence[][] p) { return nonTerminalX(s, p, false, false); } + public Union nonTerminalZ(String s, PreSequence[][] p, boolean q) { return nonTerminalX(s, p, false, q); } + public Object _backslash__leftbrace_(String s) { return SELF; } + public Object _leftbrace_(String s) { return SELF; } + public Object _plus_(final Element r) { return new Rep(r, null, false, false); } + //public Element _tilde__slash__tilde_(final Element r) { return Repeat.maximal(r); } + public Object _plus__slash_(final Element r, Element s) { /*return Repeat.many1(r, s);*/ return new Rep(r, s, false, false); } + //public Element _star__slash_(final Element r, Element s) { return Repeat.many0(r, s); } + //public Element _star__star_(final Element r, Element s) { return Repeat.maximal(Repeat.many0(r, s)); } + public Object _plus__plus_(final Element r) { return new Rep(r, null, true, false); } + public Element _question_(final Element r) { return Repeat.maybe(r); } + public MetaGrammar gram(Object o, MetaGrammar g, Object o2) { return g; } + public MetaGrammar grammar(Object[] o) { return this; } + public MetaGrammar grammar(Object o, Union[] u, Object x) { return this; } + public char _backslash_n() { return '\n'; } + public char _backslash_r() { return '\r'; } + public String literal(String s) { return s; } + //public Element literal(String s) { return CharToken.string(s); } + + public Range range0(char a) { return new Range(a, a); } + public Range range0(char a, char b) { return new Range(a, b); } + public Element range(Object o, Range[] rr) { + Range.Set ret = !"~".equals(o+"") ? new Range.Set() : new Range.Set(new Range(true, true)); + if (rr != null) + for(Range r : rr) + if (!"~".equals(o+"")) ret.add(r); + else ret.remove(r); + return CharToken.set(ret); + } + public Element rangex(Object o, Object[] r) { + Range.Set ret = o==null ? new Range.Set() : new Range.Set(new Range(true, true)); + if (r != null) + for(Object aa : r) { + Range range = + aa instanceof Range + ? (Range)aa + : aa instanceof Character + ? new Range(((Character)aa).charValue()) + : new Range(((String)aa).charAt(0)); + if (o==null) ret.add(range); + else ret.remove(range); + } + return CharToken.set(ret); + } + + public String sify(Object arg) { + if (arg==null) return ""; + if (arg instanceof String) return (String)arg; + Object[] args = (Object[])arg; + while(true) { + args = Reflection.lub(args); + if (args instanceof String[]) { + StringBuffer ret = new StringBuffer(); + for(String s : ((String[])args)) ret.append(s); + return ret.toString(); + } + if (args instanceof Character[]) break; + if (!(args instanceof Object[])) break; + args = (Object[])args[0]; + } + if (args instanceof Character[]) { + char[] c = new char[args.length]; + for(int i=0; i nt; + private int anon = 0; + private Element dws; + private String startSymbol; + + public MetaGrammar() { this("s"); } + public MetaGrammar(String s) { done(s); } + public Union done() { return done("s"); } + public Union done(String str) { + Union ret = g; + g = new Union(str); + startSymbol = str; + nt = new HashMap(); + nt.put(str, g); + this.dws = Repeat.maximal(Repeat.many0(nonTerminalY("w"))); + return ret; + } + + public Union nonTerminalX(String str, PreSequence[][] s, boolean synthetic, boolean dropAll) { + Union n = nonTerminalX(str, synthetic, dropAll); + if (s == null || s.length==0) { n.add(Sequence.empty); return n; } + HashSet seqs = new HashSet(); + for(int i=0; i temp = new HashSet(); + for(PreSequence pre : s[i]) { + pre.hatess.addAll(seqs); + Sequence seq = pre.buildSequence(Character.isUpperCase(str.charAt(0)) ? dws : null, n, false, dropAll); + temp.add(seq); + //for(Sequence dom : seqs) seq.hates.add(dom); + n.add(seq); + } + seqs.addAll(temp); + } + return n; + } + + public String stringify(String s) { return StringUtil.unescapify(s); } + public char unescape(char x, char c) { return unescape(c); } + public char unescape(char c) { return StringUtil.unescapify("\\"+c).charAt(0); } + public PreSequence sequence(Object[] o) { return new PreSequence(o, null); } + + public static class PreBrace { + public final Object[] o; + public PreBrace(Object[] o) { this.o = o; } + } + + public PreSequence _equals__greater_(Object[] o, String s) { return new PreSequence(o, s); } + public PreSequence wrap(Object[] o) { return new PreSequence(o, ""); } + public PreSequence mwrap(Object[] o) { return new PreSequence(o, ""); } + public PreSequence rewrite(Object[] o) { return new PreSequence(o, null); } + public PreSequence rewrite(Object[] o, Object o2) { + Object[] o3 = new Object[o.length + 1]; + System.arraycopy(o, 0, o3, 0, o.length); + o3[o3.length-1] = o2; + return rewrite(o3); + } + + public static class Rep { + private final Element e; + private final Element s; + private final boolean maximal; + private final boolean zero; + public Rep(Element e, Element s, boolean maximal, boolean zero) { this.e = e; this.s = s; this.zero = zero; this.maximal = maximal;} + public Element build(Element ws) { + Element sep = null; + if (ws==null) sep = s; + else if (s==null) sep = ws; + else { + Union ws2 = new Union(e + "/" + s + "/" + ws, true); + ws2.add(Sequence.singleton(new Element[] { ws, s, ws }, 0, null, null)); + sep = ws2; + } + Element ret = zero ? Repeat.many0(e, sep) : Repeat.many1(e, sep); + return maximal ? Repeat.maximal(ret) : ret; + } + } + + public static class PreSequence { + public final HashSet needs = new HashSet(); + public final HashSet hates = new HashSet(); + public final HashSet hatess = new HashSet(); + public /*final*/ String tag; + public final Object[] o; + public final boolean keeper; + + public PreSequence(Object[] o, String tag) { this(o, tag, false); } + public PreSequence(Object[] o, String tag, boolean keeper) { this.o = o; this.tag = tag; this.keeper = keeper; } + boolean[] drops = null; + public Element[] expand(Element ws, Union u, HashSet set) { + if (o==null) return new Element[0]; + Element[] o2 = new Element[o.length]; + drops = new boolean[o.length]; + int j = 0; + for(int i=0; i0) { ret[i*2-1] = ws; drops2[i*2-1] = true; } + ret[i*2] = o2[i]; + drops2[i*2] = drops[i]; + } + drops = drops2; + return ret; + } + public Union buildUnion(Element ws) { + Union u = new Union("???"); + u.add(buildSequence(ws, u)); + return u; + } + public Sequence buildSequence(Element ws, Union u) { return buildSequence(ws, u, false, false); } + public Sequence buildSequence(Element ws, Union u, boolean lame, boolean dropAll) { + + HashSet and = new HashSet(); + HashSet not = new HashSet(); + for(PreSequence p : needs) { + Sequence ps = p.buildSequence(ws, u, true, dropAll); + u.add(ps); + and.add(ps); + } + for(Sequence p : hatess) not.add(p); + for(PreSequence p : hates) { + Sequence ps = p.buildSequence(ws, u, true, dropAll); + u.add(ps); + not.add(ps); + } + + HashSet set = new HashSet(); + Element[] expansion = expand(ws, u, set); + boolean keeper = this.keeper; + Sequence ret = dropAll || lame || keeper ? Sequence.drop(expansion, and, not, lame) : null; + if (ret==null && tag!=null) { + for(int i=0; i", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { })})})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "G", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "m", new Tree[] { }), + new Tree(null, "m", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "r", new Tree[] { })})})}), + new Tree(null, "*", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { })})})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "m", new Tree[] { })})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "G", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "m", new Tree[] { }), + new Tree(null, "m", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "r", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { })})})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "m", new Tree[] { }), + new Tree(null, "m", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "r", new Tree[] { })})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ":", new Tree[] { }), + new Tree(null, ":", new Tree[] { }), + new Tree(null, "=", new Tree[] { })})})}), + new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }), + new Tree(null, "t", new Tree[] { })})})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "!", new Tree[] { }), + new Tree(null, ":", new Tree[] { }), + new Tree(null, ":", new Tree[] { }), + new Tree(null, "=", new Tree[] { })})})}), + new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }), + new Tree(null, "t", new Tree[] { })})})})})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "c", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "~", new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "]", new Tree[] { })}), + new Tree(null, "range0", new Tree[] { new Tree(null, "\\", new Tree[] { })}), + new Tree(null, "range0", new Tree[] { new Tree(null, "-", new Tree[] { })}), + new Tree(null, "range0", new Tree[] { new Tree(null, "~", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "c", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "p", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "b", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "r", new Tree[] { })})})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "v", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "x", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "x", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { })})})}), + new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "x", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { }), + new Tree(null, "~", new Tree[] { })})})}), + new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "x", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }), + new Tree(null, ">", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }), + new Tree(null, ">", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }), + new Tree(null, "u", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})})})}), + new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }), + new Tree(null, ">", new Tree[] { })})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { }), + new Tree(null, ")", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "p", new Tree[] { })})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "g", new Tree[] { }), + new Tree(null, "e", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "c", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "g", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "0", new Tree[] { })})})}), + new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "c", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "-", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "c", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "g", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "0", new Tree[] { })})})})})})})}), + new Tree(null, "!::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }), + new Tree(null, "t", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ">", new Tree[] { })})})})})})})})})}), + new Tree(null, "!::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "b", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "r", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "|", new Tree[] { })})})})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "n", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "T", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "m", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "Y", new Tree[] { })})})}), + new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "(", new Tree[] { })})})}), + new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, ")", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "p", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "n", new Tree[] { })})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "{", new Tree[] { })})})}), + new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }), + new Tree(null, "t", new Tree[] { })})})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "}", new Tree[] { })})})})})}), + new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "[", new Tree[] { })})})}), + new Tree(null, "?", new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "~", new Tree[] { })})})})}), + new Tree(null, "*", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "g", new Tree[] { }), + new Tree(null, "e", new Tree[] { })})})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "]", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "n", new Tree[] { }), + new Tree(null, "g", new Tree[] { }), + new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { }), + new Tree(null, "/", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { }), + new Tree(null, "/", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "?", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "~", new Tree[] { }), + new Tree(null, "/", new Tree[] { }), + new Tree(null, "~", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "-", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "!", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})}), + new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "^", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }), + new Tree(null, "u", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "c", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "`", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "#", new Tree[] { })})})})})}), + new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }), + new Tree(null, "u", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "l", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "l", new Tree[] { })})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { }), + new Tree(null, "*", new Tree[] { })})})})})})})}), + new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { })})})})})})})})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { }), + new Tree(null, "+", new Tree[] { })})})})})})})}), + new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { })})})})})})})})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})}), + new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })})})})})})})}), + new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { })})})}), + new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }), + new Tree(null, "l", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }), + new Tree(null, "t", new Tree[] { })})})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })})})})})})})})})}), + new Tree(null, "!::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, " ", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { }), + new Tree(null, "/", new Tree[] { })})})}), + new Tree(null, "*", new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "~", new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "\n", new Tree[] { })})})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\n", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\n", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\r", new Tree[] { })})})})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), + new Tree(null, "n", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "-", new Tree[] { new Tree(null, "a", new Tree[] { }), + new Tree(null, "z", new Tree[] { })}), + new Tree(null, "-", new Tree[] { new Tree(null, "A", new Tree[] { }), + new Tree(null, "Z", new Tree[] { })}), + new Tree(null, "-", new Tree[] { new Tree(null, "0", new Tree[] { }), + new Tree(null, "9", new Tree[] { })}), + new Tree(null, "range0", new Tree[] { new Tree(null, "_", new Tree[] { })})})})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "r", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "++", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), + new Tree(null, "n", new Tree[] { })})})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "f", new Tree[] { }), + new Tree(null, "y", new Tree[] { })})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }), + new Tree(null, "u", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\"", new Tree[] { })})})}), + new Tree(null, "*", new Tree[] { new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "~", new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "\"", new Tree[] { })}), + new Tree(null, "range0", new Tree[] { new Tree(null, "\\", new Tree[] { })})})})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "c", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "p", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})})})})})})})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\"", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }), + new Tree(null, "i", new Tree[] { }), + new Tree(null, "f", new Tree[] { }), + new Tree(null, "y", new Tree[] { })})})})})})})}), + new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "c", new Tree[] { }), + new Tree(null, "a", new Tree[] { }), + new Tree(null, "p", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\\", new Tree[] { }), + new Tree(null, "n", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\n", new Tree[] { })})})}), + new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\\", new Tree[] { }), + new Tree(null, "r", new Tree[] { })})})})}), + new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\r", new Tree[] { })})})}), + new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\\", new Tree[] { })})})}), + new Tree(null, "range", new Tree[] { new Tree(null, "~", new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "n", new Tree[] { })}), + new Tree(null, "range0", new Tree[] { new Tree(null, "r", new Tree[] { })})})})})})})})})})})}), + new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { })})}) + // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED + ; +} + + + + + + diff --git a/src/edu/berkeley/sbp/misc/ReflectiveWalker.java b/src/edu/berkeley/sbp/misc/ReflectiveWalker.java new file mode 100644 index 0000000..2334d62 --- /dev/null +++ b/src/edu/berkeley/sbp/misc/ReflectiveWalker.java @@ -0,0 +1,100 @@ +package edu.berkeley.sbp.misc; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; + +public class ReflectiveWalker extends StringWalker { + public ReflectiveWalker() { this.target = this; } + public ReflectiveWalker(Object target) { this.target = target; } + private final Object target; + private String normalize(String s) { + StringBuffer ret = new StringBuffer(); + for(int i=0; i= '0' && c <= '9') { ret.append('_'); ret.append(c); continue; } + switch(c) { + case ' ': ret.append("_space_"); break; + case '~': ret.append("_tilde_"); break; + case ';': ret.append("_semicolon_"); break; + case '=': ret.append("_equals_"); break; + case '-': ret.append("_minus_"); break; + case ')': ret.append("_rightparen_"); break; + case '(': ret.append("_leftparen_"); break; + case '!': ret.append("_bang_"); break; + case '`': ret.append("_backtick_"); break; + case '\"': ret.append("_quotes_"); break; + case '\'': ret.append("_quote_"); break; + case ',': ret.append("_comma_"); break; + case '.': ret.append("_dot_"); break; + case '>': ret.append("_greater_"); break; + case '<': ret.append("_less_"); break; + case '&': ret.append("_amp_"); break; + case '@': ret.append("_at_"); break; + case '#': ret.append("_hash_"); break; + case '|': ret.append("_pipe_"); break; + case '^': ret.append("_caret_"); break; + case '%': ret.append("_percent_"); break; + case '$': ret.append("_dollar_"); break; + case ':': ret.append("_colon_"); break; + case '?': ret.append("_question_"); break; + case '/': ret.append("_slash_"); break; + case '\\': ret.append("_backslash_"); break; + case '*': ret.append("_star_"); break; + case '+': ret.append("_plus_"); break; + case '_': ret.append("_underscore_"); break; + case '[': ret.append("_leftbracket_"); break; + case ']': ret.append("_rightbracket_"); break; + case '{': ret.append("_leftbrace_"); break; + case '}': ret.append("_rightbrace_"); break; + default: ret.append(c); break; + } + } + return ret.toString(); + } + public Object walk(String tag, Object[] argo) { + if (argo.length==0) return super.walk(tag, argo); + if (argo==null) return tag; + if (tag==null || "".equals(tag)) return argo; + Member m = member(normalize(tag), argo.length); + //System.out.println("preparing to invoke method " + (m==null ? "null" : (m.toString())) + " for sequence " + (owner()+"."+tag)); + if (m != null) return Reflection.fuzzyInvoke(target, m, argo); + if (argo.length==0) return null; + if (argo.length==1) return argo[0]; + Class c = argo[0].getClass(); + for(Object o : argo) c = Reflection.lub(c, o.getClass()); + Object[] ret = Reflection.newArray(c, argo.length); + System.arraycopy(argo, 0, ret, 0, argo.length); + return ret; + } + + public Member member(String methodName, int nonVoid) { + Class target = this.target.getClass(); + if (methodName == null || methodName.equals("")) return null; + Member ret = null; + for (Method m : target.getMethods()) { + if (!m.getName().equals(methodName)) continue; + if (m.getParameterTypes().length != nonVoid) continue; + if (ret != null) throw new Error("two methods with " + nonVoid + " parameters: " + target.getName() + "." + methodName); + ret = m; + } + if (ret != null) return ret; + Class t = target; + while(t != null) { + Class c = Reflection.forNameOrNull(t.getName() + "$" + methodName); + if (c != null) { + for (Constructor m : c.getConstructors()) { + if (m.getParameterTypes().length != nonVoid) continue; + if (ret != null) throw new Error("two constructors with " + nonVoid + " parameters: " + c.getName() + ".()"); + ret = m; + } + if (ret != null) return ret; + } + t = t.getSuperclass(); + } + if (ret != null) return ret; + throw new Error("while computing return type of " +methodName+ " could not find method with name " + methodName + + " and " + nonVoid + " arguments"); + } +} diff --git a/src/edu/berkeley/sbp/misc/RegressionTests.java b/src/edu/berkeley/sbp/misc/RegressionTests.java new file mode 100644 index 0000000..85a526b --- /dev/null +++ b/src/edu/berkeley/sbp/misc/RegressionTests.java @@ -0,0 +1,164 @@ +package edu.berkeley.sbp.misc; +import java.io.*; +import java.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.misc.*; +import edu.berkeley.sbp.*; + +// priorities are all messy and dont get serialized +// 1. Error messages +// 2. Java MetaGrammar (proof of concept) +// 3. Ivan's MetaGrammar +// 4. Documentation format +// - TIB + +// TODO: better API for interfacing with Java +// TODO: error messages +// TODO: integrate with TIB + +// Element +// Walk +// ParseTable / GSS +// MetaGrammar (necessary/relevant?) +// Tree (cleanup?) +// Union.SubUnion +// Repeat + +// FEATURE: serialization of ParseTable's, generation of Java code +// FEATURE: infer reject elements for literals +// FEATURE: prefer whitespace higher up +// FEATURE: full conjunctive and boolean grammars +// FEATURE: "ambiguity modulo dropped fragments"? can this be checked for statically? eliminated statically? +// - drop stuff during the parsing process (drop nodes) + +// LATER: Element
-- parameterize over the input token type? Makes a huge mess... +// LATER: Go back to where Sequence is not an Element? +// - The original motivation for making Sequence "first class" was the fact that +// in order to do associativity right you need to have per-Sequence follow sets + +public class RegressionTests { + + public static boolean yes = false; + public static class MyWalker extends ReflectiveWalker { + public String top(Object[] o) { return "top("+join(o)+")"; } + public String str(String[] s) { String ret = ""; for(String st : s) ret += st; return ret; } + public String join(Object[] o) { String ret = ""; for(Object st : o) ret += st; return ret; } + public String whilex(Object s, Object y) { return "while("+s+") " + y; } + public String seq(Object[] statements) { + String ret = ""; + for(Object s : statements) ret += s + ";\n"; + return ret; + } + /* + public String bl(String s) { return "{" + s + "}"; } + */ + }; + + public static void main(String[] s) throws Exception { + try { + boolean profile = false; + if (s[0].equals("-profile")) { + profile = true; + String[] s2 = new String[s.length-1]; + System.arraycopy(s, 1, s2, 0, s2.length); + s = s2; + } + + Tree res = new Parser(MetaGrammar.make(), CharToken.top()).parse1(new CharToken.Stream(new InputStreamReader(new FileInputStream(s[0])))); + Union meta = ((MetaGrammar)new MetaGrammar().walk(res)).done(); + SequenceInputStream sis = new SequenceInputStream(new FileInputStream(s[0]), new FileInputStream(s[1])); + res = new Parser(meta, CharToken.top()).parse1(new CharToken.Stream(new InputStreamReader(sis), "parsing " + s[1] + " using " + s[0])); + Union testcasegrammar = ((MetaGrammar)new MetaGrammar("ts").walk(res)).done("ts"); + if (testcasegrammar==null) return; + CharToken.Stream cs = new CharToken.Stream(new InputStreamReader(new FileInputStream(s[2])), "parsing " + s[2] + " using " + s[1]); + Parser parser = new Parser(testcasegrammar, CharToken.top()); + + if (profile) { + System.out.println("\nready..."); + System.in.read(); + } + Forest r2 = parser.parse(cs); + if (profile) { + System.out.println("\ndone"); + System.in.read(); + System.exit(0); + } + for(TestCase tc : (TestCase[])new TestCaseBuilder().walk(r2.expand1())) tc.execute(); + + } catch (Throwable t) { + System.err.println("\n\nexception thrown, class == " + t.getClass().getName()); + System.err.println(t); + System.err.println(); + t.printStackTrace(); + System.err.println(); + } + } + + public static class TestCase { + public final String input; + public final String[] output; + public final Union grammar; + public TestCase(String input, String[] output, Union grammar) { + this.input = input; + this.output = output; + this.grammar = grammar; + } + public String toString() { + String ret = "testcase {\n" + " input \""+input+"\";\n"; + for(String s : output) ret += " output \""+s+"\";\n"; + ret += grammar +"\n}\n"; + return ret; + } + public boolean execute() throws Exception { + Forest res = new Parser(grammar, + CharToken.top()).parse(new CharToken.Stream(new StringReader(input), input.indexOf('\n')==-1?"\""+input+"\": ":"")); + Collection> results = res==null ? new HashSet>() : res.expand(false); + System.out.print("\r"); + if (results.size() == 0 && output.length > 0) { + System.out.print("\033[31m"); + System.out.println("PARSE FAILED"); + System.out.print("\033[0m"); + } else { + System.out.println("\r \r"); + } + HashSet outs = new HashSet(); + for(String s : output) outs.add(s.trim()); + boolean bad = false; + for (Tree r : results) { + String s = r.toString().trim(); + if (outs.contains(s)) { outs.remove(s); continue; } + System.out.print("\033[33m"); + System.out.println(" GOT: " + s); + bad = true; + } + for(String s : outs) { + System.out.print("\033[31m"); + System.out.println("EXPECTED: " + s); + bad = true; + } + if (bad) { + System.out.print("\033[0m"); + return true; + } + System.out.println("\033[32mPASS\033[0m"); + return false; + } + } + + public static class TestCaseBuilder extends MetaGrammar { + public TestCase[] ts(Object o1, TestCase[] ts, Object o2) { return ts; } + public TestCase testcase(String input, String[] output, Union grammar) { return new TestCase(input, output, grammar); } + public MetaGrammar grammar(Object[] o) { return this; } + public Object walk(String tag, Object[] args) { + if ("testcase".equals(tag)) { + if (args.length==2) return testcase((String)args[0], new String[0], (Union)args[1]); + return testcase((String)args[0], (String[])args[1], (Union)args[2]); } + else if ("grammar".equals(tag)) return done("s"); + else return super.walk(tag, args); + } + } + + private static String pad(int i,String s) { return s.length() >= i ? s : pad(i-1,s)+" "; } +} + diff --git a/src/edu/berkeley/sbp/misc/StringWalker.java b/src/edu/berkeley/sbp/misc/StringWalker.java new file mode 100644 index 0000000..923c639 --- /dev/null +++ b/src/edu/berkeley/sbp/misc/StringWalker.java @@ -0,0 +1,15 @@ +package edu.berkeley.sbp.misc; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; + +public abstract class StringWalker extends TreeWalker { + public Object walk(Tree tree) { return super.walk(tree); } + public Object walk(String tag, Object[] tokens) { + if (tokens.length==0) return tag; + if (tag==null) return null; + throw new Error("walker error: couldn't walk tag " + tag + " with " + tokens.length + " children"); + } +} diff --git a/src/edu/berkeley/sbp/misc/TreeWalker.java b/src/edu/berkeley/sbp/misc/TreeWalker.java new file mode 100644 index 0000000..38cbb81 --- /dev/null +++ b/src/edu/berkeley/sbp/misc/TreeWalker.java @@ -0,0 +1,20 @@ +package edu.berkeley.sbp.misc; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; + +public abstract class TreeWalker { + public abstract Object walk(T head, Object[] args); + public Object walk(Tree tree) { + Object[] args = new Object[tree.numChildren()]; + int i = 0; + for(Tree child : tree.children()) args[i++] = walk(child); + args = Reflection.lub(args); + return walk(tree.head(), args); + } +} diff --git a/src/edu/berkeley/sbp/package.html b/src/edu/berkeley/sbp/package.html new file mode 100644 index 0000000..b712dd9 --- /dev/null +++ b/src/edu/berkeley/sbp/package.html @@ -0,0 +1,3 @@ + +IMPORTANT: BE SURE TO READ THE FILE doc/jargon.txt FIRST! + diff --git a/src/edu/berkeley/sbp/tib/Braces.java b/src/edu/berkeley/sbp/tib/Braces.java new file mode 100644 index 0000000..74a3dab --- /dev/null +++ b/src/edu/berkeley/sbp/tib/Braces.java @@ -0,0 +1,41 @@ +package edu.berkeley.sbp.tib; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.Sequence.Position; +import edu.berkeley.sbp.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; + +public class Braces {}/*extends Union { + + private static final Element left = CharToken.string("{"); + private static final Element right = CharToken.string("}"); + + public static String join(Object[] e) { + StringBuffer ret = new StringBuffer(); + for(int i=0; i0) ret.append(" "); + ret.append(e[i]); + } + return ret.toString(); + } + + public Braces(Element[] e, Element sep) { + super("{"+join(e)+"}"); + Element[] e2 = new Element[sep == null ? e.length+2 : e.length + 4]; + e2[0] = left; + e2[e2.length-1] = right; + if (sep != null) { + e2[1] = sep; + e2[e2.length-2] = sep; + } + for(int i=0; i*/ { + /* + + private String str; + + public Tib(InputStream is) { this(new BufferedReader(new InputStreamReader(is))); } + public Tib(BufferedReader br) { + Block b = parse(br); + } + + public Token next() throws IOException { + if (pos >= str.length()) return Atom.EOF; + return Atom.fromChar(str.charAt(pos++)); + } + + public static Block parse(BufferedReader br) throws Invalid { + int row=0, col=0; + try { + boolean blankLine = false; + Block top = new Block.Root(); + for(String s = br.readLine(); s != null; s = br.readLine()) { + col = 0; + while (s.length() > 0 && + s.charAt(0) == ' ' && + (!(top instanceof Block.Literal) || col < top.col)) { col++; s = s.substring(1); } + if ((top instanceof Block.Literal) && col >= top.col) { top.add(s); continue; } + if (s.length()==0) { blankLine = true; continue; } + while (col < top.col) { + if (s.startsWith("{}") && top instanceof Block.Literal && ((Block.Literal)top).braceCol == col) break; + blankLine = false; + top = top.closeIndent(); + } + if (s.startsWith("{}")) { + int bc = col; + boolean append = top instanceof Block.Literal && ((Block.Literal)top).braceCol == bc; + s = s.substring(2); + col += 2; + while (s.length() > 0 && s.charAt(0) == ' ' && !(append && col >= top.col) ) { col++; s = s.substring(1); } + if (append) top.add(s); else (top = new Block.Literal(top, row, col, bc)).add(s); + continue; + } + while (s.length() > 0 && s.charAt(s.length()-1)==' ') { s = s.substring(0, s.length()-1); } + if (col > top.col) top = new Block.Indent(top, row, col); + else if (blankLine) { top = top.closeIndent(); top = new Block.Indent(top, row, col); } + blankLine = false; + for(int i=0; i result() { + // FIXME + } + + public Location getLocation() { return new Location.Cartesian(row, col); } + public boolean isEOF() { return false; } + + public int size() { return children.size(); } + public Object child(int i) { return children.elementAt(i); } + public boolean isLiteral() { return false; } + + protected Block(int row, int col) { this.row=row; this.col=col; parent = null; } + public Block(Block parent, int row, int col) { this.row=row; this.col=col; (this.parent = parent).add(this); } + + public void add(String s) { children.addElement(s); } + public void add(char c) { + if (c == '{' || c == '}') { finishWord(); return; } + if (c != ' ') { pending += c; return; } + if (pending.length() > 0) { finishWord(); add(" "); return; } + if (size()==0) return; + if (child(size()-1).equals(" ")) return; + add(" "); + return; + } + + public void add(Block b) { children.addElement(b); } + public Block promote() { parent.parent.replaceLast(this); return close(); } + public Object lastChild() { return children.lastElement(); } + public Block lastChildAsBlock() { return (Block)lastChild(); } + public void replaceLast(Block b) { children.setElementAt(b, children.size()-1); b.parent = this; } + + public void finishWord() { if (pending.length() > 0) { add(pending); pending = ""; } } + + public Block closeBrace() { throw new InternalException("attempt to closeBrace() a "+getClass().getName()); } + public Block closeIndent() { throw new InternalException("attempt to closeIndent() a "+getClass().getName()); } + public Block close() { + while(size() > 0 && child(size()-1).equals(" ")) children.setSize(children.size()-1); + if (size()==0) throw new InternalException("PARSER BUG: attempt to close an empty block (should never happen)"); + if (size() > 1 || !(lastChild() instanceof Block)) return parent; + return lastChildAsBlock().promote(); + } + public String toString() { return toString(80); } + public String toString(int justificationLimit) { return toString(0, 80); } + protected String toString(int indent, int justificationLimit) { + StringBuffer ret = new StringBuffer(); + StringBuffer line = new StringBuffer(); + for(int i=0; i0 && children.elementAt(i-1) instanceof Block && justificationLimit!=-1) ret.append("\n"); + if (o instanceof Block) { + ret.append(justify(line.toString(), indent, justificationLimit)); + line.setLength(0); + if (justificationLimit==-1) { + ret.append("{"); + ret.append(((Block)o).toString(indent+2, justificationLimit)); + ret.append("}"); + } else { + ret.append(((Block)o).toString(indent+2, justificationLimit)); + } + } else { + line.append(o.toString()); + } + } + ret.append(justify(line.toString(), indent, justificationLimit)); + return ret.toString(); + } + + private static class Root extends Block { + public Root() { super(0, Integer.MIN_VALUE); } + public Block close() { throw new InternalException("attempted to close top block"); } + public String toString(int justificationLimit) { return toString(-2, justificationLimit); } + } + + private static class Brace extends Block { + public Brace(Block parent, int row, int col) { super(parent, row, col); } + public Block closeBrace() { return super.close(); } + } + + private static class Indent extends Block { + public Indent(Block parent, int row, int col) { super(parent, row, col); } + public Block closeIndent() { return super.close(); } + } + + private static class Literal extends Block { + private StringBuffer content = new StringBuffer(); + public final int braceCol; + public Literal(Block parent, int row, int col, int braceCol) { super(parent,row,col); this.braceCol = braceCol; } + public boolean isLiteral() { return true; } + public int size() { return 1; } + public Object child(int i) { return i==0 ? content.toString() : null; } + public Block close() { return parent; } + public Block closeIndent() { return close(); } + public void add(String s) { if (content.length()>0) content.append('\n'); content.append(s); } + protected String toString(int indent, int justificationLimit) { + StringBuffer ret = new StringBuffer(); + String s = content.toString(); + while(s.length() > 0) { + int nl = s.indexOf('\n'); + if (nl==-1) nl = s.length(); + ret.append(spaces(indent)); + ret.append("{} "); + ret.append(s.substring(0, nl)); + s = s.substring(Math.min(s.length(),nl+1)); + ret.append('\n'); + } + return ret.toString(); + } + } + } + + + // Exceptions ////////////////////////////////////////////////////////////////////////////// + + private static class InternalException extends RuntimeException { public InternalException(String s) { super(s); } } + public static class Invalid extends IOException { + public Invalid(InternalException ie, int row, int col) { + super(ie.getMessage() + " at " + row + ":" + col); + } + } + + // Testing ////////////////////////////////////////////////////////////////////////////// + + public static void main(String[] s) throws Exception { System.out.println(parse(new Stream(System.in)).toString(-1)); } + + // Utilities ////////////////////////////////////////////////////////////////////////////// + + public static String spaces(int i) { if (i<=0) return ""; return " " + spaces(i-1); } + + private static String justify(String s, int indent, int justificationLimit) { + if (s.length() == 0) return ""; + if (justificationLimit==-1) return s; + StringBuffer ret = new StringBuffer(); + while(s.length() > 0) { + if (s.charAt(0) == ' ') { s = s.substring(1); continue; } + ret.append(spaces(indent)); + int i = s.indexOf(' '); + if (i==-1) i = s.length(); + while(s.indexOf(' ', i+1) != -1 && s.indexOf(' ', i+1) < justificationLimit-indent) i = s.indexOf(' ', i+1); + if (s.length() + indent < justificationLimit) i = s.length(); + ret.append(s.substring(0, i)); + s = s.substring(i); + ret.append('\n'); + } + return ret.toString(); + } + */ +} + diff --git a/src/edu/berkeley/sbp/tib/TibDoc.java b/src/edu/berkeley/sbp/tib/TibDoc.java new file mode 100644 index 0000000..504e3a4 --- /dev/null +++ b/src/edu/berkeley/sbp/tib/TibDoc.java @@ -0,0 +1,110 @@ +// Copyright 2005 the Contributors, as shown in the revision logs. +// Licensed under the Apache Public Source License 2.0 ("the License"). +// You may not use this file except in compliance with the License. + +package edu.berkeley.sbp.tib; +//import org.ibex.util.*; +//import org.ibex.io.*; +import java.util.*; +import java.io.*; + +public class TibDoc { + /* + public static enum Style { H, UL, TT, SO, IT, Q, B, PRE, LIST, EMDASH; } + + public static AST h(AST a) { return new Gather(a, Style.H); } + public static AST ul(AST a) { return new Gather(a, Style.UL); } + public static AST tt(AST a) { return new Gather(a, Style.TT); } + public static AST so(AST a) { return new Gather(a, Style.SO); } + public static AST it(AST a) { return new Gather(a, Style.IT); } + public static AST q(AST a) { return new Gather(a, Style.Q); } + public static AST b(AST a) { return new Gather(a, Style.B); } + public static AST pre(AST a) { return new Gather(a, Style.PRE); } + public static AST list(AST a) { return new Gather(a, Style.LIST); } + public static AST emdash() { return new Gather(Style.EMDASH); } + + public static AST seq(AST a) { return new Gather(a); } + + public static class Latex { + public static void emit(PrintWriter p, AST a) { + prefix(p); + emit(p, a, ""); + suffix(p); + } + public static void emit2(PrintWriter p, AST ast, String head) { + for(AST a = ast.getFirstChild(); a != null; a = a.getNextSibling()) emit(p, a, head); + } + public static void emit(PrintWriter p, AST ast, String head) { + if (!(ast instanceof Gather)) { + if (ast.getNumberOfChildren()==0) { + p.print(ast.getText()); + } else { + emit2(p, ast, head); + } + return; + } + Gather a = (Gather)ast; + if (a.style==null) { + emit2(p, a, head); + return; + } + switch(a.style) { + case H: p.println(); p.println(); p.print("\\"+head+"section{"); emit2(p, a, "sub"+head); p.println("}"); break; + case B: p.print("{\\bf{"); emit2(p, a, head); p.print("}}"); break; + case UL: p.print("{\\ul{"); emit2(p, a, head); p.print("}}"); break; + case IT: p.print("{\\it{"); emit2(p, a, head); p.print("}}"); break; + case TT: p.print("{\\tt{"); emit2(p, a, head); p.print("}}"); break; + case SO: p.print("{\\overstrike{"); emit2(p, a, head); p.print("}}"); break; + case Q: p.print("``"); emit2(p, a, head); p.print("''"); break; + case EMDASH: p.print(" \\emdash "); break; + case LIST: p.println(); p.println("\\startitemize[symbol]"); emit2(p, a, head); p.println("\\stopitemize"); break; + case PRE: + if (a.getFirstChild() != null) { + p.println(); + p.println("\\begin{verbatim}"); + p.println(a.getFirstChild().getText()); + p.println("\\end{verbatim}"); + } + } + } + public static void prefix(PrintWriter p) { + p.println("% generated by TIBDOC"); + for(int i=0; i implements Iterator, Iterable { + + private final T[] array; + private int i = 0; + + public ArrayIterator(T[] array) { this.array = array; } + + public void remove() { throw new Error(); } + public boolean hasNext() { return i iterator() { return this; } +} diff --git a/src/edu/berkeley/sbp/util/EmptyIterator.java b/src/edu/berkeley/sbp/util/EmptyIterator.java new file mode 100644 index 0000000..3c6d197 --- /dev/null +++ b/src/edu/berkeley/sbp/util/EmptyIterator.java @@ -0,0 +1,9 @@ +package edu.berkeley.sbp.util; +import java.util.*; + +public final class EmptyIterator implements Iterable, Iterator { + public void remove() { throw new Error(); } + public boolean hasNext() { return false; } + public T next() { throw new Error(); } + public Iterator iterator() { return this; } +} diff --git a/src/edu/berkeley/sbp/util/FastSet.java b/src/edu/berkeley/sbp/util/FastSet.java new file mode 100644 index 0000000..a433b7c --- /dev/null +++ b/src/edu/berkeley/sbp/util/FastSet.java @@ -0,0 +1,56 @@ +package edu.berkeley.sbp.util; +import java.util.*; + +public final class FastSet implements Iterator, Iterable { + + public static final int INITIAL_SIZE = 128; + + private Object[] array; + private T only = null; + private int i = 0; + private int size = 0; + + public Iterator iterator() { i=0; return this; } + public void remove() { throw new Error(); } + public boolean hasNext() { return only==null ? i s) { + if (s.size()==1) { only = s.iterator().next(); return; } + array = new Object[s.size()]; + for(T t : s) array[size++] = t; + } + + public int size() { return only==null ? size : 1; } + private void grow() { + Object[] array2 = array==null ? new Object[INITIAL_SIZE] : new Object[array.length * 2]; + if (array != null) System.arraycopy(array, 0, array2, 0, array.length); + array = array2; + if (only!=null) { + array[size++] = only; + only = null; + } + } + public void add(T t, boolean check) { + if (check) for(Object o : this) if (o.equals(t)) return; + add(t); + } + public void add(T t) { + if (array==null) { + if (only!=null) { only = t; return; } + grow(); + } else if (size>=array.length-1) { + grow(); + } + array[size++] = t; + } + + public boolean contains(T t) { + if (t==only) return true; + if (array==null) return false; + for(Object o : array) if (o==t) return true; + return false; + } +} diff --git a/src/edu/berkeley/sbp/util/HashMapBag.java b/src/edu/berkeley/sbp/util/HashMapBag.java new file mode 100644 index 0000000..5430a8f --- /dev/null +++ b/src/edu/berkeley/sbp/util/HashMapBag.java @@ -0,0 +1,26 @@ +package edu.berkeley.sbp.util; +import java.util.*; + +/** a mapping from keys of type K to sets of values of type T */ +public final class HashMapBag implements MapBag { + + private final HashMap> hm = new HashMap>(); + + public void add(K k, V v) { + HashSet hs = hm.get(k); + if (hs==null) hm.put(k, hs = new HashSet()); + hs.add(v); + } + + public void addAll(K k, Iterable iv) { + for(V v : iv) add(k, v); + } + + public HashSet getAll(K k) { + HashSet ret = hm.get(k); + if (ret==null) return new HashSet(); + return ret; + } + + public Iterator iterator() { return hm.keySet().iterator(); } +} diff --git a/src/edu/berkeley/sbp/util/IntegerTopology.java b/src/edu/berkeley/sbp/util/IntegerTopology.java new file mode 100644 index 0000000..e9f01df --- /dev/null +++ b/src/edu/berkeley/sbp/util/IntegerTopology.java @@ -0,0 +1,76 @@ +package edu.berkeley.sbp.util; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; + +/** implementation of Topology for any class for which there is a mapping to the ints */ +public class IntegerTopology implements Topology { + private final Range.Set rs; + + public Range.Set getRanges() { return rs; /*FIXME: copy?*/ } + + public IntegerTopology() { this(new Range.Set()); } + public IntegerTopology(V v) { this(v.toInt()); } + public IntegerTopology(V a, V b) { this(a.toInt(), b.toInt()); } + public IntegerTopology(int a) { this(a, a); } + public IntegerTopology(int a, int b) { this(new Range(a, b)); } + public IntegerTopology(Range r) { this(new Range.Set(r)); } + public IntegerTopology(Range.Set rs) { this.rs = rs; } + + public Topology fresh() { return new IntegerTopology(); } + public Topology dup() { return new IntegerTopology(this.rs); } + public Topology dup(Range.Set rs) { return new IntegerTopology(rs); } + + public void add(Topology t) { rs.add(((IntegerTopology)t).rs); } + public void remove(Topology t) { rs.remove(((IntegerTopology)t).rs); } + public void add(V v) { rs.add(v.toInt()); } + public void remove(V v) { rs.remove(v.toInt()); } + public boolean contains(V v) { return rs.contains(v.toInt()); } + + public Topology complement() { return dup(rs.complement()); } + public Topology intersect(Topology t) { return dup(rs.intersect(((IntegerTopology)t).rs)); } + public Topology minus(Topology t) { return dup(rs.intersect(((IntegerTopology)t).rs.complement())); } + public Topology union(Topology t) { return dup(rs.union(((IntegerTopology)t).rs)); } + public boolean disjoint(Topology t) { return rs.intersect(((IntegerTopology)t).rs).size()==0; } + public boolean containsAll(Topology t) { return rs.intersect(((IntegerTopology)t).rs).equals(((IntegerTopology)t).rs); } + + public int hashCode() { return rs.hashCode(); } + public boolean equals(Object o) { return o!=null && o instanceof IntegerTopology && ((IntegerTopology)o).rs.equals(rs); } + + // FIXME: this is currently char-range specific + /* + public String toString() { + String classname = this.getClass().getName().replace('$', '.'); + if (rs==null) return "new " + classname + "()"; + StringBuffer sb = new StringBuffer(); + sb.append("new "); + sb.append(classname); + sb.append("(new Range.Set(new Range[] { "); + for(Range r : rs) { + sb.append("new Range("); + if (r.isMinNegInf() && r.isMaxPosInf()) { + sb.append("true, true"); + } else if (r.isMinNegInf()) { + sb.append("true, "); + sb.append(r.getMax()); + } else if (r.isMaxPosInf()) { + sb.append(r.getMin()); + sb.append(", true"); + } else { + sb.append(r.getMin()); + sb.append(", "); + sb.append(r.getMax()); + } + sb.append(")"); + } + sb.append("new Range() }))"); + return sb.toString(); + } + */ + public static interface IntegerMappable { + public int toInt(); + } +} diff --git a/src/edu/berkeley/sbp/util/MapBag.java b/src/edu/berkeley/sbp/util/MapBag.java new file mode 100644 index 0000000..f1da08c --- /dev/null +++ b/src/edu/berkeley/sbp/util/MapBag.java @@ -0,0 +1,10 @@ +package edu.berkeley.sbp.util; +import java.util.*; + +/** a mapping from keys of type K to sets of values of type V */ +public interface MapBag extends Iterable { + public void add(K k, V v); + public void addAll(K k, Iterable iv); + public Iterable getAll(K k); + public Iterator iterator(); +} diff --git a/src/edu/berkeley/sbp/util/Range.java b/src/edu/berkeley/sbp/util/Range.java new file mode 100644 index 0000000..399d2bb --- /dev/null +++ b/src/edu/berkeley/sbp/util/Range.java @@ -0,0 +1,737 @@ +// Taken from com.onionnetworks.util (BSD license) +// Many thanks, Justin and Ry4an! + +/* + * Common Java Utilities + * + * Copyright (C) 2000-2001 Justin Chapweske (justin@chapweske.com) + * Copyright (C) 2000-2001 Ry4an Brase (ry4an@ry4an.org) + * Copyright (C) 2001 Onion Networks + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +package edu.berkeley.sbp.util; +import java.util.*; +import java.text.*; + +/** + * This class represents a range of integers (incuding positive and negative + * infinity). + */ +public class Range { + + private boolean negInf, posInf; + private long min,max; + + /** + * Creates a new Range that is only one number, both min and max will + * equal that number. + * @param num The number that this range will encompass. + */ + public Range(long num) { + this(num,num,false,false); + } + + /** + * Creates a new Range from min and max (inclusive) + * @param min The min value of the range. + * @param max The max value of the range. + */ + public Range(long min, long max) { + this(min,max,false,false); + } + + /** + * Creates a new Range from min to postive infinity + * @param min The min value of the range. + * @param posInf Must be true to specify max == positive infinity + */ + public Range(long min, boolean posInf) { + this(min,Long.MAX_VALUE,false,posInf); + if (!posInf) { + throw new IllegalArgumentException("posInf must be true"); + } + } + + /** + * Creates a new Range from negative infinity to max. + * @param negInf Must be true to specify min == negative infinity + * @param max The max value of the range. + */ + public Range(boolean negInf, long max) { + this(Long.MIN_VALUE,max,negInf,false); + if (!negInf) { + throw new IllegalArgumentException("negInf must be true"); + } + } + + /** + * Creates a new Range from negative infinity to positive infinity. + * @param negInf must be true. + * @param posInf must be true. + */ + public Range(boolean negInf, boolean posInf) { + this(Long.MIN_VALUE,Long.MAX_VALUE,negInf,posInf); + if (!negInf || !posInf) { + throw new IllegalArgumentException + ("negInf && posInf must be true"); + } + } + + private Range(long min, long max, boolean negInf, boolean posInf) { + if (min > max) { + throw new IllegalArgumentException + ("min cannot be greater than max"); + } + // very common bug, its worth reporting for now. + if (min == 0 && max == 0) { + System.err.println("Range.debug: 0-0 range detected. "+ + "Did you intend to this? :"); + new Exception().printStackTrace(); + } + this.min = min; + this.max = max; + this.negInf = negInf; + this.posInf = posInf; + } + + /** + * @return true if min is negative infinity. + */ + public boolean isMinNegInf() { + return negInf; + } + + /** + * @return true if max is positive infinity. + */ + public boolean isMaxPosInf() { + return posInf; + } + + /** + * @return the min value of the range. + */ + public long getMin() { + return min; + } + + /** + * @return the max value of the range. + */ + public long getMax() { + return max; + } + + /** + * @return The size of the range (min and max inclusive) or -1 if the range + * is infinitly long. + */ + public long size() { + if (negInf || posInf) { + return -1; + } + return max-min+1; + } + + /** + * @param i The integer to check to see if it is in the range. + * @return true if i is in the range (min and max inclusive) + */ + public boolean contains(long i) { + return i >= min && i <= max; + } + + /** + * @param r The range to check to see if it is in this range. + * @return true if this range contains the entirety of the passed range. + */ + public boolean contains(Range r) { + return r.min >= min && r.max <= max; + } + + + public int hashCode() { + return (int) (min + 23 * max); + } + + public boolean equals(Object obj) { + if (obj instanceof Range && + ((Range) obj).min == min && ((Range) obj).max == max && + ((Range) obj).negInf == negInf && ((Range) obj).posInf == posInf) { + return true; + } else { + return false; + } + } + + public String toString() { + if (!negInf && !posInf && min == max) { + return new Long(min).toString(); + } else { + return (negInf ? "(" : ""+min) + "-" + (posInf ? ")" : ""+max); + } + } + + /** + * This method creates a new range from a String. + * Allowable characters are all integer values, "-", ")", and "(". The + * open and closed parens indicate positive and negative infinity. + *
+     * Example strings would be:
+     * "11" is the range that only includes 11
+     * "-6" is the range that only includes -6
+     * "10-20" is the range 10 through 20 (inclusive)
+     * "-10--5" is the range -10 through -5
+     * "(-20" is the range negative infinity through 20
+     * "30-)" is the range 30 through positive infinity.
+     * 
+ * @param s The String to parse + * @return The resulting range + * @throws ParseException, + */ + + public static final Range parse(String s) throws ParseException { + try { + long min=0,max=0; + boolean negInf=false,posInf=false; + // search from the 1 pos because it may be a negative number. + int dashPos = s.indexOf("-",1); + if (dashPos == -1) { // no dash, one value. + min = max = Long.parseLong(s); + } else { + if (s.indexOf("(") != -1) { + negInf = true; + } else { + min = Long.parseLong(s.substring(0,dashPos)); + } + if (s.indexOf(")") != -1) { + posInf = true; + } else { + max = Long.parseLong(s.substring(dashPos+1,s.length())); + } + } + if (negInf) { + if (posInf) { + return new Range(true,true); + } else { + return new Range(true,max); + } + } else if (posInf) { + return new Range(min,true); + } else { + return new Range(min,max); + } + } catch (RuntimeException e) { + throw new ParseException(e.getMessage(),-1); + } + } + + + /** + * This class represents a set of integers in a compact form by using ranges. + * This is essentially equivilent to run length encoding of a bitmap-based + * set and thus works very well for sets with long runs of integers, but is + * quite poor for sets with very short runs. + * + * This class is similar in flavor to Perl's IntSpan at + * http://world.std.com/~swmcd/steven/perl/lib/Set/IntSpan/ + * + * The Ranges use negative and positive infinity so there should be no + * border issues with standard set operations and they should behave + * exactly as you'd expect from your set identities. + * + * While the data structure itself should be quite efficient for its intended + * use, the actual implementation could be heavily optimized beyond what I've + * done, feel free to improve it. + * + * @author Justin F. Chapweske + */ + public static class Set implements Iterable { + + public static final int DEFAULT_CAPACITY = 16; + + boolean posInf, negInf; + int rangeCount; + long[] ranges; + + /** + * Creates a new empty Range.Set + */ + public Set() { + ranges = new long[DEFAULT_CAPACITY * 2]; + } + + /** + * Creates a new Range.Set and adds the provided Range + * @param r The range to add. + */ + public Set(Range r) { + this(); + add(r); + } + + public Set(Range[] ranges) { + this(); + for(Range r : ranges) add(r); + } + + /** + * @param rs The set with which to union with this set. + * @return A new set that represents the union of this and the passed set. + */ + public Range.Set union(Range.Set rs) { + // This should be rewritten to interleave the additions so that there + // is fewer midlist insertions. + Range.Set result = new Range.Set(); + result.add(this); + result.add(rs); + return result; + } + + /** + * @param rs The set with which to intersect with this set. + * @return new set that represents the intersct of this and the passed set. + */ + public Range.Set intersect(Range.Set rs) { + Range.Set result = complement(); + result.add(rs.complement()); + return result.complement(); + } + + /** + * @return The complement of this set, make sure to check for positive + * and negative infinity on the returned set. + */ + public Range.Set complement() { + Range.Set rs = new Range.Set(); + if (isEmpty()) { + rs.add(new Range(true,true)); + } else { + if (!negInf) { + rs.add(new Range(true,ranges[0]-1)); + } + for (int i=0;i 0) { + return true; + } + pos = -(pos+1); + if (pos % 2 == 0) { + return false; + } else { + return true; + } + } + + /** + * //FIX unit test + * Checks to see if this set contains all of the elements of the Range. + * + * @param r The Range to see if this Range.Set contains it. + * @return true If every element of the Range is within this set. + */ + public boolean contains(Range r) { + Range.Set rs = new Range.Set(); + rs.add(r); + return intersect(rs).equals(rs); + } + + /** + * Add all of the passed set's elements to this set. + * + * @param rs The set whose elements should be added to this set. + */ + public void add(Range.Set rs) { + for (Iterator it=rs.iterator();it.hasNext();) { + add((Range) it.next()); + } + } + + + /** + * Add this range to the set. + * + * @param r The range to add + */ + public void add(Range r) { + if (r.isMinNegInf()) { + negInf = true; + } + if (r.isMaxPosInf()) { + posInf = true; + } + add(r.getMin(),r.getMax()); + } + + /** + * Add a single integer to this set. + * + * @param i The int to add. + */ + public void add(long i) { + add(i,i); + } + + /** + * Add a range to the set. + * @param min The min of the range (inclusive) + * @param max The max of the range (inclusive) + */ + public void add(long min, long max) { + + if (min > max) { + throw new IllegalArgumentException + ("min cannot be greater than max"); + } + + if (rangeCount == 0) { // first value. + insert(min,max,0); + return; + } + + // This case should be the most common (insert at the end) so we will + // specifically check for it. Its +1 so that we make sure its not + // adjacent. Do the MIN_VALUE check to make sure we don't overflow + // the long. + if (min != Long.MIN_VALUE && min-1 > ranges[(rangeCount-1)*2+1]) { + insert(min,max,rangeCount); + return; + } + + // minPos and maxPos represent inclusive brackets around the various + // ranges that this new range encompasses. Anything within these + // brackets should be folded into the new range. + int minPos = getMinPos(min); + int maxPos = getMaxPos(max); + + // minPos and maxPos will switch order if we are either completely + // within another range or completely outside of any ranges. + if (minPos > maxPos) { + if (minPos % 2 == 0) { + // outside of any ranges, insert. + insert(min,max,minPos/2); + } else { + // completely inside a range, nop + } + } else { + combine(min,max,minPos/2,maxPos/2); + } + + } + + public void remove(Range.Set r) { + for (Iterator it=r.iterator();it.hasNext();) { + remove((Range) it.next()); + } + } + + public void remove(Range r) { + //FIX absolutely horrible implementation. + Range.Set rs = new Range.Set(); + rs.add(r); + rs = intersect(rs.complement()); + ranges = rs.ranges; + rangeCount = rs.rangeCount; + posInf = rs.posInf; + negInf = rs.negInf; + } + + public void remove(long i) { + remove(new Range(i,i)); + } + + public void remove(long min, long max) { + remove(new Range(min,max)); + } + + /** + * @return An iterator of Range objects that this Range.Set contains. + */ + public Iterator iterator() { + ArrayList l = new ArrayList(rangeCount); + for (int i=0;i=0;i--) { + if (arr1[start1+i] != arr2[start2+i]) { + return false; + } + } + return true; + } + + public static boolean arraysEqual(long[] arr1, int start1, + long[] arr2, int start2, int len) { + if (arr1 == arr2 && start1 == start2) { + return true; + } + for (int i=len-1;i>=0;i--) { + if (arr1[start1+i] != arr2[start2+i]) { + return false; + } + } + return true; + } + + public static boolean arraysEqual(char[] arr1, int start1, + char[] arr2, int start2, int len) { + if (arr1 == arr2 && start1 == start2) { + return true; + } + for (int i=len-1;i>=0;i--) { + if (arr1[start1+i] != arr2[start2+i]) { + return false; + } + } + return true; + } + + public static boolean arraysEqual(byte[] arr1, int start1, + byte[] arr2, int start2, int len) { + if (arr1 == arr2 && start1 == start2) { + return true; + } + for (int i=len-1;i>=0;i--) { + if (arr1[start1+i] != arr2[start2+i]) { + return false; + } + } + return true; + } + + + /** + * Outputs the Range in a manner that can be used to directly create + * a new range with the "parse" method. + */ + public String toString() { + StringBuffer sb = new StringBuffer(); + for (Iterator it=iterator();it.hasNext();) { + sb.append(it.next().toString()); + if (it.hasNext()) { + sb.append(","); + } + } + return sb.toString(); + } + + public Object clone() { + Range.Set rs = new Range.Set(); + rs.ranges = new long[ranges.length]; + System.arraycopy(ranges,0,rs.ranges,0,ranges.length); + rs.rangeCount = rangeCount; + rs.posInf = posInf; + rs.negInf = negInf; + return rs; + } + + private void combine(long min, long max, int minRange, int maxRange) { + // Fill in the new values into the "leftmost" range. + ranges[minRange*2] = Math.min(min,ranges[minRange*2]); + ranges[minRange*2+1] = Math.max(max,ranges[maxRange*2+1]); + + // shrink if necessary. + if (minRange != maxRange && maxRange != rangeCount-1) { + System.arraycopy(ranges,(maxRange+1)*2,ranges,(minRange+1)*2, + (rangeCount-1-maxRange)*2); + } + + rangeCount -= maxRange-minRange; + } + + + /** + * @return the position of the min element within the ranges. + */ + private int getMinPos(long min) { + // Search for min-1 so that adjacent ranges are included. + int pos = binarySearch(min == Long.MIN_VALUE ? min : min-1); + return pos >= 0 ? pos : -(pos+1); + } + + /** + * @return the position of the max element within the ranges. + */ + private int getMaxPos(long max) { + // Search for max+1 so that adjacent ranges are included. + int pos = binarySearch(max == Long.MAX_VALUE ? max : max+1); + // Return pos-1 if there isn't a direct hit because the max + // pos is inclusive. + return pos >= 0 ? pos : (-(pos+1))-1; + } + + /** + * @see java.util.Arrays#binarySearch + */ + private int binarySearch(long key) { + int low = 0; + int high = (rangeCount*2)-1; + + while (low <= high) { + int mid =(low + high)/2; + long midVal = ranges[mid]; + + if (midVal < key) { + low = mid + 1; + } else if (midVal > key) { + high = mid - 1; + } else { + return mid; // key found + } + } + return -(low + 1); // key not found. + } + + private void insert(long min, long max, int rangeNum) { + + // grow the array if necessary. + if (ranges.length == rangeCount*2) { + long[] newRanges = new long[ranges.length*2]; + System.arraycopy(ranges,0,newRanges,0,ranges.length); + ranges = newRanges; + } + + if (rangeNum != rangeCount) { + System.arraycopy(ranges,rangeNum*2,ranges,(rangeNum+1)*2, + (rangeCount-rangeNum)*2); + } + ranges[rangeNum*2] = min; + ranges[rangeNum*2+1] = max; + rangeCount++; + } + + /* + public static final void main(String[] args) throws Exception { + Range.Set rs = Range.Set.parse("5-10,15-20,25-30"); + BufferedReader br = new BufferedReader(new InputStreamReader + (System.in)); + while (true) { + System.out.println(rs.toString()); + String s = br.readLine(); + if (s.charAt(0) == '~') { + rs = rs.complement(); + } else if (s.charAt(0) == 'i') { + rs = rs.intersect(Range.Set.parse(br.readLine())); + } else { + rs.add(Range.Set.parse(s)); + } + } + } + */ + } +} + diff --git a/src/edu/berkeley/sbp/util/Reflection.java b/src/edu/berkeley/sbp/util/Reflection.java new file mode 100644 index 0000000..cf683f0 --- /dev/null +++ b/src/edu/berkeley/sbp/util/Reflection.java @@ -0,0 +1,122 @@ +package edu.berkeley.sbp.util; +import java.io.*; +import java.lang.reflect.*; + +/** Random reflection-related utilities */ +public final class Reflection { + + private static Object rebuild(Object o, Class c) { + //System.out.println("rebuild " + o + " (a " + (o==null?null:o.getClass().getName()) + ") " + c); + if (o==null || c.isAssignableFrom(o.getClass())) return o; + if ((c == Character.class || c == Character.TYPE) && o instanceof String && ((String)o).length()==1) return new Character(((String)o).charAt(0)); + if (o instanceof Character && c == String.class) return o+""; + if (o instanceof Object[]) { + Object[] a = (Object[])o; + if (c.isArray()) { + Object[] ret = (Object[])Array.newInstance(c.getComponentType(), a.length); + for(int i=0; iClass.forName that returns null instead of throwing an exception */ + public static Class forNameOrNull(String s) { + try { + return Class.forName(s); + } catch (ClassNotFoundException _) { + return null; + } + } + + /** invoke method/constructor m on object o with arguments args, and perform reasonable coercions as needed */ + public static Object fuzzyInvoke(Object o, Member m, Object[] args) { + try { + Class[] argTypes = m instanceof Method ? ((Method)m).getParameterTypes() : ((Constructor)m).getParameterTypes(); + boolean ok = true; + Object[] args2 = new Object[args.length]; + System.arraycopy(args, 0, args2, 0, args.length); + args = args2; + for(int i=0; i " + zoo(args[i])); + } else { + System.out.println(" arg => " + args[i] + (args[i]==null?"":(" (a " + args[i].getClass().getName() + ")"))); + } + } + */ + // FIXME: deal with the case where it is an inner class ctor + return m instanceof Method ? ((Method)m).invoke(o, args) : ((Constructor)m).newInstance(args); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private static String zoo(Object o) { + if (o==null) return "null"; + if (o instanceof Object[]) { + String ret = "[ "; + for(int j=0; j<((Object[])o).length; j++) + ret += zoo(((Object[])o)[j]) + " "; + return ret+"]"; + } + return o+""; + } + +} diff --git a/src/edu/berkeley/sbp/util/StringUtil.java b/src/edu/berkeley/sbp/util/StringUtil.java new file mode 100644 index 0000000..fc8f8e1 --- /dev/null +++ b/src/edu/berkeley/sbp/util/StringUtil.java @@ -0,0 +1,58 @@ +package edu.berkeley.sbp.util; + +/** miscellaneous string utilities */ +public class StringUtil { + public static String toJavaString(String s) { + StringBuffer sb = new StringBuffer(); + for(int i=0; iK to sets of values of type V */ +public class TopologicalBag implements MapBag,V> { + + // CRUCIAL INVARIANT: keys in this hashmap MUST be disjoint or the universe will implode + private final HashMap,HashSet> h = new HashMap,HashSet>(); + + public Iterator> iterator() { return h.keySet().iterator(); } + + public void addAll(TopologicalBag tb) { + for(Topology k : tb) + addAll(k, tb.getAll(k)); + } + + public void add(Topology t, V v) { put(t, v); } + public void addAll(Topology k, Iterable vi) { putAll(k, vi); } + + public void putAll(Topology k, Iterable vi) { for(V v : vi) put(k, v); } + public void put(Topology t, V v) { + for(Topology ht : h.keySet()) { + if (t.disjoint(ht)) continue; + if (t.equals(ht)) { + h.get(ht).add(v); + return; + } + if (ht.containsAll(t)) { + HashSet v0 = h.get(ht); + HashSet v1 = new HashSet(); + v1.addAll(v0); + h.remove(ht); + v1.add(v); + h.put(ht.intersect(t), v1); + h.put(ht.minus(t), v0); + return; + } + put(t.intersect(ht), v); + put(t.minus(ht), v); + return; + } + HashSet v1 = new HashSet(); + v1.add(v); + h.put(t, v1); + } + + + public TopologicalBag subset(Topology t) { + TopologicalBag ret = new TopologicalBag(); + for(Topology ht : h.keySet()) { + if (ht.disjoint(t)) continue; + ret.putAll(ht.intersect(t), h.get(ht)); + } + return ret; + } + + public Map,HashSet> gett(Topology t) { + HashMap,HashSet> ret = new HashMap,HashSet>(); + for(Topology ht : h.keySet()) { + if (ht.disjoint(t)) continue; + ret.put(ht.intersect(t), h.get(ht)); + } + return ret; + } + + public boolean empty(K k) { + for(Topology t : h.keySet()) + if (t.contains(k) && h.get(t).size() > 0) + return false; + return true; + } + + public boolean contains(K k) { return get(k).iterator().hasNext(); } + + public boolean contains(K k, V v) { + for(Topology t : h.keySet()) + if (t.contains(k)) + return h.get(t).contains(v); + return false; + } + + private HashMap> cache = new HashMap>(); + public Iterable getAll(Topology k) { return h.get(k); } + public Iterable get(K k) { + Iterable c = cache.get(k); + if (c != null) return c; + HashSet ret = null; + HashSet ret0 = null; + for(Topology t : h.keySet()) + if (t.contains(k)) { + if (ret==null) { + ret0 = ret = h.get(t); + } else { + if (ret0 != null) { + ret = new HashSet(); + ret.addAll(ret0); + ret0 = null; + } + ret.addAll(h.get(t)); + } + } + if (ret==null) { + cache.put(k, emptyIterator); + return emptyIterator; + } else { + cache.put(k, new FastSet(ret)); + return ret; + } + } + private final Iterable emptyIterator = new EmptyIterator(); +} diff --git a/src/edu/berkeley/sbp/util/Topology.java b/src/edu/berkeley/sbp/util/Topology.java new file mode 100644 index 0000000..4f36f08 --- /dev/null +++ b/src/edu/berkeley/sbp/util/Topology.java @@ -0,0 +1,29 @@ +package edu.berkeley.sbp.util; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; + +// FIXME: this should be a value class -- add/remove/etc should return new Topology objects +/** values inhabiting a topology over V (roughly, infinite sets of V's equipped with union/intersection/complement) */ +public interface Topology { + + public void add(Topology t); + public void add(V t); + public void remove(Topology t); + public void remove(V t); + public Topology dup(); + public boolean contains(V v); + public Topology fresh(); + + public Topology intersect(Topology t); + public Topology minus(Topology t); + public Topology union(Topology t); + public boolean disjoint(Topology t); + public boolean containsAll(Topology t); + + public abstract int hashCode(); + public abstract boolean equals(Object o); +} diff --git a/tests/meta.g b/tests/meta.g new file mode 100644 index 0000000..0920a7a --- /dev/null +++ b/tests/meta.g @@ -0,0 +1,54 @@ +s ::= w* Grammar w* => "gram" +Grammar ::= R+ => "grammar" +R ::= word ^"::=" Class+/gt + | word ^"!::=" Class+/gt + +ec ::= [~\]\\\-\~] | escaped + +Class ::= Rewrite +/ bar => "alternatives" + +Rewrite ::= Rewritex + | Rewritex ^"&" E+ + | Rewritex ^"&~" E+ + +Rewritex ::= E+ => "rewrite" + | E+ ^"=>" word + | E+ ^"=>" quoted + | E+ "=>" "()" => "wrap" + +range ::= ec => "range0" | ec ^"-" ec => "range0" +gt !::= ">" +bar !::= "|" +E ::= word => "nonTerminalY" + | [(][)] => "epsilon" + | ^"{" Class+/gt "}" + | "[" [\~]? range* "]" => "range" + | E ^"*/" E + | E ^"+/" E + | E ^"?" + | E ^"~/~" + + | E ^"-" E + + | ^"!" E + | "^" quoted => "care" + | ^"`" E + | E ^"#" + | quoted => "literal" + + | (E ^"**" > E ^"*") + | (E ^"++" > E ^"+") + + | "(" word ^")" + > ^"(" Class+/gt ")" + +w !::= " " + | "//" [~\n]* "\n" + | "\n" + | "\r" +an ::= [a-zA-Z0-9_] +word ::= an++ => "sify" +quoted ::= "\"" ([~\"\\] | escaped)* "\"" => "sify" +escaped ::= "\\n" => "\n" + | "\\r" => "\r" + | "\\" [~nr] diff --git a/tests/regression.tc b/tests/regression.tc new file mode 100644 index 0000000..040bf84 --- /dev/null +++ b/tests/regression.tc @@ -0,0 +1,305 @@ +//testcase { +// input "x"; +// output "a1:{x}"; +// +// s ::= a => a1 +// a ::= s => s1 +// a ::= ^"x" +//} +// +//testcase { +// input "x"; +// output "x"; +// output "s2:{s2:{s0 s0} x}"; +// output "s2:{s0 x}"; +// +// +// s ::= s s => s2 +// s ::= ^"x" +// s ::= () => s0 +//} + +testcase { + input "ab c"; + output "1:{{a b} {c}}"; + + s ::= ids + ids ::= id (" " ids &~ id [~]*) => "1" + | id ( ids &~ id [~]*) => "2" + | id + id ::= [a-z]++ +} + +testcase { + input "ab c"; + + output "2:{{a} 1:{{b} {c}}}"; + output "1:{{a b} {c}}"; + + s ::= ids + ids ::= id " " ids => "1" + | id ids => "2" + | id + id ::= [a-z]+ +} + +testcase { + input "aaabbbccc"; + output ""; + + s ::= ab & dc + ab ::= a b + dc ::= d c + a ::= "a" a | () + b ::= "b" b "c" | () + c ::= "c" c | () + d ::= "a" d "b" | () +} + +testcase { + input "aaabbbbccc"; + + s ::= ab & dc + ab !::= a b + dc !::= d c + a ::= "a" a | () + b ::= "b" b "c" | () + c ::= "c" c | () + d ::= "a" d "b" | () +} + +testcase { + input "12111211"; + output "ac:{{2 1 2 1}}"; + //output "a:{{2 1 2 1}}"; + //output "c:{{c:{1 1} c:{1 1}}}"; + + s ::= ab => "ab" + | ac => "ac" + | bc => "bc" + //| a => "a" + //| b => "b" + //| c => "c" + ab ::= a & b + ac ::= a & c + bc ::= b & c + a ::= ("1" x)* + b ::= (x "2" => "b")* + c ::= (x "2" x "1" => "c")* + x ::= [123] +} + +testcase { + input "xbambambam"; + output "bam:{a bam:{a bam:{a x}}}"; + + s ::= a s ^"bam" + s ::= ^"x" + a ::= () => "a" +} + +testcase { + input "baaaa"; + output "s2:{b0 a:{a:{epsilon}}}"; + output "b:{a:{a:{epsilon}} epsilon}"; + s ::= b t => "s2" + | ^"b" t b + t ::= ^"a" t "a" + | () => "epsilon" + b ::= "b" => "b0" + | () => "epsilon" +} + +testcase { + input "qaq"; + output "q:{a:{s1:{epsilon}}}"; + + s ::= ^"q" x "q" + x ::= ^"a" a + x ::= () => "epsilon" + a ::= x => "s1" +} + +testcase { + input "baa"; + output "s1:{a2:{a2:{a0 b0} b0}}"; + + s ::= "b" a => "s1" + a ::= "a" a b => "a2" + | () => "a0" + b ::= () => "b0" +} + +testcase { + input "aaa"; + + output "s3:{s3:{epsilon a0 epsilon epsilon} epsilon epsilon epsilon}"; + output "s3:{s3:{epsilon epsilon epsilon epsilon} a0 epsilon epsilon}"; + output "s3:{s3:{epsilon epsilon a0 epsilon} epsilon epsilon epsilon}"; + output "s3:{s3:{epsilon epsilon epsilon a0} epsilon epsilon epsilon}"; + output "s3:{epsilon epsilon a0 a0}"; + output "s3:{s3:{s3:{epsilon epsilon epsilon epsilon} epsilon epsilon epsilon} epsilon epsilon epsilon}"; + output "s3:{s3:{epsilon epsilon epsilon epsilon} epsilon epsilon a0}"; + output "s3:{s3:{epsilon epsilon epsilon epsilon} epsilon a0 epsilon}"; + output "s3:{epsilon a0 epsilon a0}"; + output "s3:{epsilon a0 a0 epsilon}"; + + s ::= "a" s a a a => "s3" + | () => "epsilon" + a ::= "a" => "a0" + | () => "epsilon" +} + +testcase { + input "aa"; + output "poo:{poo:{poox poox} poox}"; + output "poo:{poox poo:{poox poox}}"; + s ::= s s "a" => "poo" + s ::= () => "poox" +} + +testcase { + input "baa"; + output "s:{aa:{aa:{a b} b}}"; + s ::= "b" a => "s" + a ::= "a" a b => "aa" + a ::= () => "a" + b ::= () => "b" +} + +testcase { + input "aaab"; + output "sx:{b aa:{aa:{b b} b}}"; + s ::= b d "a" "b" => "sx" + s ::= "a" d "a" d => "sy" + d ::= "a" a b => "aa" + a ::= "a" b b => "aa" + a ::= () => "a" + b ::= () => "b" +} + +testcase { + input "a+(b*c)"; + output "+:{{a} *:{{b} {c}}}"; + + s ::= R + R ::= id + | R ^"*" R + | R ^"+" R + | "(" R ")" + id ::= [a-z]++ +} + +testcase { + input "a+b-d*c"; + output "plus:{stringify:{{a}} minus:{stringify:{{b}} times:{stringify:{{d}} stringify:{{c}}}}}"; + output "times:{plus:{stringify:{{a}} minus:{stringify:{{b}} stringify:{{d}}}} stringify:{{c}}}"; + output "plus:{stringify:{{a}} times:{minus:{stringify:{{b}} stringify:{{d}}} stringify:{{c}}}}"; + output "times:{minus:{plus:{stringify:{{a}} stringify:{{b}}} stringify:{{d}}} stringify:{{c}}}"; + output "minus:{plus:{stringify:{{a}} stringify:{{b}}} times:{stringify:{{d}} stringify:{{c}}}}"; + s ::= S + w ::= " " + L ::= id + S ::= L "=" Q => "assign" + | Q + Q ::= id + | L "=" Q => "assign" + | Q "-" Q => "minus" + | Q "+" Q => "plus" + | Q "*" Q => "times" + | "(" Q ")" + id ::= idl++ => "stringify" + idl ::= [a-d] +} + +testcase { + input "a*b*c"; + output "times:{stringify:{{a}} times:{stringify:{{b}} stringify:{{c}}}}"; + s ::= S + w ::= " " + L ::= id + S ::= L "=" R => "assign" + | R + R ::= L + | L "=" R => "assign" + | R "+" R => "plus" + | (R) "*" R => "times" + | "(" R ")" + | R R => "times" + id ::= idl++ => "stringify" + idl ::= [a-d] +} + +testcase { + input "a+b*c"; + output "plus:{stringify:{{a}} times:{stringify:{{b}} stringify:{{c}}}}"; + s ::= S + w ::= " " + L ::= id + S ::= L "=" R => "assign" + | R + R ::= L + | L "=" R => "assign" + | R "+" R => "plus" + > R "*" R => "times" + | "(" R ")" + | R R => "times" + id ::= idl++ => "stringify" + idl ::= [a-d] +} + +testcase { + + input " + + + while x>0 + while y>0 + foo() + bar() + + while x>0 + while y>0 + foo() + bar() + + +"; + output "smt:{while:{>:{{x} {0}} while:{>:{{y} {0}} sbb:{{f o o} {b a r}}}}}"; + output "smt:{while:{>:{{x} {0}} sbb:{while:{>:{{y} {0}} {f o o}} {b a r}}}}"; + +indent !::= ww +outdent !::= " " outdent " " + | " " [~]* "\n" + +any !::= [~]* +s ::= !any "\n\n" !ww Statement !ww "\n\n" !any => smt +ww ::= sp* +sp ::= " " + +block ::= "\n" !indent BlockBody + &~ "\n" outdent [~\ ] [~]* + +BlockBody ::= Statement + > Statement BlockBody => "sbb" + +Statement ::= Call + | ^"while" Expr block + +Expr ::= ident + | Call + | Expr ^">" Expr + | num + +Call ::= Expr "()" + +num ::= [0-9]++ + +ident ::= [a-z]++ &~ keyword +keyword ::= "if" | "then" | "else" | "while" + +w ::= " " | "\n" | "\r" +ws ::= w* + + +} diff --git a/tests/testcase.g b/tests/testcase.g new file mode 100644 index 0000000..9993dce --- /dev/null +++ b/tests/testcase.g @@ -0,0 +1,7 @@ +ts ::= ws Ts ws => ts +Ts ::= Test* +ws !::= w* +Test ::= ^"testcase" "{" Input Output+ Grammar "}" + | ^"testcase" "{" Input Grammar "}" +Output ::= "output" quoted ";" +Input ::= "input" quoted ";" -- 1.7.10.4