diff --git a/bakefile.jar b/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/bakefile.jar and b/bakefile.jar differ diff --git a/build/fr/monlouyan/bakefile/BakeCLI.class b/build/fr/monlouyan/bakefile/BakeCLI.class deleted file mode 100644 index 8035fbb..0000000 Binary files a/build/fr/monlouyan/bakefile/BakeCLI.class and /dev/null differ diff --git a/build/fr/monlouyan/bakefile/BakeEngine.class b/build/fr/monlouyan/bakefile/BakeEngine.class deleted file mode 100644 index e21dd3b..0000000 Binary files a/build/fr/monlouyan/bakefile/BakeEngine.class and /dev/null differ diff --git a/build/fr/monlouyan/bakefile/BakefileParser.class b/build/fr/monlouyan/bakefile/BakefileParser.class deleted file mode 100644 index 0fe35c0..0000000 Binary files a/build/fr/monlouyan/bakefile/BakefileParser.class and /dev/null differ diff --git a/build/fr/monlouyan/bakefile/CommandExecutor.class b/build/fr/monlouyan/bakefile/CommandExecutor.class deleted file mode 100644 index 315f218..0000000 Binary files a/build/fr/monlouyan/bakefile/CommandExecutor.class and /dev/null differ diff --git a/build/fr/monlouyan/bakefile/DependencyResolver.class b/build/fr/monlouyan/bakefile/DependencyResolver.class deleted file mode 100644 index de48c58..0000000 Binary files a/build/fr/monlouyan/bakefile/DependencyResolver.class and /dev/null differ diff --git a/build/fr/monlouyan/bakefile/Main.class b/build/fr/monlouyan/bakefile/Main.class deleted file mode 100644 index 2cb4f3b..0000000 Binary files a/build/fr/monlouyan/bakefile/Main.class and /dev/null differ diff --git a/build/fr/monlouyan/bakefile/Rule.class b/build/fr/monlouyan/bakefile/Rule.class deleted file mode 100644 index fb76a6c..0000000 Binary files a/build/fr/monlouyan/bakefile/Rule.class and /dev/null differ diff --git a/build/fr/monlouyan/bakefile/TimestampManager.class b/build/fr/monlouyan/bakefile/TimestampManager.class deleted file mode 100644 index 60990a3..0000000 Binary files a/build/fr/monlouyan/bakefile/TimestampManager.class and /dev/null differ diff --git a/src/fr/monlouyan/bakefile/BakefileParser.java b/src/fr/monlouyan/bakefile/BakefileParser.java index 1757752..2b04238 100644 --- a/src/fr/monlouyan/bakefile/BakefileParser.java +++ b/src/fr/monlouyan/bakefile/BakefileParser.java @@ -23,7 +23,7 @@ public class BakefileParser { * Regex pour détecter les lignes de commande associées à une target. * Format : " gcc -o program program.c" (ligne indentée) */ - private static final Pattern COMMAND_PATTERN = Pattern.compile("^\\s+(.+)$"); + private static final Pattern COMMAND_PATTERN = Pattern.compile("^\\t(.+)$"); /** * Regex pour détecter les définitions de variables. @@ -61,12 +61,24 @@ public class BakefileParser { String currentTarget = null; List dependencies = new ArrayList<>(); List commands = new ArrayList<>(); + int lineNumber = 0; for (String line : lines) { + lineNumber++; + Matcher varMatcher = VARIABLE_PATTERN.matcher(line); Matcher targetMatcher = TARGET_PATTERN.matcher(line); Matcher commandMatcher = COMMAND_PATTERN.matcher(line); - + + if (line.trim().isEmpty()) { + continue; + } + + if (line.matches("^ +.*$")) { // Détecte les lignes commençant par des espaces + System.err.println(filename + ":" + lineNumber + ": *** missing separator. Stop."); + System.exit(1); + } + if (varMatcher.matches()) { // Stocke la variable variables.put(varMatcher.group(1), varMatcher.group(2)); diff --git a/tests/C/bakefile.jar b/tests/C/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/bakefile.jar and b/tests/C/bakefile.jar differ diff --git a/tests/C/test-01-from-nothing/bake/bakefile.jar b/tests/C/test-01-from-nothing/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-01-from-nothing/bake/bakefile.jar and b/tests/C/test-01-from-nothing/bake/bakefile.jar differ diff --git a/tests/C/test-01-from-nothing/bakefile.jar b/tests/C/test-01-from-nothing/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-01-from-nothing/bakefile.jar and b/tests/C/test-01-from-nothing/bakefile.jar differ diff --git a/tests/C/test-01-from-nothing/make/bakefile.jar b/tests/C/test-01-from-nothing/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-01-from-nothing/make/bakefile.jar and b/tests/C/test-01-from-nothing/make/bakefile.jar differ diff --git a/tests/C/test-02-already-exist/bake/bakefile.jar b/tests/C/test-02-already-exist/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-02-already-exist/bake/bakefile.jar and b/tests/C/test-02-already-exist/bake/bakefile.jar differ diff --git a/tests/C/test-02-already-exist/bakefile.jar b/tests/C/test-02-already-exist/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-02-already-exist/bakefile.jar and b/tests/C/test-02-already-exist/bakefile.jar differ diff --git a/tests/C/test-02-already-exist/make/bakefile.jar b/tests/C/test-02-already-exist/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-02-already-exist/make/bakefile.jar and b/tests/C/test-02-already-exist/make/bakefile.jar differ diff --git a/tests/C/test-03-circular/bake/bakefile.jar b/tests/C/test-03-circular/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-03-circular/bake/bakefile.jar and b/tests/C/test-03-circular/bake/bakefile.jar differ diff --git a/tests/C/test-03-circular/bakefile.jar b/tests/C/test-03-circular/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-03-circular/bakefile.jar and b/tests/C/test-03-circular/bakefile.jar differ diff --git a/tests/C/test-03-circular/make/bakefile.jar b/tests/C/test-03-circular/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-03-circular/make/bakefile.jar and b/tests/C/test-03-circular/make/bakefile.jar differ diff --git a/tests/C/test-04-edited/bake/bakefile.jar b/tests/C/test-04-edited/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-04-edited/bake/bakefile.jar and b/tests/C/test-04-edited/bake/bakefile.jar differ diff --git a/tests/C/test-04-edited/bakefile.jar b/tests/C/test-04-edited/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-04-edited/bakefile.jar and b/tests/C/test-04-edited/bakefile.jar differ diff --git a/tests/C/test-04-edited/make/bakefile.jar b/tests/C/test-04-edited/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-04-edited/make/bakefile.jar and b/tests/C/test-04-edited/make/bakefile.jar differ diff --git a/tests/C/test-05-variables/bake/bakefile.jar b/tests/C/test-05-variables/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-05-variables/bake/bakefile.jar and b/tests/C/test-05-variables/bake/bakefile.jar differ diff --git a/tests/C/test-05-variables/bakefile.jar b/tests/C/test-05-variables/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-05-variables/bakefile.jar and b/tests/C/test-05-variables/bakefile.jar differ diff --git a/tests/C/test-05-variables/make/bakefile.jar b/tests/C/test-05-variables/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-05-variables/make/bakefile.jar and b/tests/C/test-05-variables/make/bakefile.jar differ diff --git a/tests/C/test-06-variables-on-cascade/bake/bakefile.jar b/tests/C/test-06-variables-on-cascade/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-06-variables-on-cascade/bake/bakefile.jar and b/tests/C/test-06-variables-on-cascade/bake/bakefile.jar differ diff --git a/tests/C/test-06-variables-on-cascade/bakefile.jar b/tests/C/test-06-variables-on-cascade/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-06-variables-on-cascade/bakefile.jar and b/tests/C/test-06-variables-on-cascade/bakefile.jar differ diff --git a/tests/C/test-06-variables-on-cascade/make/bakefile.jar b/tests/C/test-06-variables-on-cascade/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/C/test-06-variables-on-cascade/make/bakefile.jar and b/tests/C/test-06-variables-on-cascade/make/bakefile.jar differ diff --git a/tests/C/test-08-space-vs-tabulation/bake/Bakefile b/tests/C/test-08-space-vs-tabulation/bake/Bakefile new file mode 100644 index 0000000..654d776 --- /dev/null +++ b/tests/C/test-08-space-vs-tabulation/bake/Bakefile @@ -0,0 +1,6 @@ +all: + echo "Cette ligne est correcte" + +test_espaces: + echo "Cette ligne utilise une tabulation" + echo "Cette ligne utilise des espaces et doit provoquer une erreur" diff --git a/tests/C/test-08-space-vs-tabulation/make/Makefile b/tests/C/test-08-space-vs-tabulation/make/Makefile new file mode 100644 index 0000000..654d776 --- /dev/null +++ b/tests/C/test-08-space-vs-tabulation/make/Makefile @@ -0,0 +1,6 @@ +all: + echo "Cette ligne est correcte" + +test_espaces: + echo "Cette ligne utilise une tabulation" + echo "Cette ligne utilise des espaces et doit provoquer une erreur" diff --git a/tests/Java/bakefile.jar b/tests/Java/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/Java/bakefile.jar and b/tests/Java/bakefile.jar differ diff --git a/tests/Java/test-01-from-nothing/bake/bakefile.jar b/tests/Java/test-01-from-nothing/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/Java/test-01-from-nothing/bake/bakefile.jar and b/tests/Java/test-01-from-nothing/bake/bakefile.jar differ diff --git a/tests/Java/test-01-from-nothing/bakefile.jar b/tests/Java/test-01-from-nothing/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/Java/test-01-from-nothing/bakefile.jar and b/tests/Java/test-01-from-nothing/bakefile.jar differ diff --git a/tests/Java/test-01-from-nothing/make/bakefile.jar b/tests/Java/test-01-from-nothing/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/Java/test-01-from-nothing/make/bakefile.jar and b/tests/Java/test-01-from-nothing/make/bakefile.jar differ diff --git a/tests/Java/test-03-circular/bake/bakefile.jar b/tests/Java/test-03-circular/bake/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/Java/test-03-circular/bake/bakefile.jar and b/tests/Java/test-03-circular/bake/bakefile.jar differ diff --git a/tests/Java/test-03-circular/bakefile.jar b/tests/Java/test-03-circular/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/Java/test-03-circular/bakefile.jar and b/tests/Java/test-03-circular/bakefile.jar differ diff --git a/tests/Java/test-03-circular/make/bakefile.jar b/tests/Java/test-03-circular/make/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/Java/test-03-circular/make/bakefile.jar and b/tests/Java/test-03-circular/make/bakefile.jar differ diff --git a/tests/bakefile.jar b/tests/bakefile.jar index 38c6291..875b1b3 100644 Binary files a/tests/bakefile.jar and b/tests/bakefile.jar differ