Cố gắng tìm hiểu tinh thần tăng cường và ví dụ được đưa ra trong tài liệu khiến tôi hơi bối rối.Tăng tinh thần Số phân tích cú pháp số La Mã Ví dụ
Đề cập đến mã này:
http://www.boost.org/doc/libs/1_46_1/libs/spirit/example/qi/roman.cpp
Riêng phân khúc này của ngữ pháp:
start = eps [_val = 0] >>
(
+lit('M') [_val += 1000]
|| hundreds [_val += _1]
|| tens [_val += _1]
|| ones [_val += _1]
)
Có thể ai đó giải thích cho tôi lý do tại sao nó được + thắp sáng ('M') và không * thắp sáng ('M'). Bởi vì sau khi tất cả không thể có không hoặc nhiều M so với một hoặc nhiều M?
Sử dụng * lit ('M') và CCLLIX. Vậy tại sao kết quả trả về 250 và dừng tại LIX? Như bạn đã nói, không nên thêm 1000 vào _val cho 0 trận đấu và CCLLIX không có M. Vậy có nên trả lại 1250 không 250? – Integer
@Integer: Tôi đã thêm phần giải thích. 'CCLLIX' KHÔNG phải là số hợp lệ. – Nawaz
Bắt tốt. Xin lỗi vì điều đó. Nhưng ngay cả khi tôi sử dụng CCLIX cả hai sử dụng * và + kết quả trong câu trả lời đúng của 259.Tại sao không * kết quả trong 1259 như bạn nói? – Integer