Intereting Posts
Установка sun-java6-jdk на ubuntu 10.04 64 бит os Соединение GoogleApiClient всегда сбой в первый раз, но второе успешное завершение Android AdMob вызывает утечку памяти? Обновления Android ListView Live VerifyError с использованием Mockito 1.9.5 и DexMaker-Mockito-1.0 Управление flipper страницы – как и домашние экраны Android Как создать собственный сервис android и использовать связующее для связи с ним? Исходные чертежи SearchView в ActionBar выглядят размытыми Как я могу контролировать базу данных другого приложения для изменений? (Ionic 2) Произошла ошибка, пытаясь вернуться к выполнению Кордова-lib: TypeError: Невозможно прочитать свойство «then» неопределенного Android IllegalArgumentException: уже добавлено Включить предварительно скомпилированную статическую библиотеку с использованием NDK Android нарисовать горизонтальную линию между видами Как я могу управлять сеансом в Android login / logout? Андроид, использующий Renderscript для размытия эффектов, вызывает A / libc: фатальный сигнал 7 (SIGBUS), код 2, ошибка addr 0x9e6fa000 in tid 482 (AsyncTask # 1)

Андроид ANTLR не работает должным образом

Я пытаюсь использовать ANTLR на Android, и я нашел это: ANTLR и Android

После загрузки AntlrJavaRuntime я не уверен, что делать, я должен сделать следующее:

1. lunch the appropriate target 2. make AntlrJavaRuntime 3. verify that AntlrJavaRuntime.xml was placed in /system/etc/permissions and 4. AntlrJavaRuntime.jar was placed in /system/framework 5. after this, you can run a normal make 

Прежде всего, что означает шаг 1?

Во-вторых, когда я пытаюсь сделать: make AntlrJavaRuntime, я получаю следующую ошибку:

 ~/AntlrJavaRuntime$ make AntlrJavaRuntime make: Nothing to be done for `AntlrJavaRuntime'. 

Очень сложно найти документацию об этом, поэтому любая помощь действительно оценена (или ясный пример того, как получить ANTLR для проекта Android).

Solutions Collecting From Web of "Андроид ANTLR не работает должным образом"

Ну, я просто немного поработал с «простой» версией ANTLR, и все прошло отлично.

Вот что я сделал:

1 новый Android-проект

Создайте новый проект под названием AndAbac (Android-Abacus) с пакетом с именем bk.andabac и активностью под названием AndAbac .

2 создать грамматику

Создайте файл грамматики Exp.g (объяснение здесь ) в любой точке вашей системы и вставьте в него следующее:

 grammar Exp; @parser::header { package bk.andabac; } @lexer::header { package bk.andabac; } eval returns [double value] : exp=additionExp {$value = $exp.value;} ; additionExp returns [double value] : m1=multiplyExp {$value = $m1.value;} ( '+' m2=multiplyExp {$value += $m2.value;} | '-' m2=multiplyExp {$value -= $m2.value;} )* ; multiplyExp returns [double value] : a1=atomExp {$value = $a1.value;} ( '*' a2=atomExp {$value *= $a2.value;} | '/' a2=atomExp {$value /= $a2.value;} )* ; atomExp returns [double value] : n=Number {$value = Double.parseDouble($n.text);} | '(' exp=additionExp ')' {$value = $exp.value;} ; Number : ('0'..'9')+ ('.' ('0'..'9')+)? ; WS : (' ' | '\t' | '\r'| '\n') {$channel=HIDDEN;} ; 

3 download ANTLR & generate lexer / parser

Загрузите ANTLR здесь: http://www.antlr3.org/download/antlr-3.3-complete.jar и поместите его в тот же каталог, что и ваш файл Exp.g Создайте лексер и парсер (объясните здесь ) и скопируйте сгенерированные файлы .java в следующую папку в вашем проекте Android: src/bk/andabac . Также поставьте эту банку ANTLR в путь к классам вашего проекта Android.

4 измените некоторые файлы проекта

Вставьте следующее в res/layout/main.xml :

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/input_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="5 * (8 + 2)" /> <Button android:id="@+id/parse_button" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="eval" /> <TextView android:id="@+id/output_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" /> </LinearLayout> 

И в src/bk/andabac/AndAbac.java :

 package bk.andabac; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import org.antlr.runtime.ANTLRStringStream; import org.antlr.runtime.CommonTokenStream; import org.antlr.runtime.RecognitionException; public class AndAbac extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button button = (Button)findViewById(R.id.parse_button); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { EditText in = (EditText)findViewById(R.id.input_text); TextView out = (TextView)findViewById(R.id.output_text); String source = in.getText().toString(); ExpLexer lexer = new ExpLexer(new ANTLRStringStream(source)); ExpParser parser = new ExpParser(new CommonTokenStream(lexer)); try { out.setText(source + " = " + parser.eval()); } catch (RecognitionException e) { out.setText("Oops: " + e.getMessage()); } } }); } } 

5 проверить приложение

Либо запустите проект в эмуляторе, либо создайте файл APK и установите его на Android-устройстве (я тестировал оба, и оба работали). После нажатия кнопки eval вы увидите следующее:

Введите описание изображения здесь

Этот ответ может быть немного запоздалым, но в любом случае …

Я автор порта Антльр. Эти источники предназначены для использования в исходном коде Android. Однако, просто включение источников в ваш проект andriod должно решить вашу проблему.

Я должен был упомянуть, что инструкции по строительству только при добавлении Antlr в исходный код ОС Android.

-Earlence