t-gen-testsuite.st
来自「編譯器的語法產生器」· ST 代码 · 共 640 行 · 第 1/3 页
ST
640 行
basicScannerTest1
"TranslatorGenerator basicScannerTest1"
| tgen failBlock testName |
testName := 'T-gen Scanner Test 1'.
tgen := self new setGrammarModeToLR.
tgen scannerClass: FSABasedScannerWithOneTokenLookahead.
failBlock := [self error: testName, ' failed.'].
Transcript cr; show: 'START: ' , testName; cr.
tgen
parseInputs: #(
'abc'
'abd'
)
compareDTTo: (Array
with: '#S\ . #E\ . . ''abc''\ . #S\ . . ''<epsilon>''\' withCRs
with: '#S\ . #E\ . . ''a''\ . #S\ . . #E\ . . . ''bd''\ . . #S\ . . . ''<epsilon>''\' withCRs
)
tokenSpec: ''
grammarSpec: 'S : E S | ; E : ''a'' | ''abc'' | ''bd'' ;'
ifFail: failBlock.
Transcript cr; show: 'STOP: ' , testName!
basicScannerTest2
"TranslatorGenerator basicScannerTest2"
| tgen failBlock testName |
testName := 'T-gen Scanner Test 2'.
tgen := self new setGrammarModeToLR.
tgen scannerClass: FSABasedScannerWithTwoTokenLookahead.
failBlock := [self error: testName, ' failed.'].
Transcript cr; show: 'START: ' , testName; cr.
tgen
parseInputs: #(
'abc'
'abd'
'abbd'
'a'
)
compareDTTo: (Array
with: '#S\ . #E\ . . ''abc''\ . #S\ . . ''<epsilon>''\' withCRs
with: '#S\ . #E\ . . ''a''\ . #S\ . . #E\ . . . ''bd''\ . . #S\ . . . ''<epsilon>''\' withCRs
with: '#S\ . #E\ . . ''ab''\ . #S\ . . #E\ . . . ''bd''\ . . #S\ . . . ''<epsilon>''\' withCRs
with: '#S\ . #E\ . . ''a''\ . #S\ . . ''<epsilon>''\' withCRs
)
tokenSpec: ''
grammarSpec: 'S : E S | ; E : ''a'' | ''ab'' | ''abc'' | ''bd'' ;'
ifFail: failBlock.
Transcript cr; show: 'STOP: ' , testName!
rrpgToCfgTransformationsTest1
"TranslatorGenerator rrpgToCfgTransformationsTest1"
| tgen failBlock testName |
testName := 'T-gen RRPG-to-CFG Transformation Test 1'.
tgen := self new setGrammarModeToLR.
failBlock := [self error: testName, ' failed.'].
Transcript cr; show: 'START: ' , testName; cr.
tgen tokenSpecification: ''.
tgen
grammarSpec: 'S : ''b''+ ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' S0 ;\S0 : ''b'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b''+ ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : ''b'' S0 ;\S0 : ''b'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b''+ ''c'' ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' S0 ;\S0 : ''b'' ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b''+ ''c'' ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : ''b'' S0 ;\S0 : ''b'' ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b''* ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' S0 ;\S0 : ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b''* ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : ''b'' S0 ;\S0 : ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b''* ''c'' ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' S0 ;\S0 : ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b''* ''c'' ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : ''b'' S0 ;\S0 : ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b''? ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' ;\S0 : ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b''? ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : ''b'' ;\S0 : ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b''? ''c'' ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' ''c'' ;\S0 : ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b''? ''c'' ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : ''b'' ''c'' ;\S0 : ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b'' ^ ''d'' ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' ;\S0 : ''b'' ''d'' S0 ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b'' ^ ''d'' ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''a'' ''b'' ;\S0 : ''a'' ''b'' ''d'' S0 ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b'' ^ ''d'' ''c'' ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''b'' ;\S0 : ''b'' ''d'' ''c'' S0 ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b'' ^ ''d'' ''c'' ;\' withCRs
targetGrammar: 'S : S0 ;\S0 : ''a'' ''b'' ;\S0 : ''a'' ''b'' ''d'' ''c'' S0 ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b'' | ''d'' ;\' withCRs
targetGrammar: 'S : ''b'' ;\S : ''d'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b'' | ''d'' ;\' withCRs
targetGrammar: 'S : ''a'' ''b'' ;\S : ''d'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''b'' | ''d'' ''c'' ;\' withCRs
targetGrammar: 'S : ''b'' ;\S : ''d'' ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b'' | ''d'' ''c'' ;\' withCRs
targetGrammar: 'S : ''a'' ''b'' ;\S : ''d'' ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : (''b'' | ''d'') ;\' withCRs
targetGrammar: 'S : ''b'' ;\S : ''d'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' (''b'' | ''d'') ;\' withCRs
targetGrammar: 'S : ''a'' ''b'' ;\S : ''a'' ''d'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : (''b'' | ''d'') ''c'' ;\' withCRs
targetGrammar: 'S : ''b'' ''c'' ;\S : ''d'' ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' (''b'' | ''d'') ''c'' ;\' withCRs
targetGrammar: 'S : ''a'' ''b'' ''c'' ;\S : ''a'' ''d'' ''c'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : A B+ ;\A : ''a'' ;\B : ''b'' ;\' withCRs
targetGrammar: 'S : A S0 ;\S0 : B S0 ;\S0 : B ;\A : ''a'' ;\B : ''b'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : A B* ;\A : ''a'' ;\B : ''b'' ;\' withCRs
targetGrammar: 'S : A S0 ;\S0 : B S0 ;\S0 : ;\A : ''a'' ;\B : ''b'' ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : A B? ;\A : ''a'' ;\B : ''b'' ;\' withCRs
targetGrammar: 'S : A S0 ;\S0 : B ;\S0 : ;\A : ''a'' ;\B : ''b'' ;\' withCRs
ifFail: failBlock.
Transcript cr; show: 'STOP: ' , testName!
rrpgToCfgTransformationsTest2
"TranslatorGenerator rrpgToCfgTransformationsTest2"
| tgen failBlock testName |
testName := 'T-gen RRPG-to-CFG Transformation Test 2'.
tgen := self new setGrammarModeToLR.
failBlock := [self error: testName, ' failed.'].
Transcript cr; show: 'START: ' , testName; cr.
tgen tokenSpecification: ''.
tgen
grammarSpec: 'S : ''a'' (''b'' | ''d'')? ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : ''b'' ;\S0 : ''d'' ;\S0 : ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' ''b'' | ''d''? ;\' withCRs
targetGrammar: 'S : ''a'' ''b'' ;\S : S0 ;\S0 : ''d'' ;\S0 : ;\' withCRs
ifFail: failBlock.
tgen
grammarSpec: 'S : ''a'' (B ^ C)? ;\B : ''b'' ;\C : ''c'' ;\' withCRs
targetGrammar: 'S : ''a'' S0 ;\S0 : S00 ;\S00 : B ;\S00 : B C S00 ;\S0 : ;\B : ''b'' ;\C : ''c'' ;\' withCRs
ifFail: failBlock.
Transcript cr; show: 'STOP: ' , testName!
runAllTests
"TranslatorGenerator runAllTests"
Transcript cr; show: 'T-gen TEST SUITE (answer ''yes'' to all prompters)'.
self basicLLParserGenerationTest1.
self basicLLParserGenerationTest2.
self basicLLParserGenerationTest3.
self basicLRParserGenerationTest1.
self basicLRParserGenerationTest2.
self basicLRParserGenerationTest3.
self basicLRParserGenerationTest4.
self basicLRParserGenerationTest5.
self basicLRParserGenerationTest6.
self basicScannerTest1.
self basicScannerTest2.
self rrpgToCfgTransformationsTest1.
self rrpgToCfgTransformationsTest2.
Transcript cr; show: 'ALL TESTS PASSED'; cr.! !
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?