일부 문자열을 토큰에 매핑하는 keyword_table
을 정의하고이 테이블을 parser.mly
및 lexer.mll
에 대해 표시하고 싶습니다.menhir에서 .mly와 .mll 모두에 대해 토큰을 포함하는 테이블 만들기
테이블 parser.mly
에 정의되어야한다는 것,
%{
open Utility (* where hash_table is defined to make a table from a list *)
let keyword_table = hash_table [
"Call", CALL; "Case", CASE; "Close", CLOSE; "Const", CONST;
"Declare", DECLARE; "DefBool", DEFBOOL; "DefByte", DEFBYTE ]
%}
그러나, 나는 this comment으로
{
open Parser
let x = keyword_table (* doesn't work *)
let x = Parser.keyword_table (* doesn't work *)
let x = Parsing.keyword_table (* doesn't work *)
}
알 수 예를 들어, lexer.mll
에서 사용할 수 없습니다, menhir
는 솔루션을 이것을 위해, 누군가는 나에게 어떤 세부 사항이라도 말할 수 있었느냐?
문제는'keyword_table'에 토큰이 들어있어'keyword.ml' 세 번째 파일에 넣을 수 없습니다 ... – SoftTimur
이것은 문제가되지 않습니다.'--external-tokens'에 대한 문서를 참조하십시오. – Thomash
내가 사용했던 몇 가지 문제로'--external-tokens' (http://www.ii.uni.wroc.pl/~lukstafi/pmwiki/uploads/Functional/functional-lecture09.pdf) 'ocamlbuild'와 함께. 그것은 더 많은 유연성을 제공합니다. – lukstafi