-
Notifications
You must be signed in to change notification settings - Fork 0
/
testdata1.txt
69 lines (48 loc) · 1.58 KB
/
testdata1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// // のあとはコメントが書ける
// 空行は定義などの区切り、重要な意味を持つので間違えないこと
// 要素は空白かタブで区切る
// 文字コードや改行文字に注意(Ubuntu LinuxではUTF8(シグネチャなし)、LFのみ)
// 区切りの最初はPropertyの定義
最初のブロックが始まるまではなにを書いても無視される。
[Property]
home rest exp
large small
paper gum bin
// 次はCategoryの定義
[Category]
general industry
burn unburn nothing
// 次はルール
// ルールは二つのブロックで構成される。それぞれヘッドとボディ。
// 行内の要素がandでつながれ、行単位がorでつながれる
// まず最初のルールのヘッド
[Rules]
% これはルール1
and(home paper) --> and(general burn)
// 次のルール
% これはルール2
imp(home, general)
% これがルール3
bin --> and([general unburn])
exp --> industry
general --> or(home and(rest paper))
imp(burn, or(paper gum))
nothing --> -home
// なにもないブロック(前のブロック終了を表す空行のあとにもう一つ空行)が来るとルールの定義が一旦終わる。
// ここはCategoryからPropertyの制約ルール
// ここから、Propertyにはいってほしくない組み合わせを書く。ただし、最初に定義した順番に、全て列挙すること(いずれ修正する) いわゆるnoPの列挙
[no_P section]
exp large bin
exp small bin
// ここには入力におけるPropertyの組み合わせについて充足しなければならない条件を書く
[Property rules]
%% and(rest large) --> -bin
// 以下にテストケースを書く
// 性質の行と分類の行で構成、noPやnoC同様順序と数に注意
// 矛盾する入力
[Cases]
and(rest large bin) --> and(general unburn)
// 矛盾しなかったけど満たさないテストケース(本来の意図はこっちだったとする)
and(home small bin) --> and(general nothing)
[End]
以下はなにを書いてもなにもない。