범위를 위해 중괄호를 사용하지 않기 때문에 공백에 의존하는 Lua를 구문 분석하려고합니다. 다른 규칙이 일치하지 않는 경우에만 공백을 제거하는 것이 가장 좋은 방법이라고 생각하지만 그 방법을 찾을 방법이 없습니다. 누군가 나를 도울 수 있습니까?공백을 제거하지만 마지막으로 사용합니까?
0
A
답변
1
Lua's documentation에서 보니 공백을 고려하지 않아도됩니다.
파서 규칙 ifStatement
:
ifStatement
: 'if' exp 'then' block ('elseif' exp 'then' block 'else' block)? 'end'
;
exp
: /* todo */
;
block
: /* todo */
;
가 모두 일치해야합니다 :
if j==10 then print ("j equals 10") end
과 :
if j<10 then
print ("j < 10")
elseif j>100 then
print ("j > 100")
else
print ("j >= 10 && j <= 100")
end
AFAIK, 계정으로 공간을 필요가 없습니다. 따라서 다음을 추가 할 수 있습니다 :
Space
: (' ' | '\t' | '\r' | '\n'){$channel=HIDDEN;}
;
문법에 추가 할 수 있습니다.
편집 거기 ANTLR 위키에 루아 문법 보인다
: http://www.antlr.org/grammar/1178608849736/Lua.g
는 그리고 문이 약간 위의 문법과 다른 경우 그것이 내가에게 내 제안을 보인다
'if' exp 'then' block ('elseif' exp 'then' block)* ('else' block)? 'end'
보이는대로 올바른
입니다.
관련 문제
- 1. 모든 소수 자릿수를 제거하지만 마지막으로
- 2. 내 소스 경로에서 공백을 어떻게 사용합니까?
- 3. C# 형식의 통화에서 선행 공백을 사용합니까?
- 4. 이중 줄은 제거하지만 새 줄은 지우지 않습니다.
- 5. 저장소에서 파일을 제거하지만 로컬로 보관하십시오.
- 6. object 태그를 제거하지만, 포함 둡니다
- 7. 함수가 마지막으로
- 8. IE는 공백을 무시할 때 공백을 무시합니다.
- 9. 텍스트의 공백을 인식합니다.
- 10. 공백을 제거하십시오.
- 11. 사이드 바에있는 모든 것을 제거하지만 하나의 메뉴
- 12. 특정 열을 제거하지만 여전히 SQL 문에 포함합니다.
- 13. 발사대에서 제거하지만 활성화/시작 가능을 유지
- 14. preg_replace 빈 태그를 제거하지만 blockquotes의 끝을 유지합니다.
- 15. 레일 3 - 사용자를 제거하지만 내용은 유지합니까?
- 16. 문서에서 dom 요소를 제거하지만 변수로 저장합니까?
- 17. lxml에서 태그를 제거하지만 모든 내용을 유지하려면 어떻게해야합니까?
- 18. Drupal FileField 노드에서 파일을 제거하지만 서버에 남김
- 19. PHP Regexp - 여분의 공백을 제거하고 줄 바꿈을 유지하십시오.
- 20. 마지막으로 C#에서 마지막으로 정렬하지 않고 배열 크기 조정
- 21. "마지막으로"MSBuild 대상
- 22. 개미에서 마지막으로 시도하십시오
- 23. 마지막으로 예외 처리
- 24. 문자열에서 문자열이 마지막으로 발견됨
- 25. 마지막으로 HTML5 DOCTYPE이 표시됩니까?
- 26. 데이터베이스가 마지막으로 업데이트 되었습니까?
- 27. 스크립트/개체로드 마지막으로 만들기
- 28. 결과를 마지막으로 제한합니다.
- 29. 마지막으로 아이에게 이해
- 30. 마지막으로 읽는 위치를 저장
나는 Lua에 대한 경험이 없으므로, 공백을 무시할 수 없을 때 (예를 들어'$ channel = HIDDEN'을 쓰면) 예제를 줄 수 있습니까? –
예를 들어 if 문법은 다음과 같습니다 :''''''''''''''''''''''''''''''이고 공백은 식별 단어가 올바르게 읽혀 지도록 중요합니다. – RCIX