Лимонный парсер как правило сборки Xcode - PullRequest
0 голосов
/ 21 февраля 2019

Когда используется лимонный парсер в Xcode, интегрированном как 'Исходный файл Yacc, использующий скрипт' , предупреждения, сгенерированные лимоном, не отображаются в разделе предупреждений Xcode.

1 Ответ

0 голосов
/ 21 февраля 2019

Вывод предупреждения о выходе лимона несовместим с форматом, ожидаемым Xcode.Вывод лимона форматируется следующим образом:

filename.y:NR: message

Примечание : Лимон также ограничивает имя файла до 20 символов в выводе предупреждения.

Хотя Xcode ожидает:

path:NR: warning: message

Это можно сделать с помощью awk lemon $INPUT_FILE_BASE.y | awk -F ': ' -v base="${BASE}" '{ print base "/" $1 ": warning: " $2}'

Вот мой полный сценарий:

LEMON=$(printf %q "$BUILT_PRODUCTS_DIR/lemon")
LEMPAR=$(printf %q "$SRCROOT/../Vendor/lemon/lempar.c")
BASE=$(dirname "$INPUT_FILE_PATH.y")

cd $DERIVED_FILES_DIR
cp $INPUT_FILE_PATH $INPUT_FILE_BASE.y
cp $LEMPAR $DERIVED_FILES_DIR/lempar.c
$LEMON $INPUT_FILE_BASE.y | awk -F ': ' -v base="${BASE}" '{ print base "/" $1 ": warning: " $2}'

mv $INPUT_FILE_BASE.c $INPUT_FILE_BASE.m

Xcode 'Исходный файл Yacc с использованием скрипта' : Xcode Yacc source file using Script

Предупреждения теперь также отображаются в виде файла грамматики: Warning : This rule can not be reduced.

...