Как сделать так, чтобы код @header и @members были в Lexer, а не в Parser с ANTLR? - PullRequest
1 голос
/ 31 декабря 2011

Допустим, у меня есть файл грамматики с этим кодом.

// START:members
@header {
using System.Collections.Generic;
}

@members {
public static Dictionary<string, string> memory = new Dictionary<string, string>();
}

ANTLR помещает код в Parser следующим образом.

public partial class Eval : TreeParser
{
 ... 

    /** Map variable name to Integer object holding value */
    //HashMap memory = new HashMap();
    Dictionary<string, int> memory = new Dictionary<string, int>();

Есть ли способ поместить код в Lexer, а не в Parser с ANTLR?

1 Ответ

1 голос
/ 31 декабря 2011

@header и @members - сокращение от @parser::header и @parser::members соответственно.

Чтобы поместить код в лексер, выполните: @lexer::header и @lexer::members.

...