ocamlyacc

    1

    2답변

    : %% EXPR은 : | expr ASN expr { Asn ($1, $2) } 이 할당 규칙입니다 그 다음 내 대소 문자에 정의 된대로 할당 (등호) 및 표현식을 사용합니다. 유형 expr = Asn of int * expr 물론 "expr ASN expr"을 정의 중이므로 첫 번째 인수는 표현식이 아닌 정수 여야하므로 컴파일러는 불평합니다. 그러나

    2

    2답변

    은 내가 도메인특정언어 (논리)에 대한 menhir 기반 구문 분석기를 포함하는 몇 가지 코드가 있습니다. 디버깅하는 동안 내 정신을 위해, 바로 지금과 같은 최상위이 언어의 경우 (공식)을 입력 할 수 있도록 좋은 것 : # f = << P(x,y) & x!=y >> 는 campl4/5 내 유일한 옵션인가? 그렇다면 협박하는 문서를 찾습니다. 내 유스

    0

    1답변

    ocamllex 및 ocamlyacc 코드를 스캔하여 간단한 언어를 구문 분석하려고합니다. 동일한 추상 구문을 정의했지만 복잡한 규칙을 검색하는 데 어려움을 겪고 있습니다. 여기 내 코드가 { type exp = B of bool | Const of float | Iszero of exp | Diff of exp*exp | If of ex

    1

    2답변

    누구든지 Ocamlyacc에서 구현할 수있는 방법을 간단히 설명 할 수 있습니까? 어휘 분석기 (ocamllex) 즉, IF, THEN, ELSE에서 토큰을 정의했습니다. if 문에서 정수에 대해 GREATERTHAN, LESSERTHAN, EQUALTO 토큰을 정의했습니다. 나는 많은 자습서를 찾았지만 아무 소용이 없다! UPDATE : 가 나는 결과를

    1

    1답변

    내 언어의 모든 키워드를 저장하는 해시 테이블 keyword_table을 정의했습니다. 키워드가 많이 있기 때문에 (* parser.mly *) %token CALL CASE CLOSE CONST ... reserved_identifier: | CALL { "Call" } | CASE { "Case" } | CLOSE { "Close" } |

    0

    1답변

    많은 독립 파일을 분석하는 분석기를 작성하고 있습니다. 모든 파일은 동일한 구조를 가지고 있습니다 : Initiation()을 가지고 있으며 몇 가지 절차가 이어집니다. 예를 들어 : Sub Initiation() ... End Sub Sub procedure1() ... End Sub Sub procedure2() ... End Sub

    1

    2답변

    OCaml에 통역사를 쓰려고하는데 여기에 문제가 있습니다. 내 프로그램에서 , 나는 예를 들어, 다음과 같이 함수를 호출 할 : print (get_line 4) // print: print to stdout, get_line: get a specific line in a file 내가 어떻게 할 수 있습니까? 문제는 파서 (parser)에 있습니다.

    2

    1답변

    이전에 질문 한 내용을 다시 정리합니다. 목적은 구문 분석에서 우선 순위가 작동하는 방식을 이해하는 것입니다. 문 a(3).value = 100을 구문 분석하고 싶습니다. .을 읽은 후 다음과 같이 parser.mly이 멈추고 오류를 반환합니다. 내가 argument_list 전용 부품을 이동하는 경우 그러나, 파일의 끝에 (begin 및 end에 의해 K

    2

    1답변

    내 코드 : Term : ... | VAR { try Hashtbl.find var_table $1 with Not_found -> printf "no such variable '%s'\n" $1; 0.0 } /*(Line:75)*/ ... 와 때 나는 내가 볼 ocamlc -c parser.ml에서, 실행되었다이 Error:

    5

    1답변

    Ocamlyacc와 비슷한 Menhir 파서를 사용하여 연산자에 동적 특성 (우선 순위 및 우선 순위)이있는 언어를 구문 분석하려고합니다. 렉싱 단계에서 모든 연산자는 OP:string 토큰을 채 웁니다 (따라서 "+"는 (OP "+") 등으로 변합니다). 연산자 속성은 구문 분석시 결정되며 연산자와 해당 특성을 연결하는 테이블을 채 웁니다. 이 테이블이