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