2014-10-18 3 views
0

im new с ANTLR, и я не знаю, как скомпилировать мою грамматику. I'm с помощью v4.4 из ANTLR с .g4 файл, который содержит:Нужна помощь в компиляции файла грамматики ANTLR

grammar JayGrammar; 
program: KEYWORD_VOI KEYWORD_MAI SEPARATOR_PAB SEPARATOR_PCD (declarations statements); 
declarations: (declaration)*; 
declaration: (type identifiers); 
type: (KEYWORD_INT | KEYWORD_BOO); 
identifiers: (IDENTIFIER)*; 
statements: (statement)*; 
statement: (block | assignment | ifstatement | whilestatementk); 
block: SEPARATOR_LAB statements SEPARATOR_LCD; 
assignment: (IDENTIFIER OPERATOR_IGU expression); 
ifstatement: KEYWORD_IF SEPARATOR_PAB expression SEPARATOR_PCD statement (KEYWORD_ELS statement)?; 
whilestatementk: KEYWORD_WHI SEPARATOR_PAB expression SEPARATOR_PCD statement; 
expression: conjunction ((OPERATOR_O) conjunction)*; 
conjunction: relation ((OPERATOR_Y) relation)*; 
relation: addition ((OPERATOR_REL) addition)*; 
addition: term ((OPERATOR_SUM|OPERATOR_RES) term)*; 
term: negation ((OPERATOR_POR|OPERATOR_DIV) negation)*; 
negation:(OPERATOR_NO) factor; 
factor: IDENTIFIER|LITERAL|SEPARATOR_PAB expression SEPARATOR_PCD; 

    INPUTELEMENT: (WHITESPACE|TOKEN); 
    WHITESPACE: (' '|'\t'|'\r'|'\n'|'\f'); 

    TOKEN: (IDENTIFIER|KEYWORD_BOO|KEYWORD_ELS|KEYWORD_IF|KEYWORD_MAI|KEYWORD_VOI|KEYWORD_WHI|LITERAL 
      |SEPARATOR_COM|SEPARATOR_LAB|SEPARATOR_LCD|SEPARATOR_PAB|SEPARATOR_PCD|SEPARATOR_PYC 
      |OPERATOR_REL|OPERATOR_DIV|OPERATOR_IGU|OPERATOR_NO|OPERATOR_O|OPERATOR_POR|OPERATOR_RES|OPERATOR_SUM|OPERATOR_Y); 

    LITERAL: (BOOLEAN INTEGER); 

    KEYWORD_BOO: BOOLEAN; 
    KEYWORD_ELS:'else'; 
    KEYWORD_IF: 'if'; 
    KEYWORD_INT: 'int'; 
    KEYWORD_MAI: 'main'; 
    KEYWORD_VOI: 'void'; 
    KEYWORD_WHI: 'while'; 
    BOOLEAN: ('true'|'false'); 

    INTEGER: (DIGIT+); 
    IDENTIFIER: (LETTER (LETTER| DIGIT)*); 
    DIGIT: ('0'..'9')+; 
    LETTER: ('a'..'z'|'A'..'Z')+; 


    SEPARATOR_PAB: '('; 
    SEPARATOR_PCD: ')'; 
    SEPARATOR_LAB: '{'; 
    SEPARATOR_LCD: '}'; 
    SEPARATOR_PYC: ';'; 
    SEPARATOR_COM: ','; 


    OPERATOR_IGU: ('='); 
    OPERATOR_SUM: ('+'); 
    OPERATOR_RES: ('-'); 
    OPERATOR_POR: ('*'); 
    OPERATOR_DIV: ('/'); 
    OPERATOR_REL: ('<'|'<='|'>'|'>='|'=='|'!='); 
    OPERATOR_Y: ('&&'); 
    OPERATOR_O: ('||'); 
    OPERATOR_NO: ('!'); 

Я буду очень рад, если кто-то может сказать мне, как создать лексера и анализатор с расширением». java ", а затем скомпилировать их для создания классов. Я использую NetBeans, но я действительно смущен. Если есть другая IDE, которую я могу использовать или что-то еще, пожалуйста, помогите мне.

ответ

2

Это объясняется на странице Antlr4 "Getting Started".

Делать это вручную так просто, как это:

$ antlr4 YourGrammar.g4 
$ javac YourGrammar*.java 

... при условии, что вы установили и настроили Java JDK и Antlr.


Есть несколько способов использования Antrlr с Netbeans IDE:

  • Просто напишите/генерировать Ant скрипт для сборки, а затем изменить его, чтобы включить правила для запуска antlr4 Etcetera. С помощью вы можете включить Antlr в свои сборки без какой-либо интеграции с IDE.

  • Следуйте the instructions here по интеграции Antlr в Netbeans,

  • Установка и использование Antlrworks 2 plugin.

+0

Thak you so much, я сгенерировал парсер и лексер и скомпилировал их для создания файлов .class. Проблема в том, что теперь я не знаю, как их использовать. – Setrakus

+0

Попробуйте учебник Altlr4. Первая страница, с которой я связан (выше), является ее частью. –

Смежные вопросы