Skip to content
This repository was archived by the owner on Oct 20, 2022. It is now read-only.

Commit 0d2d3ef

Browse files
committed
Merge branch 'feature/pretty-print' into develop
2 parents 494bdc8 + c8acc47 commit 0d2d3ef

File tree

3 files changed

+42
-25
lines changed

3 files changed

+42
-25
lines changed

index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import process = require('process')
66
import { logError, logInfo } from './src/debug-print'
77
import lex = require('./src/lexical-analyser')
88
import parser = require('./src/parser')
9-
import compiler = require('./src/compiler')
9+
import generator = require('./src/code-generator')
1010
import optimiser = require('./src/optimiser')
1111
import child_process = require('child_process')
1212

@@ -48,7 +48,7 @@ try {
4848

4949
/* Compile C code from tree */
5050
log('Running compiler...')
51-
let code: string = compiler.compile(optimisedTree)
51+
let code: string = generator.compile(optimisedTree)
5252
log(`Compiled code: \n${code}`)
5353

5454
/* Write C code to file */
File renamed without changes.

src/debug-print.ts

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,7 @@ import colors = require('colors/safe')
44

55
/** Debug Token print function */
66
export function logToken(Token: Token): void {
7-
let nameColor: colors
8-
9-
switch (Token.type) {
10-
case Type.CONSTANT:
11-
nameColor = colors.green
12-
break
13-
case Type.IDENTIFIER:
14-
nameColor = colors.cyan
15-
break
16-
case Type.PUNCTUATION:
17-
nameColor = colors.white
18-
break
19-
case Type.TYPE:
20-
case Type.RESERVED:
21-
nameColor = colors.blue
22-
break
23-
case Type.WHITESPACE:
24-
25-
default:
26-
nameColor = colors.grey
27-
break
28-
}
7+
let nameColor: colors = getColour(Token)
298

309
console.log(
3110
colors.blue(` >>`) +
@@ -56,11 +35,19 @@ export function logTree(node: SyntaxTree, indent: number = 0, side: string = ">"
5635
return
5736
}
5837

38+
let nameColor: colors = getColour(node.content)
39+
40+
let printName: boolean = (Type[node.content.type] != node.content.name)
41+
let printLex: boolean = (node.content.lexeme != null)
42+
&& (node.content.lexeme.toString().toLowerCase() != node.content.name.toString().toLowerCase())
43+
5944
/* Infix traversal */
6045
logTree(node.argument1, indent + 1, '/')
6146
if (node.content != null) {
6247
console.log(
63-
prefix + (`[${colors.magenta(Type[node.content.type])}] - ${colors.cyan(node.content.name)}, ${colors.grey(node.content.lexeme)}\t`)
48+
prefix + (`[${nameColor(Type[node.content.type])}]`) +
49+
(printName ? (` - ${colors.cyan(node.content.name)}`) : "") +
50+
(printLex ? (`, ${colors.grey(node.content.lexeme)}\t`) : "")
6451
)
6552
} else {
6653
console.log(
@@ -87,4 +74,34 @@ export function logError(message: string) {
8774
export function logCode(code: string) {
8875
console.log(colors.yellow('[OUTPUT] ') + 'Compiled code:')
8976
console.log('\t' + code.split('\n').join('\n\t'))
77+
}
78+
79+
function getColour(Token: Token): colors {
80+
switch (Token.type) {
81+
case Type.VARIABLE:
82+
case Type.CONSTANT:
83+
return colors.green
84+
85+
case Type.IDENTIFIER:
86+
return colors.cyan
87+
88+
case Type.PUNCTUATION:
89+
return colors.white
90+
91+
case Type.TYPE:
92+
case Type.RESERVED:
93+
return colors.blue
94+
95+
case Type.START:
96+
case Type.END:
97+
case Type.DECLARE:
98+
case Type.DECLARE_ASSIGN:
99+
case Type.ASSIGN:
100+
return colors.magenta
101+
102+
case Type.WHITESPACE:
103+
104+
default:
105+
return colors.grey
106+
}
90107
}

0 commit comments

Comments
 (0)