Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
paule32 committed Jul 22, 2023
1 parent 953cd31 commit 1d18e60
Show file tree
Hide file tree
Showing 7 changed files with 784 additions and 403 deletions.
21 changes: 18 additions & 3 deletions src/EditorForm.pas
Original file line number Diff line number Diff line change
Expand Up @@ -2936,6 +2936,16 @@ procedure TForm1.CreateSimpleMSDOSdBaseProgram;
DFrameEditor.SynEdit1.Text :=
'// This File was created automatically' + sLineBreak +
'// Press F2-key to execute it.' + sLineBreak +
'' + sLineBreak +
'# define TESTMACRO 42 // macro for: number' + sLineBreak +
'# define MACRO2 "string" // macro for: string' + sLineBreak +
'' + sLineBreak +
'parameter bModal' + sLineBreak +
'local f = new Form1()' + sLineBreak +
'if bModal == .T.' + sLineBreak +
' f.open()' + sLineBreak +
'endif' + sLineBreak +
'' + sLineBreak +
'class foo of form' + sLineBreak +
' with ( this )' + sLineBreak +
' endwith' + sLineBreak +
Expand All @@ -2944,13 +2954,18 @@ procedure TForm1.CreateSimpleMSDOSdBaseProgram;
' this.pushbutton = new pushbutton( this.container)' + sLineBreak +
' with (this.pushbutton)' + sLineBreak +
' foo.xxx = 4' + sLineBreak +
' bool = .F.' + sLineBreak +
' fatz = "sssss"' + sLineBreak +
' futz = ''xxxx''' + sLineBreak +
' baz = [ \"dddd 22 ]' + sLineBreak +
' endwith' + sLineBreak +
'' + sLineBreak +
' function dummy1' + sLineBreak +
' procedure dummy1(p1,p2,p3)' + sLineBreak +
' return' + sLineBreak +
'' + sLineBreak +
' function dummy2' + sLineBreak +
' return' + sLineBreak +
' function dummy2(p1)' + sLineBreak +
' baz = 32' + sLineBreak +
' return ("foobar" + ddd + "goo")' + sLineBreak +
'' + sLineBreak +
'endclass' + sLineBreak;

Expand Down
5 changes: 0 additions & 5 deletions src/EditorFrame.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,6 @@ object Frame19: TFrame19
object N2: TMenuItem
Caption = '-'
end
object Delete1: TMenuItem
Caption = 'Delete'
ShortCut = 46
OnClick = Delete1Click
end
object SelectAll1: TMenuItem
Caption = 'Select All'
ShortCut = 16449
Expand Down
8 changes: 0 additions & 8 deletions src/EditorFrame.pas
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ TFrame19 = class(TFrame)
Copy1: TMenuItem;
Paste1: TMenuItem;
N2: TMenuItem;
Delete1: TMenuItem;
SelectAll1: TMenuItem;
procedure JvImgBtn1Click(Sender: TObject);
procedure CopyButtonClick(Sender: TObject);
Expand Down Expand Up @@ -192,13 +191,6 @@ procedure TFrame19.SynEdit1KeyDown(Sender: TObject; var Key: Word;
begin
Form1.StartCompileClick(Sender);
exit;
end else
if key = VK_DELETE then
begin
SynEdit1.SelStart := SynEdit1.CaretX;
SynEdit1.SelEnd := SynEdit1.SelStart + 1;
SynEdit1.ClearSelection;
exit;
end;

if ssCtrl in Shift then
Expand Down
55 changes: 54 additions & 1 deletion src/dBaseDSL/dBaseDSL.l
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ NUM ({DIGIT}+)
ID ([a-zA-Z]+)|([a-zA-Z0-9_]+)
FILE1 [ a-zA-Z0-9\_\.\\]*
FILENAME \"(({LETTER}\:\\{FILE1})|({LETTER}\:{FILE1})|({FILE1})*)\"
STRING ("([^"]|"")*")

A [a|A]
B [b|B]
Expand Down Expand Up @@ -87,31 +86,82 @@ Z [z|Z]

{C}{L}{A}{S}{S} { return TOK_CLASS; }
{C}{L}{E}{A}{R} { return TOK_CLEAR; }
{C}{U}{S}{T}{O}{M} { return TOK_CUSTOM; }
{D}{E}{F}{I}{N}{E} { return TOK_DEFINE; }
{E}{L}{S}{E} { return TOK_ELSE; }
{E}{N}{D}{C}{L}{A}{S}{S} { return TOK_ENDCLASS; }
{E}{N}{D}{F}{O}{R} { return TOK_ENDFOR; }
{E}{N}{D}{I}{F} { return TOK_ENDIF; }
{E}{N}{D}{W}{I}{T}{H} { return TOK_ENDWITH; }
{F}{A}{L}{S}{E} { return TOK_FALSE; }
{F}{O}{R} { return TOK_FOR; }
{F}{U}{N}{C}{T}{I}{O}{N} { return TOK_FUNCTION; }
{I}{F} { return TOK_IF; }
{L}{O}{C}{A}{L} { return TOK_LOCAL; }
{N}{E}{W} { return TOK_NEW; }
{O}{F} { return TOK_OF; }
{P}{A}{R}{A}{M}{E}{T}{E}{R} { return TOK_PARAMETER; }
{P}{R}{I}{V}{A}{T}{E} { return TOK_PRIVATE; }
{P}{R}{O}{C}{E}{D}{U}{R}{E} { return TOK_PROCEDURE; }
{R}{E}{T}{U}{R}{N} { return TOK_RETURN; }
{S}{E}{T} { return TOK_SET; }
{T}{O} { return TOK_TO; }
{T}{R}{U}{E} { return TOK_TRUE; }
{W}{I}{T}{H} { return TOK_WITH; }

[0-9]+ { yylval.node_and_value.value = atof(yytext); return TOK_NUMBER; }
[0-9]+\.[0-9]+ { yylval.node_and_value.value = atof(yytext); return TOK_NUMBER; }

[a-zA-Z_]+|[a-zA-Z0-9_]+ {
// -----------------------------------
// pattern for: identifier's ...
// -----------------------------------
yylval.node_and_value.name = (char*) malloc( strlen( yytext ) + 1); strcpy(
yylval.node_and_value.name, yytext);

return TOK_ID;
}

["']((\\.|[^"'])*)["'] {
// -----------------------------------
// pattern for: "Hello World"
// pattern for: 'Hello World'
// -----------------------------------
yylval.node_and_value.name = (char*) malloc( strlen( yytext ) + 1); strcpy(
yylval.node_and_value.name, yytext );

return TOK_STRING;
}

\[(\"|\')?((\\.|[^\"\'\]])*)(\"|\')?\] {
// -----------------------------------
// pattern for: [ "Hallo \" World" ]
// pattern for: [ 'Hello \' World' ]
// -----------------------------------
char* str = yytext;
int len = 0;

if (str[0] == '\'' || str[0] == '\"')
str++;

len = strlen(str);

if (str[len - 1] == '\'' || str[len - 1] == '\"')
str[len - 1] = '\0' ;

yylval.node_and_value.name = (char*) malloc( strlen( str ) + 1); strcpy(
yylval.node_and_value.name, str );

return TOK_STRING_BRACE;
}

\.{A}{N}{D}\. { return TOK_AND; }
\.{N}{O}{T}\. { return TOK_NOT; }
\.{O}{R}\. { return TOK_OR; }

\.{F}\. { return TOK_FALSE; }
\.{T}\. { return TOK_TRUE; }

"==" { return TOK_EQEQ; }
"!=" { return TOK_LTGT; }
"=>" { return TOK_EQGT; }
Expand All @@ -127,6 +177,8 @@ Z [z|Z]
"/" { return '/'; }
\% { return '%'; }

\# { return '#'; }

(\=)|(\:\=) { return TOK_ASSIGN; }

\( { return '('; }
Expand All @@ -135,6 +187,7 @@ Z [z|Z]
\] { return ']'; }
\{ { return '{'; }
\} { return '}'; }
\, { return ','; }
\. { return '.'; }

. {
Expand Down
Loading

0 comments on commit 1d18e60

Please sign in to comment.