Perl 6의Grammar 학습 총결산
과거의 모든 것을 사용할 수 있지만, 업데이트된 것이 있다.업데이트된 언어.이 언어들은 모두 서로 통한다.어떤 언어로 쓴 코드든지 다른 코드로 변환할 수 있다.
Perl 6에서 다음 identifier를 허용합니다.
person's-name first-name middle-name last-name
그러나 다음 형식은 허용되지 않습니다.
list->vector string? sort!
Perl 6은 여러 연산자를 정의하지만 이 연산자는 사용자 정의할 수 없으며 소스에서만 정의할 수 있습니다.
+ - * ^ /
JSON 데이터 교환 형식이 있는 이상 알고리즘 교환 형식이 있어야 한다. 마치 제품을 출력하고 기술도 출력하는 것 같다.
정규 표현식은 규칙을 묘사하는 언어이고 전통적인 언어는 알고리즘을 묘사하는 언어이다.regex는 Prolog와 같습니다. 우리가 원하는 것을 설명하면 컴퓨터가 조건에 맞는 서열을 계산해 줍니다.
Perl 6가 레지스트를 첫 번째 유형의 대상으로 추상화한 것은 이상하지 않지만, 그람마도 추상화했다.
하나의 클래스나 모듈처럼 Grammar을 디자인하려면 Perl 6 디자인 클래스의 규칙을 배워야 한다.
regex가dot(.)처음에, 이 regex는 Match Object에 저장되지 않습니다. 즉, Match에서 기본적으로 이름이 붙어서 포획됩니다.
regex foo { <.bar> }
그럼 레지스트에서도 최대한 브레이크를 사용해서 디자인을 해보도록 하겠습니다.
Grammar에서 regex도 키워드가 있습니다.
my $match = YourGrammar.parse($some-string);
괄호와 명명regex만 물건을 잡을 수 있지만, 내장된 <:LC>는 물건을 잡을 수 있습니까?
기본값, 호출.parse () 이 방법은Grammar에서 탑의regex를 먼저 찾아서 문자열을 해석합니다.탑을 찾지 못하면 오타가 난다.그래서 키워드야.탑을 그람마의 입구로 삼을 수 있다.물론, 너는 쓰지 않아도 된다.
my $match = YourGrammar.parse($some-string, :rule<fred>);
그람마는 클라쓰처럼 계승할 수 있고 개작할 수 있다.반드시 핵심 디자이너가 Perl 6, Perl 5 Ruby 등 언어의 Grammar를 디자인하여 모두가 테스트할 수 있도록 해야 한다.이 언어에 익숙해지면 Antrl 등 소프트웨어의 g4 자원을 변환할 수 있다.
코드는 대괄호 안에 직접 박을 수 있지만 계승하는 문법과 문법 규칙은 무엇입니까?
grammar Foo {
regex foo { blah blah { say "hi" } blah blah }
}
"aaa" ~~ / a { say "hi" } b/
regex에 코드를 삽입하려면 백트랙킹을 조심스럽게 거슬러 올라가야 합니다.
또 다른regex에 코드를 삽입하는 행위는 하위 프로그램을 삽입하는 것이다.
grammar foo {
regex foo { <.setup> blah blah }
method setup {
# do stuff here
}
}
Perl 6의 정규 표현식 언어는 모든 언어에 없는 것이다.
미리 정의된 실행 actions object:
my $match = Grammar.parse($string, :rule($start-regex), :actions($actions-object));
Antlr는 Java의 도구일 뿐이고 Perl 6는 같은 일을 하는 언어이다.가상 머신, 해석기, 그리고 컴파일러가 내장되어 있다.
수량 기호가 있는 포획은 수조에 저장되는데 Perl 5도 그렇지 않을까요?
if "hello" =~ s/(\w)+/a/g { say @+; }
실제 한 위치만 포착했기 때문에 Perl 5는 그렇지 않다.가능한 한 regex로 지정한 위치의 데이터 구조를 가져옵니다.
token과 rule
token이 정의한regex는 영원히 거슬러 올라가지 않습니다:
token ident { [ <alpha> | \- ] \w* }
등가:
regex ident { [ <alpha>: | \-: ]: \w*: }
rule가 정의한 규칙은 거슬러 올라갈 수 없을 뿐만 아니라, 기본값은 sigspace 모드입니다.
regex :ratchet :sigspace { ... }
token, rule는 모두regex에서 진화한 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.