nutn-homepage/Home/Compiler/index.html

76 lines
2.4 KiB
HTML
Raw Permalink Normal View History

2021-09-16 20:45:54 +08:00
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Assignment</title>
<link rel="stylesheet" href="lib/bootstrap.min.css">
<link rel="stylesheet" href="lib/codemirror.min.css">
<link rel="stylesheet" href="main.css">
</head>
<body>
<div id="root" class="container">
<h1>Lexical, Syntax & Semantic Analysis</h1>
<dl class="row mt-5">
<dt class="col-sm-2">Requirements: </dt>
<dd class="col-sm-10">
<pre>
# 保留字或運算子begin, for, end, if, then, else, while, int
# 運算子:+, -, *, /, =
# 判斷子:<, >, <=, >=, ==, and, or
# 若有詞法或語法錯誤,請印出並說明
# 請印出所有變數最後的狀態
# 自定義文法,使得以下範例成立:
begin
int x=0, zzz=5;
int i, j=1;
# 進行迴圈
for, i=1, i<=50, j; # j爲i每次遞增的值
x=x+1;
end
if ((x>5) and (j<=8)) then
x=1;
else
for, i=1, i<=50, j+1;
x=x+1;
end
while (i<11)
yy=x;
i=i+1;
end
end
end
</pre>
</dd>
<dt class="col-sm-2">Source Code: </dt>
<dd class="col-sm-10">
<div class="custom-file">
<input type="file" id="file" class="custom-file-input" @change="fileHandler">
<label class="custom-file-label" for="file">{{ file ? file.name : 'Choose file' }}</label>
<button type="button" class="btn btn-secondary" @click="fileHandler">Reload</button>
</div>
<div id="editor" class="editor"></div>
</dd>
<dt class="col-sm-2"></dt>
<dd class="col-sm-10">
<button type="button" class="btn btn-info" @click="lexer">Lex</button>
<button type="button" class="btn btn-info" @click="parser">Parse</button>
<button type="button" class="btn btn-primary" @click="run">Run</button>
<button type="button" class="btn btn-secondary" @click="reset">Clear</button>
</dd>
<hr>
<dt class="col-sm-2">Console: </dt>
<dd class="col-sm-10">
<pre class="error" v-if="error" v-text="error"></pre>
<pre v-if="!error && ids.length" v-for="(v, i) in ids">{{ v }}: {{ vars[i] }}</pre>
<p v-if="!error && lex.length" v-for="(l, i) in lex">{{ l }}</p>
<pre v-if="!error && json" v-text="json"></pre>
</dd>
</dl>
</div>
<script src="lib/codemirror.min.js"></script>
<script src="lib/vue-2.6.0.min.js"></script>
<script src="main.js"></script>
</body>
</html>