에는 런타임에 ANTLR을 사용하여 토큰의 축소 작업을 제어하는 방법이 있습니다. 예를 들어, 나는처럼 보이는 ANTLR 문법했습니다 : 나는 런타임에 결정하려는, 즉 모두 'A'와 'B'와 관련된 정확한 가능한 값은 런타임에 알려져있다 s: (a | b);
a: WORD;
b: WORD;
WORD: ('a'..'z')+
를할지 여부 WORD를
내 컴파일러 클래스에 대한 파서 프로젝트가 있습니다. 내가 규칙 중 하나에 대한 감소/감소 충돌을 해결할 수 없습니다. 이 문법 규칙의 그래픽 표현은 (미안 해요 여기에 이미지를 게시 할 수 없습니다 때문에 정책에 유래하는)이 링크에서 볼 수 있습니다 : 모든 타원 터미널 상징 Graphical representation of the "type" gramm
Mapper에서 일부 데이터를 보내고 Reducer에서 읽으려고하면 약간 변경되었습니다. 이력서에서, 나는 set 함수를 사용하여 데이터를 채운 다음 get 함수를 사용하여 감속기에서 읽습니다. 나는 왜 println을하면 데이터가 다른지 이해할 수 없다. 나는 "ValorFechaHora"라는 클래스, 3 개 변수 Medicion, Fecha 및 호라에
동적 유형 지정 언어에 대한 구문 분석기를 만들고 싶습니다. 내 들소 파일에는 변수 이름 또는 함수 호출 인 runtimetyped에 대한 규칙이 있습니다. 또한 컴파일 할 때 기본 유형 검사를 수행하려고합니다. f.e. x = "string" + 42 <= true;
등의 소스 코드를 허용하고 싶지는 않지만 컴파일 타임 오류를 만들고 싶습니다. 하지만
를 줄/줄입니다. 그러나 필자가 bison에서 복합 문을 번역 할 때 : compound_statement : BEGINKEY state ENDKEY ;
state : | statement stm ;
stm : | BQUESTIONMARK statement stm ;
감소/감소 오류가 있습니다. 나를 감히 설명 할 수 없기 때문에 누가 감손/축소 오
자기 언어를 만드는 어려움을 더 잘 이해하기 위해 작은 컴파일러에서 작업하고 있습니다. 지금은 문법에 포인터 기능을 추가하는 단계에 있습니다.하지만이를 통해 축소/축소 충돌이 발생합니다. 다음은 bnfc으로 컴파일 할 수있는 간단한 문법입니다. 내가 happy 파서 생성기를 사용하고 그 프로그램은 줄이기/감소 충돌이있다. entrypoints Stmt ;
나는 들소에 문법을 작성하고 있는데 r/r 충돌이 있습니다 (나는 그것이 어디 있는지 압니다). 그러나 그것을 고치는 방법을 모르겠습니다. 가능한 도움을 주시면 감사하겠습니다. 충돌을 포함 내 코드의 일부는 다음과 같습니다 orismos2: %empty
|orismos orismos2
|error {yyerrok;yyclearin;};
orismos
그래서 나는 Bison을 처음 접했고 간단한 계산기를 만들려고 노력하고 있습니다. 필자가 bison -d 명령을 실행하면 7 줄이기/줄이기 충돌이 발생하며 실제로이 이유가 확실하지 않다는 것을 알았습니다. 문법에 나쁜 논리가 있기 때문에 필자는 그것을 찾을 수 없습니다. 그래서 여기에 .Y 파일의 코드는 다음과 같습니다는 %{
#include <stdio
다음과 같은 간단한 문법 :이 %token AND OR
%token NUMBER VARIABLE
%%
logical_expr
: logical_expr AND logical_term
| logical_expr OR logical_term
| logical_term
;
logical_term
: VARIAB