Bạn có biết về bất kỳ máy phát điện mã nguồn mở c + + trạng thái nào (sẽ hoạt động trên linux) không? Lý tưởng nhất là công cụ sẽ xuất tất cả các logic máy nhà nước và các sơ khai. Ngoài ra nó sẽ chấp nhận UML hoặc tệp kê khai có thể đọc được của con người làm đầu vào.C++ máy tạo trạng thái máy
Trả lời
Điều gần nhất tôi thấy có thể phù hợp với bạn là StateProto. Nhưng nó xuất ra mã C#.
Bạn nên xem StateProto và QHSM. Dự án mã nguồn mở ở đây: http://code.google.com/p/gqhsm/
StateProto là mã nguồn mở và các hàm đầu ra có thể được sửa đổi thành mã C++ đầu ra cho bạn. Nhưng nó sử dụng các đại biểu.
Tôi khuyên bạn nên sử dụng thiết kế theo hướng dữ liệu để thay thế. StateProto sẽ xuất ra các máy trạng thái XML và có mã C# để tải XML và điều khiển máy trạng thái từ dữ liệu.
Bạn có thể tìm thấy nhiều triển khai QHSM trong C++. Tôi không biết liệu có trình tải XML nào có sẵn hay không.
Bạn có thể thấy khung STTCL thú vị của mình. Nó không phải là một máy phát, nhưng các lớp (cơ sở) có sẵn ánh xạ rất tốt với các định nghĩa thống kê UML.
http://makulik.github.com/sttcl/
Hãy nhìn vào các QP C++ khuôn khổ mã nguồn mở/máy nhà nước và các công cụ mô hình QM miễn phí (xem http://www.state-machine.com). Khung công tác QP/C++ hỗ trợ các máy trạng thái phân cấp (các thống kê UML) và cho phép bạn thực hiện đồng thời nhiều máy trạng thái như vậy. QP/C++ đã được chuyển sang Linux (xem http://www.state-machine.com/linux).
Bây giờ, liên quan đến trình tạo mã, công cụ mô hình QM miễn phí (xem http://www.state-machine.com/qm) cho phép bạn vẽ sơ đồ trạng thái máy và tạo mã C++ cho khung công tác QP/C++. QM chính nó là nền tảng chéo và chạy trên Linux, cũng như Windows và Mac OS X.
Hãy xem Thingml. Nó cung cấp một cú pháp văn bản (độc lập với C) cho các máy trạng thái giống UML. Một cái gì đó như:
import "../hardware/bricks/led.thingml"
thing Blink includes LedMsgs, TimerMsgs
{
required port HW
{
sends led_toggle, timer_start
receives timer_timeout
}
statechart BlinkImpl init Blinking
{
state Blinking
{
on entry HW!timer_start (1000)
transition -> Blinking
event HW?timer_timeout
action HW!led_toggle()
}
}
}
ThingML có thể tạo mã C dễ dàng nhúng vào chương trình C++. Nó thực sự có thể tạo ra nhiều hơn sơ khai. Chúng tôi thực sự có thể tạo ra mã hoạt động đầy đủ. Tất nhiên, khi nói đến chi tiết thực hiện ở mức độ thấp, chúng tôi cung cấp một phương tiện để trộn mã ThingML với mã C.
Lưu ý rằng chúng tôi cũng nhắm mục tiêu Java và JavaScript
Bạn nên có một cái nhìn tại Yakindu: http://statecharts.org/
- 1. Trạng thái phân phối trên nhiều máy
- 2. GUI để tạo máy trạng thái trực quan
- 3. Trạng thái đọc từ Máy in Zebra
- 4. Thiết kế máy trạng thái Python
- 5. Máy trạng thái sự kiện JavaScript
- 6. Cách tiếp cận khác .net cho máy trạng thái động
- 7. Máy trạng thái hữu hạn: Thiết kế kém?
- 8. Nhiều máy trạng thái trong một mô hình?
- 9. Kiểm tra trạng thái đăng nhập ở phía máy khách
- 10. Máy trạng thái hữu hạn (FSM) và Java
- 11. GUI là một máy trạng thái hữu hạn
- 12. Mở rộng máy chủ trạng thái phiên ASP.NET
- 13. SignalR: phát hiện trạng thái kết nối trên máy khách
- 14. Máy chủ trạng thái phiên ASP.NET so với phiên InProc
- 15. Trạng thái máy khách Lync không hợp lệ
- 16. Đảm bảo trạng thái tệp trên máy khách được đồng bộ với máy chủ NFS
- 17. Kiểm tra trạng thái dịch vụ chạy trên máy tính từ xa bằng C#
- 18. C# có bao gồm các máy trạng thái hữu hạn không?
- 19. Làm thế nào một bean phiên trạng thái lấy lại trạng thái khi máy khách quay trở lại?
- 20. Kéo cột trạng thái vào quá trình chuyển đổi bằng rubyist-aasm (hoạt động như máy trạng thái)
- 21. C hoặc C++ Trạng thái trả lại
- 22. Tạo Máy chủ SMTP C#
- 23. Tạo Sơ đồ Trạng thái Kéo/Thả
- 24. Trạng thái mức/trạng thái Pygame
- 25. máy trạng thái hữu hạn hướng sự kiện + chủ đề: làm thế nào?
- 26. Xác nhận một máy trạng thái hữu hạn (sử dụng AASM) trên Rails
- 27. Wordpress tạo trạng thái bài đăng mới?
- 28. Trạng thái truy vấn C++ atomic_flag
- 29. Cập nhật Trạng thái Twitter trong C#
- 30. C++ Qt: Kiểm tra trạng thái hiện tại của QStateMachine
Bạn đã nhìn [Boost.MSM] (http://www.boost.org/libs/ msm /)? Nó có một EDSL có nghĩa là bắt chước UML và có hiệu suất thời gian chạy tuyệt vời. – ildjarn
lex và yacc chắc chắn tạo các máy trạng thái, và g ++:) – perreal
Tôi sẽ đề xuất [SMC] (http://smc.sourceforge.net/) nhưng nó không hỗ trợ UML. – tinman