mirror of
https://github.com/kmc7468/cs420.git
synced 2025-12-14 22:38:46 +00:00
Fix grader
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
int nonce; // For random input
|
int nonce = 0; // For random input
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int i;
|
int i;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce; // For random input
|
int nonce = 0; // For random input
|
||||||
|
|
||||||
int fibonacci(int n) {
|
int fibonacci(int n) {
|
||||||
if (n < 2) {
|
if (n < 2) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce; // For random input
|
int nonce = 0; // For random input
|
||||||
int g = 10;
|
int g = 10;
|
||||||
|
|
||||||
int foo(int, int k);
|
int foo(int, int k);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce; // For random input
|
int nonce = 0; // For random input
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce; // For random input
|
int nonce = 0; // For random input
|
||||||
|
|
||||||
int foo() {
|
int foo() {
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = default
|
var i32 @nonce = 0
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
10
src/tests.rs
10
src/tests.rs
@@ -9,7 +9,6 @@ use wait_timeout::ChildExt;
|
|||||||
|
|
||||||
use crate::*;
|
use crate::*;
|
||||||
|
|
||||||
const NONCE_DTYPE: &str = "int";
|
|
||||||
const NONCE_NAME: &str = "nonce";
|
const NONCE_NAME: &str = "nonce";
|
||||||
|
|
||||||
fn modify_c(path: &Path, rand_num: i32) -> String {
|
fn modify_c(path: &Path, rand_num: i32) -> String {
|
||||||
@@ -19,8 +18,8 @@ fn modify_c(path: &Path, rand_num: i32) -> String {
|
|||||||
.expect("`src` must be converted to string");
|
.expect("`src` must be converted to string");
|
||||||
drop(src);
|
drop(src);
|
||||||
|
|
||||||
let from = format!("{} {}", NONCE_DTYPE, NONCE_NAME);
|
let from = format!("int {} = 0", NONCE_NAME);
|
||||||
let to = format!("{} = {}", from, rand_num);
|
let to = format!("int {} = {}", NONCE_NAME, rand_num);
|
||||||
data.replace(&from, &to)
|
data.replace(&from, &to)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,9 +43,7 @@ fn ast_initializer(number: i32) -> ast::Initializer {
|
|||||||
fn modify_ir(unit: &mut ir::TranslationUnit, rand_num: i32) {
|
fn modify_ir(unit: &mut ir::TranslationUnit, rand_num: i32) {
|
||||||
for (name, decl) in &mut unit.decls {
|
for (name, decl) in &mut unit.decls {
|
||||||
if name == NONCE_NAME {
|
if name == NONCE_NAME {
|
||||||
let (dtype, initializer) = decl.get_variable().expect("`decl` must be variable");
|
let (dtype, _) = decl.get_variable().expect("`decl` must be variable");
|
||||||
assert!(initializer.is_none());
|
|
||||||
|
|
||||||
let initializer = ast_initializer(rand_num);
|
let initializer = ast_initializer(rand_num);
|
||||||
let new_decl = ir::Declaration::Variable {
|
let new_decl = ir::Declaration::Variable {
|
||||||
dtype: dtype.clone(),
|
dtype: dtype.clone(),
|
||||||
@@ -110,6 +107,7 @@ pub fn test_irgen(path: &Path) {
|
|||||||
let rand_num = rand::thread_rng().gen();
|
let rand_num = rand::thread_rng().gen();
|
||||||
let new_c = modify_c(path, rand_num);
|
let new_c = modify_c(path, rand_num);
|
||||||
modify_ir(&mut ir, rand_num);
|
modify_ir(&mut ir, rand_num);
|
||||||
|
println!("{}", new_c);
|
||||||
|
|
||||||
// compile recolved c example
|
// compile recolved c example
|
||||||
let temp_dir = tempdir().expect("temp dir creation failed");
|
let temp_dir = tempdir().expect("temp dir creation failed");
|
||||||
|
|||||||
Reference in New Issue
Block a user