<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <style>
            #c {
              display: flex;
                width:100%;
                height:100%;
            }
            #t {
              width:100%;
            }
            .col {
              flex:1;min-height:80%;
              background-color: #eee;
              margin:1px 1px;
            }
            #e {
              font-family: monospace;
              font-weight: bold;
              font-size:12pt;
              caret-color: red;
            }
        </style>
    </head>
    <body>
      <div style="display:flex;min-height:80%;border:solid 1px black;">
        <div id="e" class="col" contenteditable>
          മായ്‌ക്കുക<br>
          രേഖ (ഇടത്=100, മുകൾ=100, വീതി=200, ഉയരം =200)<br>
          വൃത്തം (ഇടത്=200, മുകൾ=200, ആരം=50, നിറം ="പച്ച" )<br>
          ചതുരം (ഇടത്=50, മുകൾ=50, വീതി=300, ഉയരം=200)<br>
          ചതുരം (ഇടത്=50, മുകൾ=50, വീതി=300, ഉയരം=200, നിറം = "ചുവപ്പ്")<br>
          രേഖ (ഇടത്=100, മുകൾ=100, വീതി=200, ഉയരം =300,  നിറം ="#0000ff")
        </div>
        <div class="col">
          <canvas id="c"></canvas>
            <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
          </svg>
        </div>
      </div>
      
      <input type="button" value="Draw" id="ok" />
      

    <script>
      var c = document.getElementById("c");
      c.width = c.offsetWidth;
      c.height = c.offsetHeight;
      var cx = c.getContext("2d");
      
      document.getElementById("ok").addEventListener("click", function(){
        
        var pgm = document.getElementById("e").innerText;
        var lines = pgm.split("\n");
        
        lines.forEach(function(stmt, i) {
          if (!stmt.trim()) return;
          
          var cmd = stmt.split(/{|\(| /)[0];
          
          var params = stmt.replace(cmd, "" ).replace(/=/g,":").replace(/\(/g,"{").replace(/\)/g,"}");
          

          params = params.replace(/ഇടത്|മുകൾ|ആരം|വീതി|ഉയരം|നിറം/gi, function(matched){
                  return {
                    "ഇടത്":"\"left\"", 
                    "മുകൾ":"\"top\"", 
                    "ആരം":"\"radius\"",
                    "വീതി":"\"width\"",
                    "ഉയരം":"\"height\"",
                    "നിറം":"\"color\""
                  }[matched];
                });
          var col = {"പച്ച":"#00ff00", "ചുവപ്പ്":"#ff0000", "നീല":"#0000ff"};
                
          var j = {};
          try {
            j = JSON.parse( params );
            
          } catch {
            if (cmd != "മായ്‌ക്കുക") {
              Err();
              return;
            }
          }

          if ('color' in j) {
            if (j.color in col) {
              cx.strokeStyle = col[j.color];
            } else {
              cx.strokeStyle = j.color;
            }
          } else {
            cx.strokeStyle = "#000";
          }
          
          cx.beginPath();
          switch(cmd) {
            case "മായ്‌ക്കുക":
              cx.clearRect(0,0,c.offsetWidth,c.offsetHeight);
              break;
            case "വൃത്തം":
              if ( !Number.isInteger(j.left) || !Number.isInteger(j.top) || !Number.isInteger(j.radius)) {
                Err();
              }
                cx.arc(j.left, j.top,j.radius,0, 2 * Math.PI, false);
              break;
            case "രേഖ":
              cx.moveTo(j.left, j.top);
              cx.lineTo(j.width, j.height);
              break;
            case "ചതുരം":
              cx.rect(j.left, j.top, j.width, j.height);
              break;
            default:
              Err();
              break;
          }
          function Err() {
            alert(`Syntax Error in "${cmd}" at line ${i+1}`);
          }

          if (cmd != "മായ്‌ക്കുക") cx.stroke();
          cx.closePath();
        });
      });
      
    </script>
    </body>
</html>