[antlr-interest] Filtering ASTs?

Derek electron_neutrino at yahoo.com
Fri Oct 29 02:13:25 PDT 2004



Hi

I am using the VAMS grammar
(http://www.antlr.org/grammar/1086696923011/vhdlams/vams.g) to parse
VHDL, as it is very similar, and build an AST.

However, in my tree grammar I only want to match parts of that tree,
not starting at the root node. How can I do this? There is a filter
option in the lexer but I want to use the full AST later.

The examples I have seen always have the same top rule in the tree
grammar and the parser grammar.

In vams.g the top rule is "design_file" but I want to only match
entities from the rule "entity_declaration" so that I can extract the
name. So, if in my tree grammar I have:

entity_declaration
   : #(ENTITY name:identifier)
        { System.out.println("Got ENTITY named " + name.getText()); } 
   ;
 
identifier
  : BASIC_IDENTIFIER
  | EXTENDED_IDENTIFIER
  ;

ANTLR will give this error message: "<AST>:0:0: expecting ENTITY,
found 'library'" for this test file:

library IEEE;
use IEEE.std_logic_1164.all;

entity test1 is
	port
	(
		a	: in std_logic;
		b	: out std_logic
	);
end entity test1;


How can I only match the entities within a VHDL file without having to
 have my tree grammar declare all the rules from "design_file" down to
"entity_declaration"?

Thanks in advance,

Derek





 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/antlr-interest/

<*> To unsubscribe from this group, send an email to:
    antlr-interest-unsubscribe at yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 





More information about the antlr-interest mailing list