Google fu가 약해서 도움이 필요합니다. Lex/Yacc로 시작 했으므로 지금까지는 컨셉 증명에 이상이 있습니다. 반복 및 선택적 토큰이 필요합니다. 언급 한 바와 같이 instance 0 {
application 0 {
id 0 {
server 10.143.23.240
server backup 10.132
yacc과 lex로 작업하고 있는데 문제가 있습니다. 나는 caluclator에서 작업하고 있습니다. 내 계산기를 사용하면이 작업을 수행 할 수 있습니다 예 : 문제가 user: a = 1+3
user: a
calc: 4
, 난 단 하나 개의 문자와 함께 할 수 있습니다. 하지만 최대 3 자까지 입력하고 싶습니다. 예 : user: abc = 1+3
컴파일 할 때이 오류가 발생합니다. 이전에 렉스 파일을 컴파일 해 봤는데 오류없이 컴파일 할 수있는 yacc이없는 것 같습니다. :~ yacc project-5.y
:~ lex project.l
:~g++ -o $dragon project-5.tab.c lex.yy.c
clang: warning: treating 'c' input as 'c++' wh
flex/bison을 사용하여 언어를 쓰고 있는데 식별자를 구현할 때 어려움을 겪고 있습니다. 특히 할당이나 참조를보고있을 때를 예로들 수 있습니다 (예 : ). : 1) A = 1 + 2 2) B 및 C 값이 이미 할당 된 B + C() 일례 I가 플렉스에서 ID 토큰을 리턴함으로써 해결할 수 bison 그리고 1 + 2가 정수 표현 인 것을 인식하는 문
내 문법 수 있습니다 : C의 → 아이디 : = E // 지정 값/변수 표현 (VAR) C → 인쇄 (ID) // 인쇄 변수 (VAR)이 그것을 수행하려면 값, 내 렉스 파일은 다음과 같습니다 목록에서 변수의 인덱스를 반환 get_var_index [a-z]{
yylval.var_index=get_var_index(yytext);
retu
내가 주석 행은 # 문자 여기 에 태초에 간단한 계산기를 만들기 위해 노력하고있어 이 .L 파일 코드 %{
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "y.tab.h"
char str[256];
void yyerror(char *);
%}
%x COM
%%
내가 들소의 문법을 짓고 있어요 괄호 나는 좁혀했습니다 내 마지막 축소/다음 테스트 케이스에 오차를 줄이기 : 아마도 %{
#include <stdio.h>
#include <string.h>
extern yydebug;
void yyerror(const char *str)
{
fprintf(stderr, "Error: %s\n", s
안녕하세요 저는 최근에 컴파일러 개발자와 관련하여 마이너스 기호 (-) 및 음수 (-1) 문제가 발생했습니다. 이제는 5 - 3, 5 + -3, 추상 구문 트리 생성 중에 yacc이 정확한 추상 구문 트리를 생성하도록 문법 규칙을 작성하는 방법을 생각해 보겠습니다. 내 문법과 같은 것입니다 : 지금 expr : constant {} | id {} | exe