2015-02-04 1 views
2

가 nodejs의 중고품 객체로 변환 "없습니다"하는 경우 :절약 JS : 노드 - 예약 언어 키워드를 사용할 수 없습니다 :

thrift -r --gen js:node state_service.thrift 

다음과 같은 오류가 발생 : 코드에서

[ERROR: /state_service.thrift:33] (last token was 'not') Cannot use reserved language keyword: "not"

의 선을 33 주위 :

typedef bool Not 
struct Exp { 
    1: string left 
    2: Not not 
    3: BinaryOp op 
    4: AnyValue right 
} 

내가 가장 최근의 드리프트 버전 0.9.2

을 사용하고 있습니다
+0

'아니다'는 타입이므로 믿을 수 있지만 ... '아니다'는 속성 이름입니다 (이 부분은 분명히 좋지 않습니다 ...) ...이 절약은 효과가 없을 것이라고 생각합니다. 많은 언어들로 또한 ... 나는 그런 이름의 타입조차도 피하도록 제안 할 것이다. –

+0

일반적인 언어 키워드는 피하십시오 ... 쉬워야합니다 ... 맞습니까? –

+0

잘못된 js 변환기 때문에 처리 코드 만 변경하고 싶지는 않습니다. – nauti

답변

0

해결 방법은 입니다. Thrift 컴파일러의 권고에 따라이라는 예약어 키워드를 사용하지 마십시오. 이 키워드는 이유 때문에 예약되어 있습니다. Thrift는 언어 간 도구이며 not은 실제로 일부 키워드입니다.

I don't want to change the processing code only because of a faulty js converter.

나는 구걸한다. 결함이있는은 정상적으로 작동하지 않습니다. Thrift는 분명히하려고하는 것이 불법입니다 (오늘 현재)이며 그 문제점은 무엇인지 알려줍니다.

다른 말로하면, 리눅스에서는 파일 이름에 대문자와 소문자를 넣을 수 있습니다. 실제로는 이상한 것들을 많이 넣을 수 있지만 쉽게 만들 수 있습니다. 따라서 FILEfile을 같은 폴더에 만들면 완벽하게 작동합니다. 이제 프로그램을 가져 와서 Windows에서 실행할 경우 문제가 생겨 조만간 문제가 생겨 "은 잘못된 운영 체제로 인해 처리 코드를 변경하지 마십시오."이라고 불평하기 시작할 수 있습니다.

불평하는 것은 그 과정에서 방출되는 엔돌핀이 재미있는 시간을 가지게 할 것이라는 점을 제외하고는, 깊은 구멍에서 벗어나는 데 도움이되지 않습니다. 이 솔루션은 물론 Microsoft가 결함이있는 OS를 수정하기까지 기다리는 것이므로 규칙을 작성해야합니다. 옳은?

물론 아닙니다. 따라서 구현이 잘못되었다고 생각한다면 - 괜찮습니다! 이것은 오픈 소스이며 아무도 완벽을 주장하지 않았습니다. You are free to provide a patch으로 보내 주시면 기꺼이 검토해 드리겠습니다. 그러나 Thrift가 현재 지원하는 20 개 이상의 모든 언어로 테스트했는지 확인하십시오.

+0

답변 해 주셔서 감사합니다.이 조언에 대한 참조를 제공해 주시겠습니까? 사실 그것은 오픈 소스이며 공동 작업은 옵션이며 실제로 필요한 것인지를 알아야합니다. 새로운 언어가 새로운 언어로 등장 할 수 있기 때문에 키워드 관리가 까다 롭습니다. 말하자면, 스칼라는'_'을 가지고 있고 우리 모두는 위대한 언더 스코어를 알고 있습니다 .js! 이것은 스쿼터 생성기가 backticks를 사용하여 이것을 처리하는 whty입니다. 그렇다면 해결 방법이있는 언어에서 사용할 수 있다고 가정하는 것이 합리적입니다 (js에서 문자열 기반 액세스). 참고 : 'not'은 * thrift * 키워드가 아닙니다. (호언 장담하지는 ​​않습니다 ^^) –

+1

그러나 [이 파일]에는 'not'가 표시됩니다 (https://git1-us-west.apache.org/repos/asf?p=thrift.git;a=blob_plain). ; f = 컴파일러/cpp/src/thriftl.ll; hb = 281bdae6b2e40694db57f19b0ee13eb51b575c39). 나는 그것이 ** 쓰레기 ** 키워드라는 것을 의미하지 않는다고 생각합니다 !! 맞다면, 예약어에 대한 공식 Thrift 문서를 찾을 수 없습니다 : - /. 모든 포인터를 환영합니다. 감사합니다. –

+0

[출처에서만] (https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob;f=compiler/cpp/src/ thriftl.ll; hb = HEAD) ('thrift_reserved_keyword'를 찾으십시오). 내가 알고있는 그것에 관한 명백한 의사는 없지만, OTOH의 메시지는 매우 정확하고 확실히 행동 할만큼 충분히 정확합니다. "* 새로운 언어가 새로운 언어로 등장 할 수 있기 때문에 키워드 관리가 까다로운 문제입니다."- 정확합니다. BTW에서는 예약어 나 구성 요소와 관련하여 이미 여러 가지 언어 관련 문제가 있지만 개선해야 할 부분이 있습니다. 따라서 패치 요청 : – JensG

관련 문제