I'm using the C# 3 port of Antlr (target and code generator) and I'm
experiencing a lack of lexer errors being generated. As a concrete example,
consider the following grammar:
grammar CSTest;
public
compilation_unit
: IDENTIFIER* EOF
;
IDENTIFIER
: (ID_PART) (ID_PART_OR_NUMBER)*
;
fragment
ID_PART
: ('a'..'z' | 'A'..'Z' | '_')
;
fragment
ID_PART_OR_NUMBER
: ID_PART
| '0'..'9'
;
WS
: (' '|'\r'|'\t'|'\n') { /*Skip();*/ $channel=Hidden; }
;
The only production in this grammar should allow for an arbitrary sequence
of identifiers, and it does. However, it also accepts ALL input, including
binary files and anything else I pipe into it. Is the default in the C#
target to silently ignore any lexing errors? In my driver program, I am not
seeing any throw exceptions when I call the compilation_unit rule.
using System;
using System.IO;
using Antlr.Runtime;
namespace CSTest {
public class Program {
public static void Main(string[] args) {
string filename;
filename = args[0];
if(!Path.IsPathRooted(filename)) {
filename = Path.Combine(Environment.CurrentDirectory, filename);
}
ICharStream input = new ANTLRFileStream(filename);
CSTestLexer lexer = new CSTestLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
CSTestParser parser = new CSTestParser(tokens);
try {
parser.compilation_unit();
}
catch(RecognitionException re) {
Console.Out.WriteLine("EXCEPTION");
Console.Out.WriteLine(re.StackTrace);
}
}
}
}
--
Thanks,
Justin Holewinski
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe:
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
--
You received this message because you are subscribed to the Google Groups
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/il-antlr-interest?hl=en.