Grako와 Python을 사용하여 Cisco IOS 및 ASA 구성을위한 파서를 작성하려고합니다. 예를 들어, 'description'키워드는 interface 범위 안에 있어야하지만 interface에 대한 옵션은 여러 개이며 모두 선택 사항이며 순서가 바뀔 수 있습니다. 예를 들어 EBNF에서 '범위가 지정된'키워드를 나타내는 방법을 찾으려고합니다.
중첩 가능한 조건을 설명하고 싶습니다. 여기에 내가 함께 일하고 있어요 무엇 : 여기 foo AND bar
대서양 표준시 : 나는 라인과 AST를 생성 할 수 expr = (/[_a-zA-Z][a-zA-Z0-9_-]*/) ;
condop = ("AND" | "OR") ;
condition = expr { condop condition } ;
s
나는 grako 맞춤 ebnf 문법을 작성하려고합니다. 정규 표현식을 파싱하려고 할 때 생성 된 파서가 공백이나 주석을 넘어서지 않는 것으로 나타났습니다. 문서는,이 공백이나 의견이 이상 진행되지 않는 다른 표정과는 달리 그 주제 에서 다음을 말한다. 이를 위해 정규 표현식을 고유 한 규칙의 유일한 용어로 사용하십시오. 그런 다음 하나의 정규식 규칙만으로
원래 Perl (참조 Chessa# on github 참조)을 기반으로 작성한 minilanguage를 다시 작성하지만 의미를 적용 할 때 여러 가지 문제가 있습니다. Here is the grammar : (* integers *)
DEC = /([1-9][0-9]*|0+)/;
int = /(0b[01]+|0o[0-7]+|0x[0-9a-fA-F]+)/
Grako가 생성 한 파서 사용자에게 표시되는 오류를 개선하는 최선의 방법을 찾으려고합니다. Grako가 생성 한 파서가 입력 파일의 구문 분석 문제를 해결할 때 표시되는 기본 구문 분석 오류가 도움이되지 않는 것 같습니다. 오류는 실제 오류가 다른 경우 입력 파일의 한 부분에 문제가 있음을 암시하는 것처럼 보입니다. 나는 Graco Semantics 클래
간단한 왼쪽 재귀 문법을 설명하기 위해 grako를 사용하려고하는데, 그렇게하기가 어렵습니다. 마우스 오른쪽 재귀 아무 문제없이 작동합니까 : symbol = /[a-z]/ ;
condition = condition "AND" symbol | symbol ;
start = condition $ ;
그러나, 그것은 작동하지 않습니다 : 내가 찾은 모든