If/else statements in ANTLR using listeners

By default, ANTLR 4 generates listeners. But if you give org.antlr.v4.Tool the command line parameter -visitor, ANTLR generates visitor classes for you. These work much like listeners, but give you more control over which (sub) trees are walked/visited. This is particularly useful if you want to exclude certain (sub) trees (like else/if blocks, as in … Read more

How to convert a String to its equivalent LINQ Expression Tree?

Would the dynamic linq library help here? In particular, I’m thinking as a Where clause. If necessary, put it inside a list/array just to call .Where(string) on it! i.e. var people = new List<Person> { person }; int match = people.Where(filter).Any(); If not, writing a parser (using Expression under the hood) isn’t hugely taxing – … Read more

ANTLR: Is there a simple example?

Note: this answer is for ANTLR3! If you’re looking for an ANTLR4 example, then this Q&A demonstrates how to create a simple expression parser, and evaluator using ANTLR4. You first create a grammar. Below is a small grammar that you can use to evaluate expressions that are built using the 4 basic math operators: +, … Read more

What is a ‘semantic predicate’ in ANTLR?

ANTLR 4 For predicates in ANTLR 4, checkout these stackoverflow Q&A’s: Syntax of semantic predicates in Antlr4 Semantic predicates in ANTLR4? ANTLR 3 A semantic predicate is a way to enforce extra (semantic) rules upon grammar actions using plain code. There are 3 types of semantic predicates: validating semantic predicates; gated semantic predicates; disambiguating semantic … Read more