diff --git a/src/common/Escape.ref b/src/common/Escape.ref index c3bf4e7e..1949eb72 100644 --- a/src/common/Escape.ref +++ b/src/common/Escape.ref @@ -30,7 +30,7 @@ $ENTRY EscapeChar { }; } -*$DRIVE EscapeChar +*$xDRIVE EscapeChar $ENTRY EscapeString { e.String = ; diff --git a/src/common/FindFile.ref b/src/common/FindFile.ref index 76fa8501..01b640e5 100644 --- a/src/common/FindFile.ref +++ b/src/common/FindFile.ref @@ -5,7 +5,7 @@ $EXTERN Map; $EXTERN DirectorySeparator, PathSeparator; -*$DRIVE DS +*$xDRIVE DS DS { = } diff --git a/src/compiler/Engine.ref b/src/compiler/Engine.ref index d4e65045..3329990a 100644 --- a/src/compiler/Engine.ref +++ b/src/compiler/Engine.ref @@ -406,7 +406,7 @@ PatchASTSrcPos { = ; } -*$SPEC PatchAST, PatchAST-Item, PatchAST-Body, PatchAST-Sentence, +*$xSPEC PatchAST, PatchAST-Item, PatchAST-Body, PatchAST-Sentence, *$ PatchAST-Chain, PatchAST-Blocks, PatchAST-Expr PatchAST { diff --git a/src/compiler/Generator-RASL.ref b/src/compiler/Generator-RASL.ref index 051177be..a9c29d33 100644 --- a/src/compiler/Generator-RASL.ref +++ b/src/compiler/Generator-RASL.ref @@ -8,7 +8,7 @@ $EXTERN PrintErr; $INCLUDE "Opcodes"; -*$DRIVE NumberFromOpcode, NumberFromBracket, BlockTypeNumber +*$xDRIVE NumberFromOpcode, NumberFromBracket, BlockTypeNumber $ENTRY GenProgram-RASL { ( @@ -93,19 +93,19 @@ BytesFromStringList { >; } -*$DRIVE BytesFromString +*$xDRIVE BytesFromString BytesFromString { e.String = ; } -*$DRIVE Asciiz +*$xDRIVE Asciiz Asciiz { e.String = 0; } -*$DRIVE PutBlock +*$xDRIVE PutBlock PutBlock { s.Type e.Bytes = @@ -126,7 +126,7 @@ PutWordLE { = ; } -*$DRIVE NameWithSign-Bytes +*$xDRIVE NameWithSign-Bytes NameWithSign-Bytes { GN-Entry e.Name = >; @@ -389,7 +389,7 @@ GenCommand-RASL { ; } -*$DRIVE PutCommand +*$xDRIVE PutCommand PutCommand { s.Symbolic = ( 0 0 0); @@ -410,7 +410,7 @@ PutCommand { }; } -*$DRIVE CreateCommandTag +*$xDRIVE CreateCommandTag CreateCommandTag { ElOpenBracket = ElBracket; @@ -423,7 +423,7 @@ CreateCommandTag { s.Other = s.Other; } -*$DRIVE CreateCommandInfo +*$xDRIVE CreateCommandInfo CreateCommandInfo { ElChar s.Char = ; diff --git a/src/compiler/GenericMatch.ref b/src/compiler/GenericMatch.ref index d2bf24bd..752a8042 100644 --- a/src/compiler/GenericMatch.ref +++ b/src/compiler/GenericMatch.ref @@ -2103,7 +2103,7 @@ AddContractions-Spec-Symm { == PRTC */ -*$DRIVE AddContraction-Spec, AddContraction-Spec-Symm +*$xDRIVE AddContraction-Spec, AddContraction-Spec-Symm AddContraction-Spec { t.toAdd (s.OpenFlag e.Contrs) e.Clashes (e.Assigns) diff --git a/src/compiler/OptTree-Drive-Expr.ref b/src/compiler/OptTree-Drive-Expr.ref index 269e5084..3fdf009f 100644 --- a/src/compiler/OptTree-Drive-Expr.ref +++ b/src/compiler/OptTree-Drive-Expr.ref @@ -42,11 +42,11 @@ ColdAll { MaxCntNodes { = 100 } -*$DRIVE MaxCntNodes +*$xDRIVE MaxCntNodes MaxTreeDepth { = 20 } -*$DRIVE MaxTreeDepth +*$xDRIVE MaxTreeDepth IncWithMax { s.Cnt s.Max, : '+' = ; @@ -471,7 +471,7 @@ FindOptInfo-Aux { ((e.Name) Sentences ); } -*$DRIVE CutSUF +*$xDRIVE CutSUF CutSUF { e.Prefix SUF = e.Prefix; diff --git a/src/compiler/OptTree-StopRelation.ref b/src/compiler/OptTree-StopRelation.ref index f337cbe9..76a04d5c 100644 --- a/src/compiler/OptTree-StopRelation.ref +++ b/src/compiler/OptTree-StopRelation.ref @@ -37,7 +37,7 @@ $ENTRY OptTree-CheckExprStopRelation { (e.CurrentExpr) e.HistoryExpr = ; } -*$DRIVE Trace +*$xDRIVE Trace Trace { */* diff --git a/src/compiler/OptTree.ref b/src/compiler/OptTree.ref index 597d254e..51589a2e 100644 --- a/src/compiler/OptTree.ref +++ b/src/compiler/OptTree.ref @@ -244,7 +244,7 @@ Int-Cond { s.Opt = True; } -*$DRIVE Int-Cond +*$xDRIVE Int-Cond Int-Cond-Or { t.Cond e.Flags @@ -283,7 +283,7 @@ Int-LoopForWarmFunctions { (e.Defines) e.Code s.Cycles (e.AST) = s.Cycles e.AST; } -*$DRIVE Int-Lookup +*$xDRIVE Int-Lookup Int-Lookup { s.ProcName (define s.ProcName e.Body) e._ = e.Body; diff --git a/src/compiler/R5-Lexer.ref b/src/compiler/R5-Lexer.ref index 8ff2dcd8..89077ac6 100644 --- a/src/compiler/R5-Lexer.ref +++ b/src/compiler/R5-Lexer.ref @@ -88,7 +88,7 @@ IncLine { (RowCol s.Line s.Col) = (RowCol 1); } -*$DRIVE IncCol +*$xDRIVE IncCol IncCol { (RowCol s.Line s.Col) = (RowCol s.Line ); @@ -279,7 +279,7 @@ DoScan-BuildKeyword { (e.Line) e.Lines>; } -*$DRIVE EasterEgg +*$xDRIVE EasterEgg EasterEgg { t.Pos s.Char e.Text = (TkChar t.Pos s.Char) ; @@ -466,7 +466,7 @@ HexDigit { }; } -*$DRIVE DoHexDigit +*$xDRIVE DoHexDigit DoHexDigit { s.Digit e.Samples s.Val s.Digit = s.Val; diff --git a/src/compiler/R5-Parser.ref b/src/compiler/R5-Parser.ref index a184b063..98aef5e7 100644 --- a/src/compiler/R5-Parser.ref +++ b/src/compiler/R5-Parser.ref @@ -91,6 +91,24 @@ ParsePseudocomment { t.Pos s.Node (/* scanned */) t.ErrorList e.Tokens >; +/* + TODO: Стабильная версия 3.3 по-другому парсит ключевые слова и сообщает + об ошибках в них (не предупреждениях). Поэтому, чтобы можно было собрать + текущую версию и стабильной, и самой собой, для каждого ключевого слова + создаём синоним вида *$xDRIVE или *$xSPEC. Он игнорируется стабильной + версией 3.3 и работает в рабочей. + + TODO: после обновления стабильной версии нужно будет удалить поддержку + псевдокомментариев *$x..., а также почистить исходники. Для этой цели + добавлена заготовка предупреждения. +*/ + t.ErrorList t.Pos (TkName t.NamePos 'x' e.Name) e.Tokens +* = +* : t.ErrorList^ + = ; + t.ErrorList t.Pos e._unrecognized = t.ErrorList /* пропускаем неопознанный псевдокомментарий */; } @@ -769,14 +787,14 @@ Expression { >; } -*$DRIVE TokenChain, Expression +*$xDRIVE TokenChain, Expression TokenChain { t.ErrorList s.Mode s.Kind e.Tokens = } -*$NOOPT DoTokenChain +*$xNOOPT DoTokenChain DoTokenChain { s.Mode s.Kind t.ErrorList (e.Collected) t.NextToken e.Tokens @@ -1031,7 +1049,7 @@ Expression-CheckBrackets { = t.ErrorList t.Expression e.Tokens; } -*$DRIVE ClassicError +*$xDRIVE ClassicError ClassicError { t.ErrorList Classic t.Pos e.Message diff --git a/src/compiler/main.ref b/src/compiler/main.ref index 3d6fcd4d..ef658080 100644 --- a/src/compiler/main.ref +++ b/src/compiler/main.ref @@ -72,7 +72,7 @@ Main-SwValidCommandLine { = ; } -*$DRIVE ReportErrors, ReportWarnings, ReportMessages +*$xDRIVE ReportErrors, ReportWarnings, ReportMessages ReportErrors { t.CommandLineSource t.Config e.Errors @@ -348,7 +348,7 @@ RenameLocations-Aux { = e.NewLocations; } -*$DRIVE AddNumSuffix +*$xDRIVE AddNumSuffix AddNumSuffix { 0 e.Output = e.Output; @@ -946,7 +946,7 @@ DoCopyPrefix { } } -*$DRIVE LinkError +*$xDRIVE LinkError LinkError { t.Config e.Message