loom

Форк
0
/
SystemVerilog.fuze 
64 строки · 3.1 Кб
1
lex {
2
    lex.addMarkup("/*", "*/", "", lex.LexemeType.Comment);
3
    lex.addMarkup("\"", "\"", "", lex.LexemeType.Annotation);
4
    lex.clearMasks();
5
    lex.addMask("@BUILDING_NUMBER_MASK", lex.LexemeType.Number, 10);
6
}
7
//модуль = "module" имя_модуля "#" "(" cписок_параметров ")" "(" список_портов ")" ";" "endmodule";
8
//cписок_параметров = "parameter" тип_параметра "name" ";";
9
//список_портов = "input" тип_данных "name" "," "output" тип_данных "name" "," "inout" тип_данных "name";
10
//тип_параметра = "type_of_parameter";
11
//тип_данных = "type_of_data";
12
////тест ожидает выполнения подряд input, output ... не разрешает использовать что-то одно
13
//имя_модуля = ID;
14
////если написать "имя = ID", то в тесте ID будет считаться ошибкой
15

16
программа   = список_операторов;
17

18
список_операторов
19
            = список_операторов оператор | оператор;
20

21
оператор    = оператор_include | оператор_import | модуль | объявление_переменной | объявление_параметра;
22

23
оператор_include
24
            = "`" "include" ANNOTATION;
25

26
оператор_import
27
            = "import" адрес_модуля ";";
28

29
адрес_модуля
30
            = ID "::" "*";
31

32
модуль      = "module" ID ";" список_операторов "endmodule"
33
            = "module" ID "(" список_портов ")" ";" список_операторов "endmodule"
34
            = "module" ID "#" "(" список_параметров ")" ";" список_операторов "endmodule"
35
            = "module" ID "#" "(" список_параметров ")" "(" список_портов ")" ";" список_операторов "endmodule"
36
            = "module" ID ";"  "endmodule"
37
            = "module" ID "(" список_портов ")" ";"  "endmodule"
38
            = "module" ID "#" "(" список_параметров ")" ";"  "endmodule"
39
            = "module" ID "#" "(" список_параметров ")" "(" список_портов ")" ";"  "endmodule";
40

41
список_портов
42
            = список_портов "," тип_порта тип_данных ID | тип_порта тип_данных ID;
43

44
тип_порта   = "input" | "output" | "inout";
45

46
тип_данных  = "logic" | "integer";
47

48
список_параметров
49
            = список_параметров "parameter" тип_параметра ID ";" | "parameter" тип_параметра ID ";";
50

51
тип_параметра
52
            = "logic" | "integer";
53

54
объявление_переменной
55
            = тип_переменной ID ";";
56

57
тип_переменной
58
            = "logic";
59

60
объявление_параметра
61
            = "parameter" ID "=" значение_параметра ";";
62

63
значение_параметра
64
            = NUMBER;
65

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.