diff --git a/repl/src/App.tsx b/repl/src/App.tsx index 5d90b2be..52d8bf82 100644 --- a/repl/src/App.tsx +++ b/repl/src/App.tsx @@ -24,6 +24,7 @@ synth.set({ }); function App() { + const [mode, setMode] = useState('javascript'); const [code, setCode] = useState(tetrisHaskell); const [log, setLog] = useState(''); const logBox = useRef(); @@ -64,7 +65,17 @@ function App() { // parse pattern when code changes useEffect(() => { try { - const _pattern = parse(code); + let _pattern; + try { + _pattern = h(code); + setMode('pegjs'); // haskell mode does not recognize quotes, pegjs looks ok by accident.. + // console.log('h _pattern', _pattern); + } catch (err) { + setMode('javascript'); + // code is not haskell like + _pattern = parse(code); + // console.log('not haskell..', _pattern); + } setPattern(_pattern); // cycle.query(cycle.activeCycle()); // reschedule active cycle setError(undefined); @@ -88,6 +99,11 @@ function App() {
{ setLog((log) => log + `${log ? '\n\n' : ''}✏️ edit\n${code}\n${value}`); setCode(value); @@ -110,7 +126,13 @@ function App() { > {cycle.started ? 'pause' : 'play'} -