1. Description
-------------------
The module PASCALC.DCU is the Pascal-like language interpreter for Delphi.
The basic differences from standard Pascal the following:
- All variables stored as variants.
- It's no need to declare variables, labels and functions. PASCALC creates
variables dynamically on first assignment. Variable type depends on the
last value assigned, type checking is not carried out.
- Expressions syntax:
Arithmetic operators: +, -, *, /, ^ (power), SHL, SHL
Bitwise operators: BITOR,BITAND,BITXOR,BITNOT
Logical operators: >, <, >=, <=, =, <>, AND, OR, NOT,
constants TRUE and FALSE.
Operators precedence standard, you can use parentheses.
- Statements supported:
BEGIN... END
IF... THEN... ELSE
CASE
FOR... TO/DOWNTO... DO
WHILE... DO
REPEAT... UNTIL
BREAK
CONTINUE
GOTO
EXIT
USES
INCLUDE
- All reserved words are declared in interface section as string array.
You can change them to anyone others. All identifiers should be different
(except assignment and equation, they may be the same).
- Multi-dimensional arrays supported. Array items are variables whose names
consist from array name and indexes (in brackets). Array items properties
same as the simple variables. It's no need to declare arrays. Array index
continuity is not requred. It's possible to access string as char array.
You can assign chars or numbers in range 0..255 to string characters.
Array name should be unique, simple variable MyArr and array item MyArr[1]
can't exist at the same time. This rule allows to distinguish access to
1-st character of string variable MyArr (MyArr[1]) from the accees to
the first item of array MyArr. To access character of string array item,
character index should be written in brackets after item name, for example
MyArr[1,2][3].
- All build-in functions are user-defined. Module pasfunc.pas contain
example of PASCALC implementations for common Delphi functions. You can use
this functions and write your own implementations for necessary functions.
There is no need to declare parameters for user-defined functions, therefore
it's types and amount are not limited. If necessary you can provide type
checking inside function code. Interpreter calculates all parameter values
and creates temporary values list (TVarList). Names of var-parameters in this
list are 'VAR', otherwise 'VALUE'. After function call interpreter updates
values for var-parameters. Function result type not checked, one function can
return number as well as string. Functions can be called as procedures (without
result usage).
- Procedures and functions (in sense of the subroutines on interpreter language)
are supported. The function heading specifies only names of formal parameters,
without parameters types and pass method (var or value). Also, function's result
types are not declared. To return function result you should assign value to
variable "result".
If actual parameter is variable (not expression), it considered as var-parameter.
In this case assigning new value to this parameter inside procedure or function
will affect the actual parameter variable.
At the same time, all interpreter global variables inside a function or procedures
looks like local variables, with the same initial values as global ones.
You can change this values inside procedures (functions), but it's don't affect
the global variables. All new variables created inside procedures and functions
are local, and will be destroyed after exiting.
Therefore, it is possible to use any names for local variables, without conflicts
with the global variables.
For libraries implementation, it is possible to use operators USES and INCLUDE.
Syntax: USES 'filename';
INCLUDE 'filename';
INCLIDE and USES are parsed by pre-processor before script execution.
INCLUDE inserts text from file 'filename' into the script, USES loads
procedures and functions declarations.
2. License
----------
This software is provided as it is, without any kind of warranty given.
The author can not be held responsible for any kind of damage, problems etc,
arised from using this software. PASCALC interpreter is shareware product.
Unregistered version has no time or functionality limitations, but can
show info screen.
If you want get source code, you should register PASCALC and get registration code.
Use your registration code as password for source archive (Source\pascsrc.zip).
Address for online registration (price $20):
https://www.regnow.com/softsell/nph-softsell.cgi?item=2608-2
You can modify PASCALC source code as you need, distribute executable files
compiled with PASCALC source. But you can't distribute original or modified
PASCALC source code, .DCU units or libraries based on PASCALC source code.
3. PASCALC inteface
-------------------
unit pascalc;
{$F+,B-,R-}
interface
uses
Windows, Messages, SysUtils, Classes, Math;
type TToken =
(tEMPTY, tVR, tCON, tTRUE, tFALSE,
tEQU, tOR, tAND, tNOT, tXOR,
tCOMMA, tLBL, tNEQ, tGT, tLS,
tGTE, tLSE, tADD, tSUB, tMUL,
tDIV, tPWR, tLBR, tRBR, tLARR,
tRARR, tSEMI, tREM, tREMB, tREME,
tASSIGN, tBEGIN, tEND, tIF, tTHEN,
tELSE, tFOR, tTO, tDOWNTO, tDO,
tWHILE, tREPEAT, tUNTIL, tBREAK, tCONTINUE,
tEXIT, tGOTO, tSHL, tSHR, tPROC,
tFUNCT, tUSES, tINCLUDE, tCASE, tOF,
tCOMMA2);
type TTokenSet = set of TToken;
const
ResWords : array[TToken] of string[10] =
('', '', '', 'TRUE', 'FALSE',
'=', 'OR', 'AND', 'NOT', 'XOR',
',', ':', '<>', '>', '<',
'>=', '<=', '+', '-', '*',
'/', '^', '(', ')', '[',
']', ';', '//', '{', '}',
':=', 'BEGIN', 'END', 'IF', 'THEN',
'ELSE', 'FOR', 'TO', 'DOWNTO', 'DO',
'WHILE', 'REPEAT', 'UNTIL', 'BREAK', 'CONTINUE',
'EXIT', 'GOTO', 'SHL', 'SHR', 'PROCEDURE',
'FUNCTION', 'USES', 'INCLUDE', 'CASE', 'OF',
'..');
const
Alpha : set of char = ['_','0'..'9','a'..'z','A'..'Z','à'..'ÿ','¸','À'..'ß','¨'];
StrDelimiter : char = '''';
DecimalPoint : char = '.';
TokenDelimiter : char = #127;
type TVar = record
Name : string;
Value : variant;
end;
type TPVar = ^TVar;
type TVarList = class (TList)
destructor Destroy; override;
procedure ClearAll;
function AddVar(V:TVar) : boolean;
function AddValue(N:string; V:variant) : boolean;
function VarExist(N:string):boolean;
function VarIndex(N:string):integer;
function VarByName(N:string;var V:TVar) : boolean;
function SetVar(V:TVar) : boolean;
function SetValue(N:string; V:variant) : boolean;
procedure CopyTo(VL:TVarList);
end;
type TPVarList = ^TVarList;
type PProcessProc = procedure;
type PFunction = function(Sender:TObject; var A:TVarList; var R:TVar) : boolean;
type TFunc = record
Name : string;
Func : Pointer;
end;
type TPFunc = ^TFunc;
type TFuncList = class (TList)
destructor Destroy; override;
procedure ClearAll;
function AddFunction(N:string; F:Pointer) : boolean;
end;
type TProcedure = record
Name : string;
Body : string;
Params : string;
Result : boolean;
end;
type TPProcedure = ^TProcedure;
type TProcList = class(TList)
dest
没有合适的资源?快使用搜索试试~ 我知道了~
AsProgrammer-2.0.3a编程器
共73个文件
po:9个
exe:9个
sys:8个
需积分: 7 9 下载量 28 浏览量
2023-03-21
17:57:00
上传
评论
收藏 12.41MB ZIP 举报
温馨提示
AsProgrammer_2.0.3a编程器
资源推荐
资源详情
资源评论
收起资源包目录
AsProgrammer_2.0.3a编程器.zip (73个子文件)
AsProgrammer_2.0.3a编程器
schemeMW.gif 40KB
avrisp-mk2_firmware
USBTINYMKII-16(at90usb162).hex 32KB
schemeI2C.gif 44KB
libusb0.dll 66KB
lang
ja.po 12KB
pt-pt.po 12KB
en.po 11KB
cn.po 11KB
pl.po 12KB
fr.po 12KB
ru.po 5KB
it.po 12KB
pt-br.po 12KB
kb9012pins.txt 128B
arduino
asprog
microwire.cpp 1KB
i2c_cmd.h 143B
i2c_cmd.cpp 4KB
defines.h 475B
i2c.h 247B
spi_cmd.cpp 3KB
i2c.cpp 2KB
mw_cmd.h 110B
commands.h 618B
microwire.h 174B
spi_cmd.h 91B
mw_cmd.cpp 3KB
commands.cpp 1KB
asprog.ino 274B
usbasp-driver
zadig_xp_2.2.exe 5.07MB
zadig.ini 1KB
zadig_vista+_2.2.exe 4.96MB
CH341-Drivers
CH341Serial_driver_support WIN7
CH341SER.VXD 20KB
CH341SER.EXE 82KB
CH341S64.SYS 57KB
CH341PT.DLL 7KB
DRVSETUP64
DRVSETUP64.exe 41KB
CH341SER.INF 6KB
ch341SER.CAT 10KB
CH341SER.SYS 39KB
CH341S98.SYS 19KB
CH341Parallel_driver_support WIN7
CH341WDM.INF 5KB
CH341WDM.SYS 20KB
DRVSETUP64
DRVSETUP64.exe 36KB
CH341PAR.EXE 76KB
CH341WDM.CAT 8KB
CH341W64.SYS 31KB
CH341DLL.DLL 30KB
schemeSPI45.gif 44KB
usbasp_firmware
mega8_2.0.hex 15KB
settings.xml 218B
AVRISPMK2-Driver
AVRISP_mkII.inf 8KB
amd64
libusb0.sys 52KB
libusb0.dll 75KB
license
libusb0
installer_license.txt 42KB
avrisp_mkii.cat 9KB
installer_x86.exe 23KB
installer_x64.exe 25KB
ia64
libusb0.sys 108KB
libusb0.dll 154KB
x86
libusb0.sys 42KB
libusb0_x86.dll 66KB
FT232H.gif 69KB
CH341DLL.DLL 30KB
ftd2xx.dll 383KB
chiplist.xml 49KB
schemeSPI25.gif 42KB
AsProgrammer.exe 3.54MB
scripts
script_func.html 13KB
README_RU.TXT 17KB
blockerase.pas 638B
i2c_example.pas 973B
GPR25L3203F_OTP.pas 484B
README.TXT 15KB
共 73 条
- 1
资源评论
极客点儿
- 粉丝: 4993
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功