Tìm commented code trong file .c, .h
Chào mọi người,
Mình đang cần có 1 đoạn script (refer python) có thể nhận biết được commented code trong file .c hoặc .h, lấy VD như mình có file C có nội dung như sau:
#include <stdio.h>
/*
* Main function
*/
int main(int agrc, int* agrv[]) {
int a = 0,
int b = 10;
// this is commented code in block
/*int c = 11;
c++;*/
if(a > b) {
a = b;
// this is commented code in line
//c++;
}
return 0;
}
Đoạn script mình mong muốn tối thiểu phải trả về True
(trường hợp file C có tồn tại commented code) hay False
(không tồn tại commented code), hoặc cao cấp hơn là xác định dc số line và in ra màn hình nội dung commented code (mình nghĩ khi xác định dc True False
thì 2 yêu cầu sau không còn khó nữa)
Search sơ một vòng thì thấy 1 số kết quả có thể kiếm được comment thôi.
Ý tưởng ban đầu:
- Xác định comment (block hoặc line)
- Tra trong khối vừa xác định có các keyword hay C statement ko
Ý tưởng này có lẽ vẫn chưa tối ưu lắm, mời các bạn đóng góp ý tưởng
2 cách có thể nghĩ đến:
Bạn tìm xem Python có .c, .h AST parser nào không
Code này in được comment này
Anh em đừng xem chỉnh sữa nhá
Cái này không đạt yêu cầu r bạn
Mình cần lọc ra những dòng nào là
commented code
, bạn lọc ra cảcommented code
vàcomment
rMình đang xem các thư viện regex trong python, nếu thành công mình sẽ chia sẽ
À commented code là code bị comment vậy thì thêm 1 đoạn kiểu kiểu như này chắc là được
viết 1 cái state machine cũng dễ mà. 1 file .c đọc vào đọc 1-2 ký tự một lúc. Chỉ có khoảng 4 state là normal, string, block comment, line comment
ban đầu ko có gì là ở normal state.
normal -> string:
"
normal -> block comment:
/*
(2 ký tự)normal -> line comment:
//
(2 ký tự)string -> normal:
"
line comment -> normal:
\n
(ký tự xuống dòng)block comment -> normal:
*/
(2 ký tự)ngoài ra còn phải chú ý escape sequence
\
nữa