Написать свой ЯП на Pascal


#21

О да. А теперь выдели все .pas файлы и нажми по пкм в списке действий Компилировать. Два файла (0.pas (из-за второго) и LineParser_Interpreter1.pas) выдадут ошибку:

[0]Internal compiler error in module Compiler.Compile[0.pas] :'System.Collection
s.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре.
   в System.ThrowHelper.ThrowKeyNotFoundException()
   в System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   в PascalABCCompiler.PCU.PCUWriter.GetUnitToken(common_namespace_node ns)
   в PascalABCCompiler.PCU.PCUWriter.GetTypeReference(type_node tn, Byte& is_def
)
   в PascalABCCompiler.PCU.PCUWriter.WriteTypeReference(type_node type)
   в PascalABCCompiler.PCU.PCUWriter.WriteTypeList(List`1 types)
   в PascalABCCompiler.PCU.PCUWriter.WriteTypeReference(type_node type)
   в PascalABCCompiler.PCU.PCUWriter.VisitParameter(common_parameter p)
   в PascalABCCompiler.PCU.PCUWriter.VisitMethodDefinition(common_method_node me
th, Int32 offset)
   в PascalABCCompiler.PCU.PCUWriter.VisitMethodDefinitions(common_type_node ctn
)
   в PascalABCCompiler.PCU.PCUWriter.VisitTypeMemberDefinition(common_type_node
ctn)
   в PascalABCCompiler.PCU.PCUWriter.SaveSemanticTree(CompilationUnit Unit, Stri
ng TargetFileName, Boolean IncludeDebugInfo)
   в PascalABCCompiler.Compiler.SavePCU(CompilationUnit Unit, String TagertFileN
ame)'

Версия 3.4.2.2050. Надо поискать что её вызывает и в issue кинуть.


#22

А где это такое у вас есть? В Проводнике?

У меня проект компилируется - проблем нет


#23


#24

Хах, и правда… Из папки воспроизводится. Ну, ошибка где то в файле на 40 строк, это быстро найти. А пока - компилируйте из IDE, там всё работает, ибо это проблема с .pcu, как #1891.

P.S. #1933.


#25

И репозиторий я таки создал:

Там сразу код с временным фиксом #1933, если кому то очень хочется компилировать из папки))


#27

Прошу воздержаться от каких бы то ни было разборок


#28

Станислав Станиславович, к книжке (в первом издании) прилагался диск, на котором есть аж 5 вариантов компилятора (На Паскале, Си. Яве, Си#, Обероне). Если диска нет, то можно скачать здесь: https://telegra.ph/YAzyki-programmirovaniya-i-metody-translyacii-03-02

P.S. Какие-то странные нравы тут в форуме…


#29

Спасибо!

Да, знаю. Мы с этим боремся. Не всегда успешно правда.