2009-04-08 15 views

Trả lời

8

Tôi nghĩ rằng bạn có thể để điều này bằng cách sử dụng tùy chọn --name-prefix để Bison, và các tùy chọn để --prefix Flex.

Trong cả hai trường hợp, chúng cho phép bạn thay thế tiền tố "yy" mặc định được sử dụng trên các hàm được tạo bằng tiền tố do bạn chọn.

+0

Tôi đang sử dụng lex và yacc nhưng điều này là tốt để biết liệu chúng tôi có thay đổi sang phiên bản phần mềm miễn phí hay không. Cảm ơn dave –

+0

ah, nhưng bạn đã đề cập đến họ trong các thẻ của bạn ... – Alnitak

+0

True. Nếu họ chỉ có cách để có được nó để làm việc là sử dụng flex và bò rừng. Chúng tôi sẽ có thay đổi để sử dụng chúng. –

2

Có, có thể.

yacc phải có cờ -p, nơi bạn có thể chỉ định tiền tố khác thay vì "yy" mặc định.

Tệp được tạo bởi lex conatin chỉ có một biểu tượng được sử dụng bên ngoài: yylex. Ví dụ: bạn có thể biên dịch với -Dyylex = mySecondLex.

+0

Tôi cần phải kiểm tra xem nó nhưng đó chỉ là những gì tôi cần. Cảm ơn dave. –

+0

Tôi hy vọng phiên bản yacc của bạn có cờ này. Nếu không, bạn có thể chuyển sang bò rừng, nó không thực sự khác nhau. – Ingo

+0

Không phải là biểu tượng của họ như yytext và vân vân (yywrap?) Cũng được sử dụng bên ngoài? –

1

Không phải là câu trả lời trực tiếp, nhưng bạn có thể cân nhắc sử dụng cách tiếp cận chung hơn như GoldParser cho phép bạn sử dụng một công cụ chung để xử lý LALR và DFA được tạo từ ngữ pháp của bạn. Bằng cách này, bạn có thể sử dụng bất kỳ số lượng ngữ pháp khác nhau trong cùng một ứng dụng và thay đổi ngữ pháp không tạo mã nguồn mới mà chỉ là các tệp bảng mới (có thể được bao gồm dưới dạng tài nguyên được nhúng hoặc tương tự).

+0

Chúng tôi không ở vị trí để thay đổi hệ thống tại mo nhưng có thể là một trong những điều cần xem xét trong tương lai. Cảm ơn dave. –

1

Lex và yacc chuẩn không có cách nào để thực hiện điều đó. Flex và Bison làm, cũng như một số triển khai khác. Vì bạn đã nói (trong nhận xét) rằng bạn không sử dụng flex và bison, phiên bản nào của lex và yacc bạn đang sử dụng?

+0

POSIX yêu cầu yacc hỗ trợ thay đổi tiền tố biểu tượng bằng 'tiền tố -p' (thay cho 'yy'). Thật thú vị, nó không yêu cầu cho lex; Tôi cho rằng trong thực tế nhiều người đã viết mã phân tích từ vựng và do đó nó không quá quan trọng. –