我需要创建一种可以在C代码中查找并打印第一个错误的编译器。我的编译器将由一些模块组成,现在我完成了其中的两个,Lexical Analyzer和Syntactic Analyzer。词法分析器将所有文本并分成标记,将标记添加到标记列表中。 Syntactic Analyzer接收令牌列表,并检查是否按顺序写入了文本:在IF之后必须有LBAR令牌,某些表达式和RBAR令牌。缺少一个,它将抛出一个已检查的错误并停止。
@PostMapping("/compile")
public ResponseEntity<String> setInput(@RequestBody String input){
if(compile(input)) {
return ResponseEntity.ok("Success");
}
return ResponseEntity.ok("Compile error");
}
private boolean compile(String input){
lexicalAnalyzer = new LexicalAnalyzer(input);
lexicalAnalyzer.resetCompiler();
line=1;
while(lexicalAnalyzer.getNextToken()!=END){ }
syntacticAnalyzer = new SyntacticAnalyzer(tokens);
return syntacticAnalyzer.start();
}
使用邮递员在C语言中以String的形式发送小文本,一切正常,直到发现第一个错误。例如:
int main(){
}
返回成功
int main({
}
返回编译错误并抛出“ Missing RPAR”
int main){
}
返回成功,应返回编译错误并抛出“ Missing LBAR”。只有重新部署,我才能收到良好的答复。