catlan
catlan

Reputation: 25246

Lemon parser as Xcode build rule

When using lemon parser in Xcode integrated as 'Yacc source file using Script', warnings generated by lemon don't show up in the Xcode warning section.

Upvotes: 3

Views: 104

Answers (1)

catlan
catlan

Reputation: 25246

The lemon warning output is not compatible with the format expected by Xcode. Lemon output is formatted like this:

filename.y:NR: message

Note: Lemon also seems to limit the filename to 20 characters in its warning output.

While Xcode expects:

path:NR: warning: message

This can be done with awk lemon $INPUT_FILE_BASE.y | awk -F ': ' -v base="${BASE}" '{ print base "/" $1 ": warning: " $2}'

Here my complete script:

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 source file using Script': Xcode Yacc source file using Script

Warnings are also shown inline in the gramma file now: Warning : This rule can not be reduced.

Upvotes: 1

Related Questions