Tôi vấp vào ngôn ngữ RED vào ngày khác và chi tiêu (nhiều hơn hoặc ít hơn nghĩa đen) 24 giờ cuối cùng "học" nó. Tôi đã cạn kiệt các kỹ năng googling của mình cố gắng tìm giải pháp cho một vấn đề đơn giản mà chỉ né tránh các kỹ năng và logic của tôi, vì vậy hy vọng ai đó ở đây có thể dẫn tôi đến con đường dẫn đến sự công bình.Phân tích cú pháp Rebol/RED. Lưu mã ASCII từ chuỗi được phân tích cú pháp thành biến?
Như tên đề xuất, tôi đã cố gắng phân tích cú pháp một chuỗi đơn giản (bất kỳ chuỗi văn bản ngẫu nhiên nào), lấy từng ký tự (acter) s và sau đó cố gắng lưu chúng vào một biến. (Một chuỗi/mảng/bất kỳ loại thực sự)
Điều tốt nhất tôi có thể làm là với mã sử dụng:
alpha: charset [#"a" - #"z"]
testString: "this is just random rambling to test parsing!"
như điều kiện tiên quyết và một cái gì đó như thế này khi (cố gắng) phân tích:
probe parse teststring [copy text to alpha (append text2 to-integer(to-char text)) to end]
Lưu mã (chữ cái đầu tiên) mã ascii thành văn bản2 và chạy tập lệnh nhiều lần để thêm mã ASCII (cùng chữ cái đầu tiên) một cách chính xác nhiều lần liên tiếp:
CONSOLE OUTPUT
>> probe parse teststring [copy text to alpha (append text2 to-integer(to-char text)) to end]
true
== true
>> probe text2
"34"
== "34"
>> probe parse teststring [copy text to alpha (append text2 to-integer(to-char text)) to end]
true
== true
>> probe text2
"3434"
== "3434"
Rõ ràng phân tích cú pháp của tôi là không thực sự "lặp" các đặc điểm cá nhân của chuỗi hay không lưu chúng đúng cách trong khi làm việc đó. Có lẽ phân tích cú pháp của tôi thực sự lấy toàn bộ chuỗi từ TO đến END và tôi cố gắng chuyển đổi chuỗi đó thành mã ASCII hoặc cái gì khác đang xảy ra ở đây?
BẤT CỨ trợ giúp sẽ được đánh giá rất cao, vì tôi không thể tiến hành học RED trước khi giải quyết tình trạng khó xử này và hiểu cách phân tích cú pháp thực sự hoạt động trong RED.
Sử dụng 'phân tích-trace 'để gỡ lỗi –
Tôi nghĩ rằng bạn đang thiếu một số nội dung trong mã thử nghiệm điều kiện tiên quyết để tạo lại, như' text2: "" ' –
Rất đúng, văn bản 2 không được khai báo thực sự. Là một miếng dán cẩu thả có vẻ như, xin lỗi vì điều đó. –