Prism

Prism

Prism은 Ruby의 파서(parser)예요. 팀이 직접 개발한 파서라는 점에서, "Ruby 파싱이 갑자기 감당 가능해졌다!"고 말하는 개발자들이 많죠. 이 모듈은 Prism 파서를 Ruby 레벨에서 접근할 수 있게 해 줘요.

출처: Ruby 4.0 API

본문

Prism 모듈의 여러 클래스 메서드는 대부분 serialization API를 이용해서 Prism.* API를 그대로 미러링해요. 각 메서드가 "Mirror the Prism.xxx API"라는 설명을 갖고 있는 게 바로 그 이유예요. 즉 동일한 기능을 직렬화 기반으로 다시 노출한다고 보면 돼요.

Constants

BACKEND

CRuby에서 기본 백엔드는 C 확장이에요.

VERSION

버전 상수는 pm_version을 호출한 결과를 읽어서 설정돼요.

Public Class Methods

dump(source, **options)

serialization API를 사용해 Prism.dump API를 미러링해요.

dump_file(filepath, **options)

serialization API를 사용해 Prism.dump_file API를 미러링해요.

lex(code, **options)

serialization API를 사용해 Prism.lex API를 미러링해요.

Prism::lex_compat(source, **options) → LexCompat::Result

값이 Ripper::lex의 반환 값과 아주 비슷한 토큰 배열인 파싱 결과를 돌려줘요. 가장 큰 차이는 :on_sp 토큰이 발행되지 않는다는 점이에요. 지원되는 옵션은 Prism::parse를 참고하세요.

lex_file(filepath, **options)

serialization API를 사용해 Prism.lex_file API를 미러링해요.

Prism::lex_ripper(source) → Array

Ripper lex로 렉싱해요. 공백 이벤트는 버리지만, 그 외에는 같은 토큰을 돌려줘요. source의 구문이 유효하지 않으면 SyntaxError를 발생시켜요.

Prism::load(source, serialized, freeze) → ParseResult

source를 참조 삼아 직렬화된 AST를 트리로 로드해요.

parse(code, **options)

serialization API를 사용해 Prism.parse API를 미러링해요.

parse_comments(code, **options)

serialization API를 사용해 Prism.parse_comments API를 미러링해요.

parse_failure?(code, **options)

serialization API를 사용해 Prism.parse_failure? API를 미러링해요.

parse_file(filepath, **options)

serialization API를 사용해 Prism.parse_file API를 미러링해요. 이 메서드는 Ruby 문자열 대신 네이티브(native) 문자열을 사용해요. 사용 가능할 때 mmap을 쓸 수 있게 하려는 의도예요.

parse_file_comments(filepath, **options)

serialization API를 사용해 Prism.parse_file_comments API를 미러링해요. Ruby 문자열 대신 네이티브 문자열을 사용해 mmap을 활용해요.

parse_file_failure?(filepath, **options)

serialization API를 사용해 Prism.parse_file_failure? API를 미러링해요.

parse_file_success?(filepath, **options)

serialization API를 사용해 Prism.parse_file_success? API를 미러링해요.

parse_lex(code, **options)

serialization API를 사용해 Prism.parse_lex API를 미러링해요.

parse_lex_file(filepath, **options)

serialization API를 사용해 Prism.parse_lex_file API를 미러링해요.

parse_stream(stream, **options)

serialization API를 사용해 Prism.parse_stream API를 미러링해요.

parse_success?(code, **options)

serialization API를 사용해 Prism.parse_success? API를 미러링해요.

profile(source, **options)

serialization API를 사용해 Prism.profile API를 미러링해요.

profile_file(filepath, **options)

serialization API를 사용해 Prism.profile_file API를 미러링해요.

scope(locals: [], forwarding: [])

주어진 localsforwarding 옵션으로 새 스코프를 만들어요. scopes 옵션을 받는 Prism.* 메서드 중 하나에 넘길 수 있는 형태예요.

Private Class Methods

dump_options(options)

주어진 옵션을 직렬화된 옵션 문자열로 변환해요.

dump_options_command_line(options)

command_line 옵션에 대해 덤프해야 할 값을 돌려줘요.

dump_options_version(version)

version 옵션에 대해 덤프해야 할 값을 돌려줘요.