Skip to content

Commit be233ac

Browse files
committed
Add clearOutput() function
1 parent 99fbaa6 commit be233ac

19 files changed

Lines changed: 71 additions & 18 deletions

FlowRun_Exprs_Grammar.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
GRAMMAR:
3-
```ebnf
3+
```
44
expression -> boolOrComparison ("||" boolOrComparison)* ;
55
boolOrComparison -> boolAndComparison ("&&" boolAndComparison)* ;
66
boolAndComparison -> numComparison (("!=" | "==" ) numComparison)* ;
@@ -9,7 +9,12 @@ term -> factor (("+" | "-") factor)* ;
99
factor -> unary (("*" | "/" | "%") unary)* ;
1010
unary -> ("!" | "-") unary
1111
| atom ;
12-
atom -> NUMBER | STRING | "true" | "false"
12+
atom -> NUMBER
13+
| STRING
14+
| "true"
15+
| "false"
16+
| ID[intExpression]
17+
| ID[intExpression][intExpression]
1318
| ID
1419
| ID "(" expression? ( "," expression)* ")"
1520
| "(" expression ")" ;

TODO.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
##
66

77

8-
- fix step-by-step on loops
98

109
- trim long text with ...
11-
- disable zoom config
10+
1211

1312

editor/src/main/scala/dev/sacode/flowrun/FlowRunEditor.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ class FlowRunEditor(
229229
flowchartPresenter.highlightExecuting(interpreter.nextExecStatementId)
230230
functionSelector.loadFunctions()
231231
flowchartPresenter.loadCurrentFunction()
232+
case ClearOutput() =>
233+
outputArea.clearRuntime()
232234
case SymbolTableUpdated =>
233235
debugArea.showVariables()
234236
case FunctionUpdated =>

interpreter/shared/src/main/scala/dev/sacode/flowrun/FlowRun.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ object FlowRun:
1010
case EvalError(nodeId: String, msg: String, funId: String)
1111
case EvalOutput(msg: String, newline: Boolean)
1212
case EvalInput(nodeId: String, name: String, prompt: Option[String])
13+
case ClearOutput()
1314
case EvalFunctionStarted
1415
case EvalFunctionFinished
1516
case SyntaxSuccess

interpreter/shared/src/main/scala/dev/sacode/flowrun/ast/PredefinedFunction.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ enum PredefinedFunction(val name: String) {
3131
case StringToInteger extends PredefinedFunction("string2int")
3232
// misc
3333
case ReadInput extends PredefinedFunction("readInput")
34+
case ClearOutput extends PredefinedFunction("clearOutput")
3435
}
3536

3637
object PredefinedFunction:

interpreter/shared/src/main/scala/dev/sacode/flowrun/codegen/CGenerator.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ class CGenerator(val programAst: Program) extends CodeGenerator {
252252
case RealToInteger => s"(int)${argOpt(0)}"
253253
case StringToInteger => s"atoi(${argOpt(0)})"
254254
case ReadInput => s"""scanf("%s", ${argOpt(0)})"""
255+
case ClearOutput => "printf(\"\\e[1;1H\\e[2J\")"
255256
case NumRows => s"sizeof(${argOpt(0)}) / sizeof(${argOpt(0)}[0])"
256257
case NumCols =>
257258
val arr = argOpt(0)

interpreter/shared/src/main/scala/dev/sacode/flowrun/codegen/CPlusPlusGenerator.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ class CPlusPlusGenerator(val programAst: Program) extends CodeGenerator {
247247
case RealToInteger => s"(int)${argOpt(0)}"
248248
case StringToInteger => s"atoi(${argOpt(0)})"
249249
case ReadInput => s"""scanf("%s", ${argOpt(0)})"""
250+
case ClearOutput => "printf(\"\\e[1;1H\\e[2J\")"
250251
case NumRows => s"sizeof(${argOpt(0)}) / sizeof(${argOpt(0)}[0])"
251252
case NumCols =>
252253
val arr = argOpt(0)

interpreter/shared/src/main/scala/dev/sacode/flowrun/codegen/CSharpGenerator.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ class CSharpGenerator(val programAst: Program) extends CodeGenerator {
210210
case RealToInteger => s"(int)${argOpt(0)}"
211211
case StringToInteger => s"Convert.ToInt32(${argOpt(0)})"
212212
case ReadInput => "Console.ReadLine()"
213+
case ClearOutput => "Console.Clear()"
213214
case NumRows => s"${argOpt(0)}.GetLength(0)"
214215
case NumCols => s"${argOpt(0)}.GetLength(1)"
215216
}

interpreter/shared/src/main/scala/dev/sacode/flowrun/codegen/JavaGenerator.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,10 @@ class JavaGenerator(val programAst: Program) extends CodeGenerator {
220220
case RealToInteger => s"(int)${argOpt(0)}"
221221
case StringToInteger => s"""Integer.parseInt(${argOpt(0)})"""
222222
case ReadInput => "scanner.nextLine()"
223-
case NumRows => s"${argOpt(0)}.length"
224-
case NumCols => s"${argOpt(0)}[0].length"
223+
case ClearOutput => """|System.out.print("\u001b[H\u001b[2J");
224+
|System.out.flush();""".stripMargin
225+
case NumRows => s"${argOpt(0)}.length"
226+
case NumCols => s"${argOpt(0)}[0].length"
225227
}
226228
}
227229

interpreter/shared/src/main/scala/dev/sacode/flowrun/codegen/JavascriptGenerator.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ class JavascriptGenerator(val programAst: Program) extends CodeGenerator {
181181
case RealToInteger => argOpt(0) // ??
182182
case StringToInteger => s"parseInt(${argOpt(0)})"
183183
case ReadInput => "prompt()"
184+
case ClearOutput => "console.clear()"
184185
case NumRows => s"${argOpt(0)}.length"
185186
case NumCols => s"${argOpt(0)}[0].length"
186187
}

0 commit comments

Comments
 (0)