From dfc9815e833d22dcbc2e7c411c24d6b9df23fc19 Mon Sep 17 00:00:00 2001 From: Kagura Date: Thu, 31 Oct 2024 23:39:59 +0800 Subject: [PATCH] chore: fix style --- .idea/misc.xml | 2 +- src/main/kotlin/core/SourceFile.kt | 29 +++++++++++++++++++---------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index ac2c845..eaedeea 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/src/main/kotlin/core/SourceFile.kt b/src/main/kotlin/core/SourceFile.kt index 7fb0b99..2f48b36 100644 --- a/src/main/kotlin/core/SourceFile.kt +++ b/src/main/kotlin/core/SourceFile.kt @@ -11,6 +11,15 @@ class SourceFile { companion object { val function_define_regex = """\b([a-zA-Z_][a-zA-Z0-9_]*)\s*\([^)]*\)\s*\{""".toRegex() // main(){ 匹配函数名 + /** + * C文件预处理器 + * 处理内容: + * 删除注释; + * 处理 #define; + * 处理连续创建变量; + * 格式化代码 + * @return 处理好的C源代码 + */ fun formatSource(src: String): String { // 去掉注释 val noComment = src.lines() @@ -30,7 +39,7 @@ class SourceFile { if (line.trim().startsWith("#define")) { val args = line.trim().split(" ") if (args.size >= 3) { - if (args[1].contains("(")){ // Define Function + if (args[1].contains("(")) { // Define Function val defFuncName = args[1].split('(').first().trim() val defineFuncArgs = args[1] .split('(').last() @@ -44,31 +53,31 @@ class SourceFile { val prev = line.split("$defFuncName(") // 应该是调用之前的内容 val later = prev.last().split(')') // 应该是调用之后的内容 val callArgs = later.first().split(',').map { it.trim() } // 和上面一样的 - if (callArgs.size <= defineFuncArgs.size){ + if (callArgs.size <= defineFuncArgs.size) { var newFunction = defineFunc - for (i in callArgs.indices){ // 参数不够不管了 - newFunction = newFunction.replace(defineFuncArgs[i],callArgs[i]) + for (i in callArgs.indices) { // 参数不够不管了 + newFunction = newFunction.replace(defineFuncArgs[i], callArgs[i]) } //改回去 noFuncInDefine.append(prev.first() + newFunction + later.last()) noFuncInDefine.append('\n') - }else{ // 参数多了我有啥办法 + } else { // 参数多了我有啥办法 noFuncInDefine.append(line) noFuncInDefine.append('\n') } - }else if (!line.startsWith('#')) { + } else if (!line.startsWith('#')) { noFuncInDefine.append(line) noFuncInDefine.append('\n') } } - }else { // #define SOMETHING ANOTHER 这样的 + } else { // #define SOMETHING ANOTHER 这样的 simpleDefineList[args[1]] = args[2] } } } } // 可能上面代码因为没define没执行,这里保证下 - if (noFuncInDefine.isEmpty()){ + if (noFuncInDefine.isEmpty()) { noFuncInDefine.append(noComment) } @@ -84,7 +93,7 @@ class SourceFile { noDefine.append('\n') } } - }else{ + } else { noDefine.append(noFuncInDefine) } @@ -142,7 +151,7 @@ class SourceFile { } constructor(content: String) { - this.content = formatSource(content.trim()) + this.content = formatSource(content) } fun parseFunction(): List { // 找所有的函数定义