You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by el...@apache.org on 2006/12/08 00:51:20 UTC

svn commit: r483741 - /labs/dungeon/src/test/java/org/apache/dungeon/meta/parser/MetaParserTest.java

Author: elecharny
Date: Thu Dec  7 15:51:19 2006
New Revision: 483741

URL: http://svn.apache.org/viewvc?view=rev&rev=483741
Log:
Added a temporary test with the meta-meta-grammar as sample. It will be modified as the meta-grammar will evolve to accept regular expressions for Lexical constructs

Modified:
    labs/dungeon/src/test/java/org/apache/dungeon/meta/parser/MetaParserTest.java

Modified: labs/dungeon/src/test/java/org/apache/dungeon/meta/parser/MetaParserTest.java
URL: http://svn.apache.org/viewvc/labs/dungeon/src/test/java/org/apache/dungeon/meta/parser/MetaParserTest.java?view=diff&rev=483741&r1=483740&r2=483741
==============================================================================
--- labs/dungeon/src/test/java/org/apache/dungeon/meta/parser/MetaParserTest.java (original)
+++ labs/dungeon/src/test/java/org/apache/dungeon/meta/parser/MetaParserTest.java Thu Dec  7 15:51:19 2006
@@ -270,5 +270,42 @@
 
         assertEquals( expected, production.toString() );
     }
-
+    
+    public void testMetaGrammar() throws ParserException
+    {
+        MetaParser mp = new MetaParser();
+        char[] grammar = 
+            ("<grammar>     ::= 'SPS' <production> <productions> ;" +
+             "<productions> ::= 'SPS' <production> <productions> | # ;" +
+             "<production>  ::= <prod>  | <regexp> ;" +
+             "<prod>        ::= <vn> 'SPS' 'AFFECT' 'SPS' <rhs> 'SPS' 'SEMI' ;" +
+             "<regexp>      ::= 'IDENT' 'SPS' 'ASSIGN' 'SPS' 'QUOTE' 'LEX' 'QUOTE' 'SPS' 'SEMI' ;" +
+             "<rhs>         ::= <vt> 'SPS' <rule> 'SPS' <rhs-e> | <vn> 'SPS' <rule> 'SPS' <rhs-e> | <epsilon> ;" +
+             "<rhs-e>       ::= 'BAR' 'SPS' <rhs> | # ;" +
+             "<rule>        ::= <vt> 'SPS' <rule> | <vn> 'SPS' <rule> | # ;" +
+             "<vn>          ::= 'LESSER' 'IDENT' 'GREATER' <code-e> ;" +
+             "<vt>          ::= 'QUOTE' 'LEX' 'QUOTE' <code-e> | 'IDENT' <code-e> ;" +
+             "<epsilon>     ::= 'EPSILON' <code-e> ;" +
+             "<code-e>      ::= 'SPS' 'ACTION' 'SPS' <code-num> 'SPS' 'ACTION' 'SPS' | # ;" +
+             "<code-num>    ::= 'CODE' | 'NUM' ;").toCharArray();
+        
+        MetaGrammar mg = mp.parseGrammar( grammar );
+        
+        assertNotNull( mg );
+        assertNotNull( mg.getProductions() );
+        assertEquals( 13, mg.getProductions().size() );
+        
+        assertTrue( mg.getVns().contains( "production" ) );
+        assertTrue( mg.getVns().contains( "productions" ) );
+        assertTrue( mg.getVns().contains( "prod" ) );
+        assertTrue( mg.getVns().contains( "regexp" ) );
+        assertTrue( mg.getVns().contains( "vn" ) );
+        assertTrue( mg.getVns().contains( "rhs" ) );
+        assertTrue( mg.getVns().contains( "vt" ) );
+        assertTrue( mg.getVns().contains( "rule" ) );
+        assertTrue( mg.getVns().contains( "rhs-e" ) );
+        assertTrue( mg.getVns().contains( "epsilon" ) );
+        assertTrue( mg.getVns().contains( "code-e" ) );
+        assertTrue( mg.getVns().contains( "code-num" ) );
+    }    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org