하이 라이터가 렉서를 사용하여 백그라운드 작업을 수행한다고 가정하면 라이브 구문 강조 표시가있는 IDE에서 타이핑 할 때 렉서가 전체 파일을 Java, C++, Python 등의 언어로 다시 토큰 화해야합니까?), 렉서는 현재 라인을 다시 읽거나 토큰 화해야하나요? 아니면 한 번에 하나의 문자/단어 만 사용하고 있습니까? 많은 편집자/IDE에서 대부분의 코
데이터가 특수 형식 (SQL, 데이터베이스, MP3, JSON, XML 등의 BOLB) 내에있을 때 이진 데이터 (비디오/이미지/오디오/실행 가능)를 랜덤 바이트 시퀀스로 간주하면 , 파서는 특수 문자 (또는 {,}, \ t, space, EOF와 같은 char 시퀀스)가 이진 데이터의 일부가 아닌 형식화에 사용된다는 것을 어떻게 알 수 있습니까? 또한이
코드를 파스칼로 분석하는 프로그램을 작성합니다. 텍스트 작업을 마쳤으며 결과를 링크드 목록에 저장해야합니다. 어떻게해야하는지 개념이 있습니다. 내 프로그램에는 다음과 같은 요소가 있습니다. variables(name, type)
constants(name)
typedef(name and components)
procedures(local variabl
의 연산자로 내 목표는 식에서 AB = 3 그때는 것을 읽을 때 같이 C 언어의 매우 단순한 어휘 분석을 구현하는 것 로 분석 : ID<ab> OP<=> LIT<8> (op will be "operator",LIT will be "literal").
당신이 표현 을 읽을 때 상황도있다? b : c. 일반적으로 다음과 같이 분석 될 것입니다. ID<a>
Alex와 Happy를 사용하여 작은 컴파일러를 작성하는 법을 배우고 있습니다. 나는 사용자에게 의미있는 오류 메시지를 제공 할 수 있도록 내 AST 노드에 대한 행 및 열 정보를 유지하려고합니다. 내가 어떻게 그 계획을 세우는지를 설명하기 위해 작은 예제 (아래 코드 참조)를 썼다. 나는 문제에 접근하는 방법을 알기를 원한다. (AlexPosn을 토큰에
언어와 같은 C의 컴파일러에 대한 스캐너를 빌드하려고하는데 효율적인 방법으로 토큰을 생성하는 데 걸리는 시간이 있습니다 ... 스캔이 있습니다. 함수 : vector<Token> scan(string &input);
또한 어휘 적으로 올바른 파일을 읽고 주석을 제거하는 main 함수. (이 언어는 /* , */ 개의 주석을 지원하지 않습니다.) 토큰을
일부 문자열을 토큰에 매핑하는 keyword_table을 정의하고이 테이블을 parser.mly 및 lexer.mll에 대해 표시하고 싶습니다. 테이블 parser.mly에 정의되어야한다는 것, %{
open Utility (* where hash_table is defined to make a table from a list *)
let
나의 문법에는 나는 지정을위한 규칙이있다. 그것은 내가 알고 싶은 것은 내가 파일에 선언 된 모든 클래스 이름과 일치 할 수있는 방법이다, 나는 정수와 같은 일부 하드 코드 된 값을 문자열 등 형태 VAR_TYPE에서 assignment: VAR_TYPE ID '=' expr; 입니까? 누군가가 class Foo 및 Class Bar을 선언했다고 가정합니다