jison을 사용하여 JavaScript 언어의 하위 집합에 대한 파서를 만들고 싶습니다. 몇 가지 문제가 있습니다. 은 첫째 나는 비단 stmt이 정의를했고, 그것을 작동 : 나는 stmt에 다음과 같은 규칙을 추가, stmt
: FOR LPAREN varlist_decl SEMICOLON expr SEMICOLON expr RPAREN stmt
GOD SAKE !! 단락이있는 문서를 인식하는 간단한 jison 문법을 작성하는 방법 ??? 나는 다음과 같은 문법을 사용하고 있습니다 : %lex
%%
(\r?\n)+\s* return 'NL'
[^\S\r\n]+ return 'SPACE'
. return 'CHAR'
<<EOF>> return 'NL'
/l
제목이 불명확하면 미안하고 렉싱 및 구문 분석을 처음 사용합니다. 기본적으로 나는 일부 텍스트를 구문 분석하기 위해 Jison을 사용하고 있으며 렉서가 들여 쓰기를 이해하도록 노력하고 있습니다. 질문에 조금 있습니다 : (\r\n|\r|\n)+\s* %{
parser.indentCount = parser.indentCount || [0]
Jison에서 프로그래밍 언어 용 문법을 만들려고하고 있는데 문제가 발생했습니다. 내 언어의 기능은 다음과 같은 구문으로 호출됩니다 functionName arg1 arg2 arg3
그들은이 같은 parenthesizes에 싸여 될 필요가 단순한 표현하지 않은 인수를 수행하기 위해 : functionName (1 + 2) (3 + 3) (otherFun
내가 들여 쓰기/dedent와 구문과 같은 옥에 대한 문법을 구현하기 위해 노력하고있어 : div
p id="text"
하지만 EOF에 문제가있어 : Error: Parse error on line 4:
div p id="text"
----------------^
Expecting 'DEDENT', 'IDENTIFIER', got 'E
나는 다음과 같은 구조를 가지고 yacc에 문법의 일부 (또는 오히려 jison하지만, 이주 동일한 공통 기본)와 같은 : Type
: IDENT
| Type "[" "]"
| Type "*"
| "func" "(" Types ")" "=>" Type
;
Types
: /* No arguments *
안녕하세요 저는 Jison의 초보자이며이를 배우려고했습니다. http://techtonik.github.io/jison/try/에있는 온라인 jison 파서 계산기 코드를 사용합니다. 그것은 표현 5*PI^2.
을 위해 잘 작동하지만 줄 바꿈에 새로운 표현을 추가 할 때, 파서는 줄 바꿈을하지 않으며이 같은 줄에있는 것처럼 다른 표현을 구문 분석하려고합
상당히 복잡한 표현식 언어를 구문 분석 할 수있는 Jison을 사용하여 파서를 작성하고 있습니다. 이 언어에서 , 그것은 지원 문법 같은 : 여기 stats_expression
: stats_function '(' eval_expression ')'
| other_stats_aggregation
;
stats_function
나는 JISON을 사용하는 데 약간의 문제가 있습니다. 점으로 분리 된 대괄호 안에 2 개의 문자열을 일치 시키려고합니다. 내가 만나는 문제는 문자열 중 하나라도 숫자 또는 빼기로 시작하면 MINUS 또는 NUMBER [어느 것이 맞음]으로 인식하지만 처음에는 STRING 정규 표현식이 사용자가 입력 한 문자열과 일치하는지 확인한 다음 그 후에 NUMBER