Я пытаюсь использовать YACC с xcode, который поддерживается изначально, и для этого я нашел этот образец, который хорошо работает. Моя идея состоит в том, чтобы создать собственную грамматику, поэтому я начал экспериментировать с проектом, чтобы убедиться, что он будет поддерживать то, что мне нужно. Таким образом, я создал следующий интерфейс:
.h
#import <Foundation/Foundation.h>
@interface HYPLangNodeNP : NSObject
@end
.m
#import "HYPLangNodeNP.h"
@implementation HYPLangNodeNP
@end
Да, это просто пустая реализация. Затем я произвел всего два изменения в грамматике:
1) Добавьте импорт HYPLangNodeNP
%{
#import "MessageBlocks.h"
#import "HYPLangNodeNP.h"
int yylex(void);
void yyerror(char *s);
%}
2) Добавьте HYPLangNodeNP к типу% union
%union {
float value;
NSString *identifier;
HYPLangNodeNP *node;
}
Проект не скомпилирован с Unknown type name 'HYPLangNodeNP'
. Кто-нибудь знает, как решить?
Edit:
Я не знаю версию YACC, но она независимо от версии поставляется с Xcode 6.3. Ниже приводится журнал, который я получаю:
CompileC /Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser _Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Test.build/Debug-iphonesimulator/Parser \ Test.build/Objects-normal/i386/ViewController.o Parser \ Test/ViewController.m normal i386 objective-ccom.apple.compilers.llvm.clang.1_0.compiler cd "/Пользователи/RafaelSoares/Google Диск /Hype/ParserTest -master" экспорт LANG = ru_US.US-ASCII экспорт PATH = "/Applications/Xcode.app/Содержание/Разработчик/Платформы/iPhoneSimulator.platform/Разработчик/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/USR/SBIN:/SBIN" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch i386 -fmessage-length = 0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit = 0 -std = gnu99 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing -field-initializers -Wno-missing-prototypes -Wno-implicit-atomic-properties -Wno-receiver-is-weak -Wno-arc-repeat-use-of-weak -Wno-missing-braces -Wparentheses -Wswitch -Wno -unused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-empty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four- char -constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector -Wno-deprecated-implementation -DDEBUG = 1 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.3.sdk -fexceptions -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -g -Wno-sign-conversion -fobjc-abi-version = 2 -fobjc-legacy-dispatch -mios-simulator-version-min = 8.3 -iquote/Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser_Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Test.build/Debug-iphonesimulator/Parser\Test.build/Parser \ Тест-порожденных-files.hmap -I/Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser_Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Test.build/Debug-iphonesimulator/Parser\Test.build/Parser \ Тест-собственный целевой headers.hmap -I/Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser_Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Test.build/Debug-iphonesimulator/Parser\Test.build/Parser \ Test-all-target-headers.hmap -количество /Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser _Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Test.build/Debug-iphonesimulator/Parser\Test.build/Parser \ Тест-проект-headers.hmap -I/Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser_Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/Products/Debug-iphonesimulator/включить -I/Применения/Xcode.app/Содержание/Разработчик/компилированные инструменты/XcodeDefault.xctoolchain/USR/включать -I/Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser_Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Test.build/Debug-iphonesimulator/Parser \ Test.build/DerivedSources/i386 -I/Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser_Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Test.build/Debug-iphonesimulator/Parser\Test.build/DerivedSources -F/Пользователи/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser_Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/Products/Debug-iphonesimulator -ключить/Пользователи/RafaelSoares/Library/Разработчик/Xcode/DerivedData/Parser_Test-ahryrrrjjqtbhenhxphagqdgppf/Build/Intermediates/PrecompiledHeaders/Parser \ Test-Prefix-gydtbjgblnmtxcahwzhxkvmnznwf/Parser\Test-Prefix.pch -MMD -MT -MF/Пользователи/RafaelSoares/Library/Разработчик/Xcode/DerivedData/Parser_Test-ahryrrrjjqtbhenhxphagqdgppf/Build/Intermediates/Parser \ Test.build/Debug-iphonesimulator/Parser \ Test.build/Objects-normal/i386/ViewController.d --serialize-diagnostics/Пользователи/RafaelSoares/Library/Разработчик/Xcode/DerivedData/Parser_Test-ahryrrrjjqtbhenhxphagqdgppf/Build/Intermediates/Parser \ Test.build/Debug-iphonesimulator/Parser \ Test.build/Objects-normal/i386/ViewController.dia -c /Пользователи/RafaelSoares/Google\Drive/Hype/ParserTest-master \/Parser \ Тест /ViewController.m -o /Users/RafaelSoares/Library/Developer/Xcode/DerivedData/Parser _Test-ahryrrrgjyqtbhenhxphagqdgppf/Build/полупродукты/Parser \ Контрольная работа.строить /Debug -iphonesimulator/Parser \ Test.build/Objects-normal/i386/ViewController.o
В файл включен из/Пользователи/RafaelSoares/Google Drive/Hype/ParserTest-master/Parser Test/ViewController.m: 5: /Пользователи/RafaelSoares/Google Диск /Hype/ParserTest -master /parser.ym:14:5: ошибка: неизвестное имя типа 'HYPLangNodeNP' HYPLangNodeNP * nodeNP; ^/Пользователи/RafaelSoares/Google Диск /Hype/ParserTest -master/parser.ym:15:5: ошибка: неизвестное имя типа 'HYPLangNodeVP' HYPLangNodeVP * nodeVP; ^/Пользователи/RafaelSoares/Google Диск /Hype/ParserTest -master/parser.ym:16:5: ошибка: неизвестное имя типа 'HYPLangNode' HYPLangNode * node; ^/Пользователи/RafaelSoares/Google Диск /Hype/ParserTest -master/parser.ym:17:5: ошибка: неизвестное имя типа 'HYPLangSentence' Предложение HYPLangSentence *; ^/Пользователи/RafaelSoares/Google Drive/Hype/ParserTest-master/Parser Test/ViewController.m: 240: 34: предупреждение: неиспользуемая переменная 'child' [-Wunused-переменная] NSMutableArray * child = [childsVP [i] getChilds]; ^ 1 предупреждение и 4 возникших ошибки.