2010-11-28 37 views
16

Je comprends la théorie derrière la séparation des règles et des règles de l'analyseur en théorie analyseurs lexicaux, mais quelles sont les différences pratiques entre ces deux déclarations dans ANTLR:Différence pratique entre les règles de l'analyseur et les règles lexer dans ANTLR?

my_rule: ... ; 

MY_RULE: ... ; 

-ils conduisent à des arbres AST? Différentes performances? Ambiguïtés potentielles?

+0

Qu'en est-il de la gestion des espaces? – Dario

Répondre

21

Jen a écrit:

... quelles sont les différences pratiques entre ces deux déclarations dans ANTLR ...

MY_RULE seront utilisés pour tokenizer votre source d'entrée. Il représente un bloc de construction fondamental de votre langue.

my_rule est appelé à partir de l'analyseur, il se compose de zéro ou plusieurs autres règles de l'analyseur ou des jetons produits par le lexer.

C'est la différence.

Jen a écrit:

-ils conduisent à des arbres AST? Différentes performances? ...

L'analyseur construit l'AST à l'aide de jetons produits par le lexeur, donc les questions n'ont aucun sens (pour moi). Une lexer "alimente" simplement l'analyseur d'un flux de jetons en 1 dimension.