当前位置:首页 » 编程软件 » 用脚本语言打造求解器

用脚本语言打造求解器

发布时间: 2022-07-18 10:19:37

㈠ 求高手帮忙,用javascript脚本语言编写个最简单的计算器,如图所示

Calculator.java:
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.applet.*;
public class Calculator extends Applet implements ActionListener{
Panel buttonPanel;
TextField tf; //用于显示输入的数字的文本框
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bDot,bPlus,bSub,bDiv,bMulti,bEqual; //按键
String onDisplay=""; //显示在文本框中的字符串
boolean isDotPressed=false; //按键'.'是否被按下
float operand; //通过按键输入的数
float operand1,operand2;//operand1和operand2为计算用的操作数
char operator; //计录所用的操作符
float result; //计算结果
int times=1; //小数点后有几位的10次方幂
public void init(){
setLayout(new BorderLayout(5,5));
tf=new TextField(30);
add(tf,BorderLayout.NORTH);
buttonPanel=new Panel();
buttonPanel.setLayout(new GridLayout(4,4,5,5));
add(buttonPanel,BorderLayout.CENTER);
//下面依次把按钮添加上去

b1=new Button("1");
buttonPanel.add(b1);
b1.addActionListener(this);
b1.setActionCommand("1");

b2=new Button("2");
buttonPanel.add(b2);
b2.addActionListener(this);
b2.setActionCommand("2");

b3=new Button("3");
buttonPanel.add(b3);
b3.addActionListener(this);
b3.setActionCommand("3");

bPlus=new Button("+");
buttonPanel.add(bPlus);
bPlus.addActionListener(this);
bPlus.setActionCommand("+");

b4=new Button("4");
buttonPanel.add(b4);
b4.addActionListener(this);
b4.setActionCommand("4");

b5=new Button("5");
buttonPanel.add(b5);
b5.addActionListener(this);
b5.setActionCommand("5");
b6=new Button("6");
buttonPanel.add(b6);
b6.addActionListener(this);
b6.setActionCommand("6");

bSub=new Button("-");
buttonPanel.add(bSub);
bSub.addActionListener(this);
bSub.setActionCommand("-");

b7=new Button("7");
buttonPanel.add(b7);
b7.addActionListener(this);
b7.setActionCommand("7");

b8=new Button("8");
buttonPanel.add(b8);
b8.addActionListener(this);
b8.setActionCommand("8");

b9=new Button("9");
buttonPanel.add(b9);
b9.addActionListener(this);
b9.setActionCommand("9");

bMulti=new Button("*");
buttonPanel.add(bMulti);
bMulti.addActionListener(this);
bMulti.setActionCommand("*");

b0=new Button("0");
buttonPanel.add(b0);
b0.addActionListener(this);
b0.setActionCommand("0");

bDot=new Button(".");
buttonPanel.add(bDot);
bDot.addActionListener(this);
bDot.setActionCommand(".");

bEqual=new Button("=");
buttonPanel.add(bEqual);
bEqual.addActionListener(this);
bEqual.setActionCommand("=");

bDiv=new Button("/");
buttonPanel.add(bDiv);
bDiv.addActionListener(this);
bDiv.setActionCommand("/");

}

public void actionPerformed(ActionEvent e){
String str=e.getActionCommand();
char b=str.charAt(0);
switch(b){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': onDisplay+=b;
operand=operand*10+Integer.parseInt(str);
if(isDotPressed) times*=10;
tf.setText(onDisplay);
break;
case '.': onDisplay+=b;
isDotPressed=true;
tf.setText(onDisplay);
break;
case '+':
case '-':
case '*':
case '/': operator=b;
operand1=operand/times;
System.out.println(operand1);
onDisplay="";
times=1;
isDotPressed=false;
operand=0;
break;
case '=': operand2=operand/times;
System.out.println(operand2);
switch(operator){
case '+': result=operand1+operand2;break;
case '-': result=operand1-operand2;break;
case '*': result=operand1*operand2;break;
case '/': result=operand1/operand2;break;
}
tf.setText(float.toString(result));
onDisplay="";
times=1;
isDotPressed=false;
operand=0;
break;
}
}
}

Calculator.html:
<html>
<applet code="Calculator.class" width=250 height=250>
</applet>
</html>

㈡ 利用JavaScript脚本语言编写一个简单的“网页计算器”

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript">
function jsq(fh)
{
var num1,num2;
num1=parseFloat(document.form1.text1.value);
num2=parseFloat(document.form1.text2.value);
if(fh=="+")
document.form1.text3.value=num1+num2;
if(fh=="-")
document.form1.text3.value=num1-num2;
if(fh=="*")
document.form1.text3.value=num1*num2;
if(fh=="/")
if(num2!=0)
{
document.form1.text3.value=num1/num2;
}
else
{
alert ("除数不能为零!")
}
}
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<label>
<input name="text1" type="text" id="text1" />
</label>
<p>
<label>
<input name="text2" type="text" id="text2" />
</label>
</p>
<p>
<label>
<input name="Button1" type="Button" id="Button1" value="+" onClick="jsq('+')">
<input name="Button2" type="Button" id="Button2" value="-" onClick="jsq('-')"/>
<input name="Button3" type="Button" id="Button3" value="*" onClick="jsq('*')"/>
<input name="Button4" type="Button" id="Button4" value="/" onClick="jsq('/')"/>
</label>
</p>
<p>
<label>
<input name="text3" type="text" id="text3" />
</label>
</p>
</form>
</body>
</html>

㈢ 用javascript脚本语言编写一个 计算器计算加减乘除 谢谢,很急!大家帮帮忙呀!!!

<html>

<head>

<title>runcode</title>

<scripttype="text/javascript">

functionrun(t){

varsa=parseInt(document.getElementById('sa').value);

varsb=parseInt(document.getElementById('sb').value);

varsc=document.getElementById('sc');

if(isNaN(sa)||isNaN(sb)){

alert("输入错误,请重新输入!");

return;

}

switch(t){

case1:

sc.value=sa+sb;

break;

case2:

sc.value=sa-sb;

break;

case3:

sc.value=sa*sb;

break;

case4:

if(sb==0){

alert("被除数不能为0!");

return;

}

sc.value=sa/sb;

break;

}

}

</script>

</head>

<body>

<tablewidth="255"height="136"border="1"style="background:#66CCFF;font-size:12px;">

<tr>

<tdcolspan="3">计算器</td>

</tr>

<tr>

<tdwidth="62"height="34">第一个数</td>

<tdwidth="102"><inputname="text"type="text"id="sa"width="100px"onclick="this.value=''"value=""/></td>

<tdwidth="29"rowspan="3"><inputname="button"type="button"onclick="run(1)"value="+"/>

<inputname="button2"type="button"onclick="run(2)"value="-"/>

<inputname="button3"type="button"onclick="run(3)"value="*"/>

<inputname="button4"type="button"onclick="run(4)"value="/"/></td>

</tr>

<tr>

<tdheight="32">第二个数</td>

<td><inputname="text2"type="text"id="sb"width="100px"onclick="this.value=''"value=""/></td>

</tr>

<tr>

<td>计算结果</td>

<td><inputname="text3"type="text"id="sc"width="100px"value=""/></td>

</tr>

</table>

<p>&nbsp;</p>

</body>

</html>

<html>

<head>

<title>runcode</title>

<scripttype="text/javascript">

functionrun(t){

varsa=parseInt(document.getElementById('sa').value);

varsb=parseInt(document.getElementById('sb').value);

varsc=document.getElementById('sc');

if(isNaN(sa)||isNaN(sb)){

alert("输入错误,请重新输入!");

return;

}

switch(t){

case1:

sc.value=sa+sb;

break;

case2:

sc.value=sa-sb;

break;

case3:

sc.value=sa*sb;

break;

case4:

if(sb==0){

alert("被除数不能为0!");

return;

}

sc.value=sa/sb;

break;

}

}

</script>

</head>

<body>

<tablewidth="255"height="136"border="1"style="background:#66CCFF;font-size:12px;">

<tr>

<tdcolspan="3">计算器</td>

</tr>

<tr>

<tdwidth="62"height="34">第一个数</td>

<tdwidth="102"><inputname="text"type="text"id="sa"width="100px"onclick="this.value=''"value=""/></td>

<tdwidth="29"rowspan="3"><inputname="button"type="button"onclick="run(1)"value="+"/>

<inputname="button2"type="button"onclick="run(2)"value="-"/>

<inputname="button3"type="button"onclick="run(3)"value="*"/>

<inputname="button4"type="button"onclick="run(4)"value="/"/></td>

</tr>

<tr>

<tdheight="32">第二个数</td>

<td><inputname="text2"type="text"id="sb"width="100px"onclick="this.value=''"value=""/></td>

</tr>

<tr>

<td>计算结果</td>

<td><inputname="text3"type="text"id="sc"width="100px"value=""/></td>

</tr>

</table>

<p>&nbsp;</p>

</body>

</html>

c语言写脚本解释器

记录大括号!!!
遇到if则判断语句,接下来,然后假设判断式成立,执行if紧跟着的语句,把大括号括起来的当成一个语句,执行下去,如果没有else的话就继续,有else的话跳过else所包含的范围.

㈤ 我想自己用C/C++做一个脚本语言解释器,但是不知道需要什么知识

对于脚本解释的,只是调用了系统的api吧,应该是这样子,你自己用程序写,然后调用系统api,然后获取返回内容就行了
比如普通的命令,,复制,你可以定义成其他名字,调用的api或者是直接用cmd下可以用的命令直接用
至于读取你的程序执行内容,那根读取文本一样
举个例子
包含必要头文件
if读取内容正确,先读命令,读到空格,一直往后读到参数

执行相关代码,比如特定的api函数,或者是直接用cmd下的命令,system("calc");这个是打开计算器,包含头文件windows.h
继续循环到开头重新读

㈥ 如何用 ANTLR 4 实现自己的脚本语言

在 ANTLR 里,我们写的规则,会生成解析器的代码,这个解析器,会把目标脚本,解析成一个抽象语法树。这颗抽象语法树上,越是靠近叶子节点的地方,结合优先级越高,越是靠近根的地方,结合优先级越低,根据这个特点,我们就可以让 ANTLR 帮我们完成以上的规则:
addExpression
: mulExpression (('+' | '-') mulExpression)*
;
mulExpression
: primaryExpression (('*' | '/') primaryExpression)*
;
primaryExpression
: Decimal
| '(' addExpression ')'
;

上面展示的 ANTLR 规则,在 primaryExpression
中,包括两个可选项,要么是数字,要么是括号表达式,是最高优先级,然后是 mulExpression,优先级最低的是 addExpression
。括号表达式内,是一个 addExpression ,所以,这是一个循环结构,可以处理无限长的四则运算式,比如
1+2*3-(4+5)/6+7+8,会被解析为如下的语法树:
addExpression : 1 + child1_1 - child1_2 + 7 + 8
child1_1 mulExpression : 2 * 3
child1_2 mulExpression : child1_2_1 / 6
child1_2_1 addExpression : 4 + 5

热点内容
红帆oa服务器地址查询 发布:2025-02-07 14:31:41 浏览:656
文本框脚本图片 发布:2025-02-07 14:23:28 浏览:229
少儿编程c语言 发布:2025-02-07 14:22:50 浏览:217
一阶低通滤波器c语言 发布:2025-02-07 14:22:37 浏览:850
电脑的东西为什么粘贴不到服务器 发布:2025-02-07 14:21:04 浏览:195
手机脱模解压视频 发布:2025-02-07 14:20:18 浏览:472
密码多少密码多少密码多少密码 发布:2025-02-07 14:07:30 浏览:856
我的世界启动器电脑服务器 发布:2025-02-07 14:07:27 浏览:483
爱加密深圳科技有限 发布:2025-02-07 14:07:26 浏览:86
c语言密码星号 发布:2025-02-07 14:07:24 浏览:801