Skip to content

Commit 60d1a82

Browse files
committed
refactor(core/assembler): rm interface and export class directly
1 parent f7634fb commit 60d1a82

File tree

2 files changed

+11
-19
lines changed

2 files changed

+11
-19
lines changed

src/core/assembler/assembler.spec.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import { describe, expect, it } from 'vitest'
22

33
import { examples } from '@/features/editor/examples'
44

5-
import { createAssembler } from './assembler'
5+
import { Assembler } from './assembler'
66

77
describe('Assembler', () => {
88
examples.forEach(({ title, content }) => {
99
it(`should assemble example ${title}`, () => {
10-
const assembler = createAssembler()
10+
const assembler = new Assembler()
1111
const unit = assembler.run(content)
1212
expect(unit.ast).not.toBeNull()
1313
expect(unit.chunks.length).toBeGreaterThan(0)
@@ -17,7 +17,7 @@ describe('Assembler', () => {
1717
})
1818

1919
it('should collect parser errors', () => {
20-
const assembler = createAssembler()
20+
const assembler = new Assembler()
2121
const unit = assembler.run('inc al')
2222
expect(unit.errors).toHaveLength(1)
2323
expect(unit.errors[0]).toMatchInlineSnapshot(
@@ -26,7 +26,7 @@ describe('Assembler', () => {
2626
})
2727

2828
it('should collect parser warnings', () => {
29-
const assembler = createAssembler()
29+
const assembler = new Assembler()
3030
const unit = assembler.run('label: end')
3131
expect(unit.warnings).toHaveLength(1)
3232
expect(unit.warnings[0]).toMatchInlineSnapshot(
@@ -35,7 +35,7 @@ describe('Assembler', () => {
3535
})
3636

3737
it('should validate jump distances', () => {
38-
const assembler = createAssembler()
38+
const assembler = new Assembler()
3939
const unit = assembler.run('jmp label org 81 label: end')
4040
expect(unit.errors).toHaveLength(1)
4141
expect(unit.errors[0]).toMatchInlineSnapshot(
@@ -44,7 +44,7 @@ describe('Assembler', () => {
4444
})
4545

4646
it('should validate immediate values', () => {
47-
const assembler = createAssembler()
47+
const assembler = new Assembler()
4848
const unit = assembler.run('add al, 100 end')
4949
expect(unit.errors).toHaveLength(1)
5050
expect(unit.errors[0]).toMatchInlineSnapshot(
@@ -53,7 +53,7 @@ describe('Assembler', () => {
5353
})
5454

5555
it('should validate string literals', () => {
56-
const assembler = createAssembler()
56+
const assembler = new Assembler()
5757
const unit = assembler.run('db "你好世界" end')
5858
expect(unit.errors).toHaveLength(1)
5959
expect(unit.errors[0]).toMatchInlineSnapshot(
@@ -62,7 +62,7 @@ describe('Assembler', () => {
6262
})
6363

6464
it('should validate org address', () => {
65-
const assembler = createAssembler()
65+
const assembler = new Assembler()
6666
const unit = assembler.run('org 100 end')
6767
expect(unit.errors).toHaveLength(1)
6868
expect(unit.errors[0]).toMatchInlineSnapshot(
@@ -71,7 +71,7 @@ describe('Assembler', () => {
7171
})
7272

7373
it('should throw an error when memory overflows', () => {
74-
const assembler = createAssembler()
74+
const assembler = new Assembler()
7575
const unit = assembler.run('org ff inc al end')
7676
expect(unit.errors).toHaveLength(1)
7777
expect(unit.errors[0]).toMatchInlineSnapshot(
@@ -80,7 +80,7 @@ describe('Assembler', () => {
8080
})
8181

8282
it('should merge errors', () => {
83-
const assembler = createAssembler()
83+
const assembler = new Assembler()
8484
const unit = assembler.run('org ff inc al inc bl inc cl end')
8585
expect(unit.errors).toHaveLength(1)
8686
expect(unit.errors[0]).toMatchInlineSnapshot(

src/core/assembler/assembler.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,6 @@ import { createParser } from './parser'
2121
import { createParserContext, ParserContext, useParserContext } from './parser.context'
2222
import { createTokenStream, TokenStream } from './token.stream'
2323

24-
export interface Assembler {
25-
run(input: string): AssemblyUnit
26-
}
27-
28-
export function createAssembler(): Assembler {
29-
return new AssemblerImpl()
30-
}
31-
3224
interface PendingChunk extends CodeChunk {
3325
node: WithIdentifier<ProcessableNode>
3426
}
@@ -40,7 +32,7 @@ type ResolvableNode =
4032
? Exclude<Values, AST.Mnemonic>
4133
: never
4234

43-
class AssemblerImpl implements Assembler {
35+
export class Assembler {
4436
private pendings!: PendingChunk[]
4537
private unit!: AssemblyUnit
4638

0 commit comments

Comments
 (0)