Описание тега shift-reduce

2 ответа

Оператор if-else в бизоне

Я пытаюсь сделать заявление если-то в зубре. Проблема в том, что я работаю над решением, которое все говорят, что работает, но это не так:(мой код: заявление: matchedstmt | unmatchedstmt; matchedstmt: if '(' expression ')' matchedstmt иначе matcheds…
12 мар '17 в 14:41
1 ответ

yacc прекратить делать shift&& lower, когда больше не может получить символ yylex()

Вот мой код: %{ #include<string.h> #include "y.tab.h" #define DEBUG 0 void yyerror(char* s); void debug(char* string) { if (DEBUG) { printf(string); } } %} selector "selector"[0-9]+ positive "+" negtive "-" contains "." before "->" or "||" …
17 янв '15 в 14:23
1 ответ

Решение разбор конфликтов в крошечной грамматике Лимона

Я пытаюсь изучить основы генератора парсеров Lemon, но я застрял быстро. Вот крошечная грамматика: %right PLUS_PLUS. %left DOT. program ::= expr. member_expr ::= expr DOT IDENTIFIER. lhs_expr ::= member_expr. expr ::= lhs_expr. expr ::= PLUS_PLUS lh…
1 ответ

Сдвинуть / уменьшить конфликт в yacc из-за ограничения токенов упреждения?

Я пытался решить кажущийся простым конфликт сдвига / сокращения безрезультатно. Естественно, парсер работает нормально, если я просто игнорирую конфликт, но я бы чувствовал себя намного безопаснее, если бы я реорганизовал свои правила. Здесь я упрос…
14 янв '11 в 11:29
1 ответ

Как должны быть определены бинарные операторы в зубрах?

Я пишу синтаксический анализатор в C с бизоном, и, хотя он, кажется, работает правильно при любых обстоятельствах, которые я до сих пор пытался, я получаю кучу предупреждений сдвига / уменьшения на моих бинарных операторах (и одно на моем унарном оп…
05 окт '10 в 00:17
1 ответ

C - процесс завершен с кодом ошибки 3221225477

Я делаю алгоритм смещения-уменьшения для нашего предмета разработки компилятора. Это код. void shiftReduce(char str[MAX_CHAR], int prodNum, int line) { int limit = 5, y=0; int substrFlag = 1; //0 true 1 false int ctr,x, counter; int match, next; cha…
17 июл '16 в 08:31
2 ответа

Разбор CFG с альтернативами

У меня довольно простой язык, представленный в виде CFG. S → A z A → A y A | A x A | A w | v Так как есть левая рекурсия, парсер рекурсивного спуска не собирается ее сокращать. Однако мне также нужно найти все возможные толкования: дано v x v y v zМ…
24 май '18 в 01:04
1 ответ

Получите TypedDependencies используя StanfordParser Shift Reduce Parser

Я пытаюсь использовать Stanford Shift Reduce Parser с поставляемой испанской моделью. Однако я замечаю, что в отличие от Lexicalized Parser, я не могу получить TypedDependencies, несмотря на отправку соответствующего флага -outputFormat typedDepende…
16 фев '15 в 18:32
1 ответ

Разве LR(0) парсер тоже не использует lookaheads?

LL(1)-парсеру нужен символ предпросмотра, чтобы иметь возможность решить, какую продукцию использовать. Это причина, по которой я всегда думал, что термин "lookahead" используется, когда анализатор смотрит на следующий входной токен, не "потребляя" …
1 ответ

Разница между сдвигом и прогнозом

Учитывая простую грамматику, как rule1 := token1 token2 token3 token4 || token1 token2 token3 token3; В чем разница между сдвигом первых трех токенов, затем просмотром четвертого, чтобы увидеть, какое правило уменьшить, и простым просмотром трех ток…
12 дек '11 в 23:50
1 ответ

Shift уменьшить конфликты

Ниже грамматики я делаю. S '-> sqf sqf -> объявления декларации -> декларация декларации -> декларации декларации декларация -> отношение декларация отношение -> тело головы отношение -> отношения norelation -> reldata norelation -> relatts reldata …
1 ответ

Сдвиг / уменьшение конфликта в первом состоянии благодаря правилу эпсилон

У меня сдвиг / уменьшение конфликта в зубрах. Я проверил файл parser.output: State 0 0 $accept: . Prog $end STRUCT shift, and go to state 1 $default reduce using rule 6 (Structs) Prog go to state 2 Structs go to state 3 StructDec go to state 4 У мен…
04 дек '18 в 16:09
1 ответ

НЛП Shift Reduser синтаксический анализатор выбрасывает нулевой указатель Исключение для расчета настроения

Я пытаюсь проанализировать настроение с помощью NLP. Я использую версию stanford-nlp, 3.4.1. У меня есть некоторые ненужные данные для обработки, и похоже, что для обработки с использованием файла PCFG по умолчанию требуется около 45 секунд. Вот при…
0 ответов

Сдвиг / уменьшение конфликтов в парсере бизонов

Я строю грамматический парсер с бизоном. Правила, которые я определил до сих пор: Program : Exp {}; Exp : STRING {}; Exp : TRUE {}; Exp : FALSE {}; Exp : NOT Exp {}; Exp : Exp OP Exp{}; OP : AND | OR | XOR {}; Я получаю сообщение: warning: 4 shift/r…
0 ответов

Контекстно-бесплатная грамматика с использованием Shift Reduce Parser

Я пытаюсь использовать парсер Shift Reduce для следующего предложения: He eats pasta with some anchovies in the restaurant Я создал некоторый код и грамматику, НО грамматика работает только до: He eats pasta with some anchovies import nltk from nltk…
2 ответа

Сдвиг-уменьшение: когда прекратить сокращение?

Я пытаюсь узнать о разборе сдвига-уменьшения. Предположим, у нас есть следующая грамматика, использующая рекурсивные правила, которые обеспечивают порядок операций, основанный на грамматике ANSI C Yacc: S: A; P : NUMBER | '(' S ')' ; M : P | M '*' P…
0 ответов

Обучение Stanford RSS и Shift Reduce парсерам для нового языка

Я хотел бы обучить Stanford Parsers (RSS и Shift Reduce) на основе избирательного округа существующему банку деревьев, но не могу найти достаточно информации в Интернете, чтобы иметь возможность это сделать. Два ключевых вопроса: В каком формате я д…
22 май '17 в 05:29
2 ответа

Как преодолеть сдвиг-уменьшить конфликт в грамматике LALR

Я пытаюсь разобрать положительные и отрицательные десятичные дроби. number(N) ::= pnumber(N1). number(N) ::= nnumber(N1). number(N) ::= pnumber(N1) DOT pnumber(N2). number(N) ::= nnumber(N1) DOT pnumber(N2). pnumber(N) ::= NUMBER(N1). nnumber(N) ::=…
1 ответ

Конфликт Shift-Reduce в YACC для правила, начинающегося с Action

%token A B %% start: {printf("Starting…\n");} A A | A B; В моей книге говорится, что существует конфликт сдвига-уменьшения, когда токеном является A, потому что yacc преобразует его в код. %token A B %% start: empty A A | A B; empty: {printf("Starti…
0 ответов

Как NN выполняет синтаксический анализ зависимостей в SpaCy

Фактический алгоритм, который использует Spacy, не указан в документе. Так что что-то непонятно. 1. Используется ли метод сдвига-уменьшения или что-то еще? 2. Как применить классификатор там, где ему нужен классификатор? Например, если они использую…