From 9aaa60fc8b8b6cb32e2491972b0ffe1d64367507 Mon Sep 17 00:00:00 2001 From: paul Date: Sun, 21 Dec 2008 14:47:55 +0000 Subject: [PATCH] jcf: more work on operators (r742) git-svn-id: trunk@17877 - --- components/jcf2/Notepad/frmJcfNotepad.dfm | 6 +----- components/jcf2/Notepad/frmJcfNotepad.pas | 12 +++++++++++- components/jcf2/Parse/BuildParseTree.pas | 20 ++++++++++++++++---- components/jcf2/readme.txt | 2 +- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/components/jcf2/Notepad/frmJcfNotepad.dfm b/components/jcf2/Notepad/frmJcfNotepad.dfm index ce44578f31..a83d117611 100644 --- a/components/jcf2/Notepad/frmJcfNotepad.dfm +++ b/components/jcf2/Notepad/frmJcfNotepad.dfm @@ -19,7 +19,7 @@ object fmJCFNotepad: TfmJCFNotepad OnKeyUp = FormKeyUp OnResize = FormResize OnShow = FormShow - PixelsPerInch = 120 + PixelsPerInch = 96 TextHeight = 20 object sb1: TStatusBar Left = 0 @@ -112,10 +112,6 @@ object fmJCFNotepad: TfmJCFNotepad object tsOutput: TTabSheet Caption = 'Output' ImageIndex = 1 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 504 object lblMessages: TLabel Left = 15 Top = 207 diff --git a/components/jcf2/Notepad/frmJcfNotepad.pas b/components/jcf2/Notepad/frmJcfNotepad.pas index b8de8bab25..f7a841f7a5 100644 --- a/components/jcf2/Notepad/frmJcfNotepad.pas +++ b/components/jcf2/Notepad/frmJcfNotepad.pas @@ -157,6 +157,7 @@ uses { jcl } JclStrings, { local } + JcfUnicodeFiles, JcfStringUtils, JCFHelp, fAbout, fRegistrySettings, fAllSettings, JcfFontSetFunctions; {$ifdef FPC} @@ -189,6 +190,9 @@ begin end; procedure TfmJCFNotepad.DoFileOpen(const psFileName: string); +var + lsFileContents: WideString; + leContentType: TFileContentType; begin if psFileName = '' then exit; @@ -196,7 +200,13 @@ begin exit; GetRegSettings.InputDir := ExtractFilePath(psFileName); - mInput.Text := string(FileToString(psFileName)); + + ReadTextFile(psFileName, lsFileContents, leContentType); + + // use standard line breaks - temp + //lsFileContents := WideStringReplace(lsFileContents, NativeLineFeed, NativeCrLf, [rfReplaceAll]); + + mInput.Text := lsFileContents; sb1.Panels[1].Text := psFileName; AddCheckMRU(psFileName); diff --git a/components/jcf2/Parse/BuildParseTree.pas b/components/jcf2/Parse/BuildParseTree.pas index 9954625094..77bcbf4521 100644 --- a/components/jcf2/Parse/BuildParseTree.pas +++ b/components/jcf2/Parse/BuildParseTree.pas @@ -770,7 +770,7 @@ begin } while fcTokenList.FirstSolidTokenType in [ttConst, ttResourceString, - ttType, ttVar, ttThreadVar, ttOpenSquareBracket, ttExports] + ProcedureWords do + ttType, ttVar, ttThreadVar, ttOpenSquareBracket, ttExports, ttOperator] + ProcedureWords do RecogniseInterfaceDecl; end; @@ -997,6 +997,8 @@ begin end; procedure TBuildParseTree.RecogniseConstSection(const pbNestedInClass: Boolean); +var + leFirstTokenType: TTokenType; begin { ConstSection -> CONST (ConstantDecl ';')... @@ -1012,8 +1014,13 @@ begin // #Trident# If const is nested inside a class, a visibility designator // ("private" for exemple) can be written after. // So, inside a class, no wtReservedWordDirective allowed - if pbNestedInClass and (fcTokenList.FirstSolidTokenType in ClassVisibility) then - break; + leFirstTokenType := fcTokenList.FirstSolidTokenType; + if pbNestedInClass and (leFirstTokenType in ClassVisibility) then + break; + + // can be followed by an operator decl in Lazarus + if leFirstTokenType = ttOperator then + break; end; PopNode; @@ -2254,6 +2261,9 @@ begin PopNode; end; +{ +This is a free-pascal style operator +} procedure TBuildParseTree.RecogniseOperator(const pbHasBody: boolean); begin PushNode(nFunctionDecl); @@ -2286,7 +2296,9 @@ end; procedure TBuildParseTree.RecogniseOperatorSymbol; const - OperatorTokens: TTokenTypeSet = [ttPlus, ttMinus, ttTimes, ttFloatDiv, ttEquals, ttAssign]; + OperatorTokens: TTokenTypeSet = [ttPlus, ttMinus, ttTimes, ttFloatDiv, + ttEquals, ttGreaterThan, ttLessThan, ttGreaterThanOrEqual, ttLessThanOrEqual, + ttAssign]; begin Recognise(OperatorTokens); end; diff --git a/components/jcf2/readme.txt b/components/jcf2/readme.txt index f90529003a..1f880dc1a4 100644 --- a/components/jcf2/readme.txt +++ b/components/jcf2/readme.txt @@ -1,3 +1,3 @@ -This directory contains a copy (sometimes modified) of r741 jcf2 svn tree: https://jedicodeformat.svn.sourceforge.net/svnroot/jedicodeformat/trunk/CodeFormat/Jcf2 +This directory contains a copy (sometimes modified) of r742 jcf2 svn tree: https://jedicodeformat.svn.sourceforge.net/svnroot/jedicodeformat/trunk/CodeFormat/Jcf2 Only command line utility works currently. \ No newline at end of file