public void TestBracketArgParsing()
{
ErrorQueue equeue = new ErrorQueue();
ErrorManager.SetErrorListener( equeue );
// now check in actual grammar.
Grammar g = new Grammar(
"parser grammar t;\n" +
"a[String[\\] ick, int i]\n" +
" : A \n" +
" ;" );
AntlrTool antlr = newTool();
CodeGenerator generator = new CodeGenerator( antlr, g, "Java" );
g.CodeGenerator = generator;
generator.GenRecognizer(); // forces load of templates
Rule r = g.GetRule( "a" );
AttributeScope parameters = r.ParameterScope;
var attrs = parameters.Attributes;
Assert.AreEqual("String[] ick", attrs.ElementAt(0).Decl.ToString(), "attribute mismatch");
Assert.AreEqual("ick", attrs.ElementAt(0).Name, "parameter name mismatch");
Assert.AreEqual("String[]", attrs.ElementAt(0).Type, "declarator mismatch");
Assert.AreEqual("int i", attrs.ElementAt(1).Decl.ToString(), "attribute mismatch");
Assert.AreEqual("i", attrs.ElementAt(1).Name, "parameter name mismatch");
Assert.AreEqual("int", attrs.ElementAt(1).Type, "declarator mismatch");
Assert.AreEqual(0, equeue.errors.Count, "unexpected errors: " + equeue);
}